日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用集群的API Server審計(jì)功能實(shí)現(xiàn)集群安全運(yùn)維

更新時(shí)間:

審計(jì)(Auditing)產(chǎn)生于API Server內(nèi)部,用于記錄對Kubernetes API的請求以及請求結(jié)果。ACK集群提供API Server的審計(jì)日志,幫助集群管理人員排查“什么人在什么時(shí)間對什么資源做了什么操作”,可用于追溯集群操作歷史、排查集群故障等,降低集群安全運(yùn)維壓力。

使用說明

本文僅適用于ACK托管集群ACK專有集群、ACK Serverless集群。

如果您想在注冊集群中實(shí)現(xiàn)集群API Server審計(jì)功能,請參見啟用集群API Server審計(jì)功能。

計(jì)費(fèi)說明

您可以在費(fèi)用賬單的賬單總覽頁面,查看計(jì)費(fèi)明細(xì),包含審計(jì)日志的費(fèi)用信息。具體操作,請參見查看賬單。關(guān)于審計(jì)日志的計(jì)費(fèi)方式,請參見按使用功能計(jì)費(fèi)。

步驟一:啟用集群API Server審計(jì)功能

創(chuàng)建Kubernetes集群時(shí)會(huì)默認(rèn)選中使用日志服務(wù),開啟集群API Server審計(jì)功能。若您未開通,請參見下方步驟開通。

  1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。

  2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇安全管理 > 集群審計(jì)。

若您未開通集群日志或集群審計(jì)功能,請按照頁面提示手動(dòng)選擇SLS Project并開啟功能。

重要

請確保您賬號下日志服務(wù)資源沒有超出配額,否則會(huì)導(dǎo)致集群審計(jì)功能開啟失敗。

  • 可創(chuàng)建的日志Project數(shù)量配額。

  • 單個(gè)日志Project內(nèi)可創(chuàng)建的日志庫數(shù)量配額。

  • 單個(gè)日志Project內(nèi)可創(chuàng)建的儀表盤數(shù)量配額。

關(guān)于SLS配額的說明和調(diào)整方式,請參見調(diào)整資源配額

步驟二:查看審計(jì)報(bào)表

重要

請勿修改審計(jì)報(bào)表。如果您有自定義審計(jì)報(bào)表的需求,請?jiān)?a id="xref-0kw-f0a-7e9" class="" target="_blank">日志服務(wù)管理控制臺創(chuàng)建新的報(bào)表。

ACK集群內(nèi)置了4個(gè)審計(jì)日志報(bào)表,包括審計(jì)中心概覽、資源操作概覽、資源操作詳細(xì)列表以及Kubernetes CVE安全風(fēng)險(xiǎn)。您可以在集群審計(jì)頁面選擇審計(jì)事件的篩選維度(例如命名空間、RAM用戶等),并通過報(bào)表獲取以下內(nèi)容。

您也可以在獲取結(jié)果后,單擊目標(biāo)區(qū)域右上角的圖標(biāo)image.png,進(jìn)行更多操作,例如查看指定區(qū)域全屏圖、預(yù)覽置頂區(qū)域?qū)?yīng)的查詢語句等。

審計(jì)中心概覽

審計(jì)中心概覽展示ACK集群中的事件整體概覽以及重要事件(例如RAM用戶操作、公網(wǎng)訪問、命令執(zhí)行、刪除資源、訪問保密字典、Kubernetes CVE安全風(fēng)險(xiǎn)等)的詳細(xì)信息。

資源操作概覽

資源操作概覽展示Kubernetes集群中常見的計(jì)算資源、網(wǎng)絡(luò)資源以及存儲(chǔ)資源的操作統(tǒng)計(jì)信息。操作包括創(chuàng)建、更新、刪除、訪問。其中:

  • 計(jì)算資源:Deployment、StatefulSet、CronJob、DaemonSet、Job、Pod。

  • 網(wǎng)絡(luò)資源:Service、Ingress。

  • 存儲(chǔ)資源:ConfigMap、Secret、PersistentVolumeClaim。

  • 訪問控制資源:Role、ClusterRole、RoleBinding、ClusterRoleBinding

資源操作概覽

資源操作詳細(xì)列表

該報(bào)表用于展示Kubernetes集群中某類資源的詳細(xì)操作列表。您需要選擇或輸入指定的資源類型進(jìn)行實(shí)時(shí)查詢。該報(bào)表會(huì)顯示:資源操作各類事件的總數(shù)、Namespace分布、成功率、時(shí)序趨勢以及詳細(xì)操作列表等。

資源操作詳細(xì)列表

說明

若您需要查看Kubernetes中注冊的CRD(CustomResourceDefinition)資源或列表中沒有列舉的其他資源,可以手動(dòng)輸入資源名的復(fù)數(shù)形式。例如CRD資源為AliyunLogConfig,則輸入AliyunLogConfigs。

Kubernetes CVE安全風(fēng)險(xiǎn)

該報(bào)表用于展示當(dāng)前集群中可能包含的Kubernetes CVE安全風(fēng)險(xiǎn),您可以選擇或輸入子賬號ID(即RAM用戶賬號)進(jìn)行實(shí)時(shí)查詢。該報(bào)表會(huì)顯示當(dāng)前賬號下的Kubernetes CVE安全風(fēng)險(xiǎn)。關(guān)于CVE詳情和解決方案,請參見【CVE安全】漏洞修復(fù)公告。

(可選)步驟三:查看詳細(xì)日志記錄

如果您有自定義查詢、分析審計(jì)日志的需求,可以進(jìn)入日志服務(wù)管理控制臺查看詳細(xì)的日志記錄。

說明

ACK托管集群集群的API Server審計(jì)日志在日志服務(wù)中對應(yīng)的日志庫數(shù)據(jù)默認(rèn)保存時(shí)間為30天,ACK專有集群對應(yīng)的默認(rèn)保存時(shí)間為365天。如需修改日志的默認(rèn)保存時(shí)間,請參見管理Logstore。

  1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。

  2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇集群信息。

  3. 單擊基本信息頁簽,單擊日志服務(wù) Project對應(yīng)的Project ID,然后在Project列表區(qū)域,單擊名為audit-${clustered}的日志庫(Logstore)。

    在集群創(chuàng)建過程中,指定的日志Project中會(huì)自動(dòng)添加一個(gè)名為audit-${clustereid}的日志庫。

    重要

    審計(jì)日志的Logstore默認(rèn)已經(jīng)配置好索引。請勿修改索引,以免報(bào)表失效。

  4. 在輸入框中輸入查詢和分析語句,并配置查詢分析的時(shí)間范圍,例如最近15分鐘,然后單擊查詢/分析,查看查詢分析結(jié)果。

    常見的審計(jì)日志搜索方式如下:

    • 查詢某一RAM用戶的操作記錄:輸入RAM用戶ID,單擊查詢/分析。

    • 查詢某一資源的操作:輸入集群計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)、訪問控制資源的名稱,單擊查詢/分析。

    • 過濾掉系統(tǒng)組件的操作,輸入NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-manager,然后單擊查詢/分析。

    更多查詢、統(tǒng)計(jì)方式,請參見日志服務(wù)查詢分析方法。

(可選)步驟四:配置告警

若您需要對某些資源的操作進(jìn)行實(shí)時(shí)告警,可以通過日志服務(wù)的告警功能實(shí)現(xiàn)。告警方式支持短信、釘釘機(jī)器人、郵件、自定義Webhook和通知中心。更多信息,請參見快速設(shè)置日志告警。

示例1:對容器執(zhí)行命令時(shí)告警

某公司對于Kubernetes集群使用有嚴(yán)格限制,不允許用戶登錄容器或?qū)θ萜鲌?zhí)行命令。如果有用戶執(zhí)行命令時(shí),告警需要立即被發(fā)送,并在告警信息中包含用戶登錄的具體容器、執(zhí)行的命令、操作人、事件ID、時(shí)間、操作源IP等信息。

  • 查詢語句為:

    verb : create and objectRef.subresource:exec and stage:  ResponseStarted | SELECT auditID as "事件ID", date_format(from_unixtime(__time__), '%Y-%m-%d %T' ) as "操作時(shí)間",  regexp_extract("requestURI", '([^\?]*)/exec\?.*', 1)as "資源",  regexp_extract("requestURI", '\?(.*)', 1)as "命令" ,"responseStatus.code" as "狀態(tài)碼",
     CASE 
     WHEN "user.username" != 'kubernetes-admin' then "user.username"
     WHEN "user.username" = 'kubernetes-admin' and regexp_like("annotations.authorization.k8s.io/reason", 'RoleBinding') then regexp_extract("annotations.authorization.k8s.io/reason", ' to User "(\w+)"', 1)
     ELSE 'kubernetes-admin' END  
     as "操作賬號", 
    CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE  sourceIPs END
    as "源地址" order by "操作時(shí)間" desc  limit 10000
  • 條件表達(dá)式為:操作事件 =~ ".*"。

示例2:API Server公網(wǎng)訪問失敗告警

某集群開啟了公網(wǎng)訪問,為防止惡意攻擊,需要監(jiān)控公網(wǎng)訪問的次數(shù)以及失敗率。當(dāng)訪問次數(shù)達(dá)到一定閾值(10次)且失敗率高于一定閾值(50%)時(shí),告警需要立即被發(fā)送,并在告警信息中包含用戶的IP所屬區(qū)域、操作源IP、是否高危IP等信息。

  • 查詢語句為:

    * | select ip as "源地址", total as "訪問次數(shù)", round(rate * 100, 2) as "失敗率%", failCount as "非法訪問次數(shù)", CASE when security_check_ip(ip) = 1 then 'yes' else 'no' end  as "是否高危IP",  ip_to_country(ip) as "國家", ip_to_province(ip) as "省", ip_to_city(ip) as "市", ip_to_provider(ip) as "運(yùn)營商" from (select CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE  sourceIPs END
    as ip, count(1) as total,
    sum(CASE WHEN "responseStatus.code" < 400 then 0 
    ELSE 1 END) * 1.0 / count(1) as rate,
    count_if("responseStatus.code" = 403) as failCount
    from log  group by ip limit 10000) where ip_to_domain(ip) != 'intranet' and ip not LIKE '%,%' ORDER by "訪問次數(shù)" desc limit 10000
  • 條件表達(dá)式為:源地址 =~ ".*"

相關(guān)操作

更換日志Project

如果您想將集群API Server審計(jì)日志數(shù)據(jù)遷移至另一個(gè)日志Project中,您可以使用集群審計(jì)中的更換日志Project功能。

  1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。

  2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇安全管理 > 集群審計(jì)

  3. 在集群審計(jì)頁面右上角,單擊更換日志Project,將集群審計(jì)日志的數(shù)據(jù)遷移至另一個(gè)SLS Project中。

關(guān)閉集群API Server審計(jì)功能

如果您不再需要集群API Server的審計(jì)功能,可以通過以下方法關(guān)閉審計(jì)功能。

  1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群

  2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇安全管理 > 集群審計(jì)。

  3. 集群審計(jì)頁面右上角,單擊關(guān)閉集群審計(jì),關(guān)閉當(dāng)前集群的審計(jì)功能。

ACK專有集群使用第三方日志解決方案

ACK推薦您使用阿里云日志服務(wù)SLS記錄集群審計(jì)日志。但如果您需要使用第三方日志服務(wù),您可以在部署集群時(shí)不使用阿里云SLS,根據(jù)需要對接其他的日志解決方案,完成相關(guān)審計(jì)日志的采集和檢索。集群Master各節(jié)點(diǎn)的審計(jì)日志的源文件(文件為標(biāo)準(zhǔn)的JSON格式)可在/var/log/kubernetes/kubernetes.audit路徑下獲取。

參考信息ACK專有集群API Server審計(jì)配置介紹

創(chuàng)建ACK專有集群集群配置集群組件時(shí),控制臺會(huì)默認(rèn)選中使用日志服務(wù),開啟API Server審計(jì)功能,按審計(jì)策略采集事件數(shù)據(jù),并將事件數(shù)據(jù)寫入到后端。

審計(jì)策略

審計(jì)策略定義了審計(jì)功能的配置和請求的采集規(guī)則。不同審計(jì)級別(Audit Level)的事件日志采集規(guī)則不同。Audit Level包括以下幾種。

Audit Level

日志采集規(guī)則

None

符合規(guī)則的事件不予采集。

Metadata

采集請求的Metadata,例如用戶信息、時(shí)間戳等,但不采集請求體或返回體。

Request

采集請求的Metadata和請求體,但不采集返回體。不適用于非資源請求(Non-Resource Request)。

RequestResponse

采集請求的Metadata、請求體和返回體。不適用于非資源請求(Non-Resource Request)。

您可以使用--audit-policy-file命令行標(biāo)志(flag)將以下YAML示例文件保存為API Server的啟動(dòng)參數(shù)。登錄Master節(jié)點(diǎn)后,您可以查看審計(jì)配置策略文件的目錄,即/etc/kubernetes/audit-policy.yml。一個(gè)審計(jì)日志配置策略文件的YAML示例如下。

展開查看YAML示例文件

apiVersion: audit.k8s.io/v1 # 必填。v1.24及以上集群為audit.k8s.io/v1,v1.24以下集群為audit.k8s.io/v1beta1
kind: Policy
# RequestReceived階段(Stage)的請求無須生成審計(jì)事件。
omitStages:
  - "RequestReceived"
rules:
  # 以下類型的請求十分頻繁且潛在風(fēng)險(xiǎn)較低,建議設(shè)置為None,不做審計(jì)。
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # core
        resources: ["endpoints", "services"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"] # legacy kubelet identity
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # core
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["namespaces"]
  # 對只讀URL,例如/healthz*,/version*及/swagger*,設(shè)置為None,不做審計(jì)。
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # Event事件設(shè)置為None,不做審計(jì)。
  - level: None
    resources: 
      - group: "" # core
        resources: ["events"]
  # 對于可能包含敏感信息或二進(jìn)制文件的Secrets,ConfigMaps,TokenReview接口,設(shè)置為Metadata。
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # 請求可能會(huì)返回大量數(shù)據(jù),設(shè)置為Request,不采集返回體。
  - level: Request
    verbs: ["get", "list", "watch"]
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # 已知的Kunernetes API默認(rèn)設(shè)置為RequestResponse,返回請求體和響應(yīng)體。
  - level: RequestResponse
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # 其余請求都默認(rèn)設(shè)置為Metadata。
  - level: Metadata
    說明

    在收到請求后,日志不立即開始記錄,等待返回體Header發(fā)送后才開始記錄。

    對于大量冗余的kube-proxy watch請求、kubelet和system:nodes對節(jié)點(diǎn)的Get請求、kube組件在kube-system下對于endpoint的操作、以及API Server對Namespaces的Get請求等,系統(tǒng)不進(jìn)行審計(jì)。

    對于authenticationrbac、certificates、autoscaling、storage等敏感接口,系統(tǒng)根據(jù)讀寫記錄相應(yīng)的請求體和返回體。

審計(jì)后端

審計(jì)事件采集后,會(huì)被存儲(chǔ)到Log后端日志文件系統(tǒng),日志文件為標(biāo)準(zhǔn)的JSON格式。您可以配置并使用如下flag作為API Server的啟動(dòng)參數(shù)。

說明

登錄到Master節(jié)點(diǎn)后,可通過/etc/kubernetes/manifests/kube-apiserver.yaml查看API Server的配置文件。

配置參數(shù)

說明

--audit-log-maxbackup

指定審計(jì)日志可分片存儲(chǔ)的最大文件數(shù)量,為10個(gè)。

--audit-log-maxsize

指定單個(gè)審計(jì)日志的最大內(nèi)存容量,為100 MB。

--audit-log-path

指定審計(jì)日志的輸出路徑,為/var/log/kubernetes/kubernetes.audit。

--audit-log-maxage

指定審計(jì)日志最長的保存周期,為7天。

--audit-policy-file

配置審計(jì)日志策略的文件路徑,為/etc/kubernetes/audit-policy.yml。

相關(guān)文檔