全部產品
Search
文件中心

Security Center:接入K8s自建叢集

更新時間:Jan 23, 2026

Security Center支援接入K8s(Kubernetes)自建叢集進行統一管理和安全風險檢測。本文介紹如何接入K8s自建叢集。

版本限制

  • 訂用帳戶服務旗艦版(若目前的版本不支援,請進行升級)。

    說明

    伺服器的防護版本必須設定為當前所購買的版本,具體操作請參見綁定伺服器防護版本

  • 隨用隨付服務:已開通主機及容器安全隨用隨付(若未開通,請前往購買)。

    說明

    伺服器需設定防護等級為主機及容器全面防護,具體操作請參見綁定伺服器防護等級

使用限制

支援接入的地區限制如下:

  • 自建K8s叢集網路類型為VPC時,僅支援接入華東1(杭州)、華北2(北京)、華東2(上海)、華南1(深圳)和中國香港地區。

  • 自建K8s叢集網路類型為公網時,無地區限制。

前提條件

  • 已在伺服器上搭建K8s叢集。

  • 已安裝Docker。

  • 如需使用叢集暴露分析功能,根據您的叢集部署方式和存取控制策略配置情況,還需完成下述網路設定。更多資訊,請參見叢集暴露分析

    • 如果您的K8s叢集是通過混合雲的方式部署,且公網不可直接存取,那麼您需要先配置流量轉寄規則,確保網路連通後再進行叢集接入。

      配置流量轉寄規則

      指定一台ECS伺服器,將其訪問流量轉寄到第三方K8s叢集API Server所在的IDC伺服器上。

      例如:將執行轉寄任務的ECS伺服器10.0.XX.XX中A連接埠的流量,轉寄至第三方K8s叢集API Server所在的IDC伺服器192.168.XX.XX的B連接埠。

      • CentOS 7命令

        • 使用firewallcmd:

          firewall-cmd --permanent --add-forward-port=port=<A連接埠>:proto=tcp:toaddr=<192.168.XX.XX>:toport=<B連接埠>
        • 使用iptables:

        • # 開啟連接埠轉寄
          echo "1" 	> /proc/sys/net/ipv4/ip_forward
          
          # 設定連接埠轉寄
          iptables -t nat -A PREROUTING -p tcp --dport <A連接埠> -j DNAT --to-destination <192.168.XX.XX>:<B連接埠>
      • Windows命令

        netsh interface portproxy add v4tov4 listenport=<連接埠A> listenaddress=* connectaddress=<192.168.XX.XX	> connectport=<連接埠B> protocol=tcp
    • 如果您的叢集設定了存取控制策略,請確保已將容器所在地區的IP位址集區加入存取控制的白名單。

      需要加白的IP位址集區

      地區

      公網IP

      私網IP

      華東1(杭州)

      47.96.166.214

      100.104.12.64/26

      華東2(上海)

      139.224.15.48、101.132.180.26、47.100.18.171、47.100.0.176、139.224.8.64、101.132.70.106、101.132.156.228、106.15.36.12、139.196.168.125、47.101.178.223、47.101.220.176

      100.104.43.0/26

      華北1(青島)

      47.104.111.68

      100.104.87.192/26

      華北2(北京)

      47.95.202.245

      100.104.114.192/26

      華北3(張家口)

      39.99.229.195

      100.104.187.64/26

      華北5(呼和浩特)

      39.104.147.68

      100.104.36.0/26

      華南1(深圳)

      120.78.64.225

      100.104.250.64/26

      華南3(廣州)

      8.134.118.184

      100.104.111.0/26

      中國香港

      8.218.59.176

      100.104.130.128/26

      日本(東京)

      47.74.24.20

      100.104.69.0/26

      新加坡

      8.219.240.137

      100.104.67.64/26

      美國(矽谷)

      47.254.39.224

      100.104.145.64/26

      美國(維吉尼亞)

      47.252.4.238

      100.104.36.0/26

      德國(法蘭克福)

      47.254.158.71

      172.16.0.0/20

      英國(倫敦)

      8.208.14.12

      172.16.0.0/20

      印尼(雅加達)

      149.129.238.99

      100.104.193.128/26

接入K8s自建叢集

  1. 登入Security Center控制台

  2. 在左側導覽列,選擇資產 > 容器資產。在控制台左上方,選擇需防護資產所在的地區:中國內地非中國內地

  3. 叢集頁簽,單擊自建集群接入

  4. 自建集群管理面板,單擊自建集群接入,配置要接入的K8s自建叢集的資訊,然後單擊產生命令

    配置項

    說明

    集群名称

    輸入自建K8s叢集的名稱,例如:text-001。

    到期時間

    選擇自建K8s叢集接入命令的到期時間。

    分組

    選擇叢集接入後的分組(即選擇叢集所在伺服器的分組)。

    服務商

    選擇叢集所在伺服器的服務商。

  5. (可選)在開啟日誌地區,選擇是否開啟K8s日誌威脅檢測。

    開啟K8s日誌威脅檢測,Security Center可以擷取更多的審計日誌以進行更全面的安全風險檢測。開啟威脅檢測前,您需要在K8s叢集中安裝Logtail組件並完成審計相關配置。具體操作,請參見開啟日誌威脅檢測

  6. 登入叢集所在伺服器,建立text-001.yaml檔案,將產生的命令拷貝到該檔案中儲存,然後執行kubectl apply -f text-001.yaml命令,完成叢集接入。

    步驟4中產生的命令預設不會接入Master和汙點節點。如果您需要接入Master和汙點節點,請參考下述說明修改YAML檔案配置。

    接入master和汙點節點說明

    如果需要將Master節點或汙點節點作為叢集接入Security Center,需要在DaemonSet的Pod模板中配置容忍度,允許Pod被調度到Master節點或汙點節點上。

    • 對於Master節點,在YAML檔案中的spec>template>spec下配置以下Toleration,允許將此DaemonSet的Pod調度到帶有node-role.kubernetes.io/master:NoSchedule汙點的Master節點上,實現將Master節點作為叢集接入Security Center。

      spec:
        template:
          spec:
            tolerations:
            - key: node-role.kubernetes.io/master
              operator: Exists
              effect: NoSchedule
    • 對於添加汙點的節點,請參考以上Master節點的Toleration配置,將DaemonSet的Pod調度到該汙點節點上,將該汙點節點作為叢集接入Security Center。

    說明

    上述text-001.yaml、kubectl apply -f text-001.yaml中的text-001為集群名称的樣本。實際操作時,請使用實際設定的集群名称替換text-001。

完成K8s自建叢集接入後,您可以在叢集頁簽的叢集列表中查看已接入叢集的資訊。

開啟日誌威脅檢測

K8s叢集版本為1.16及以上時,您可以通過開啟K8s日誌威脅檢測為自建叢集提供更全面的安全風險檢測,例如檢測高危操作、攻擊行為等。

一、安裝Logtail組件

具體操作,請參見安裝Logtail組件(自建Kubernetes叢集)安裝Logtail章節。

二、開啟叢集審計功能

以下步驟供您參考。更多資訊,請參見啟用叢集API Server審計功能

  1. 已建立註冊叢集,並將自建Kubernetes叢集接入註冊叢集。具體操作,請參見建立ACK One註冊叢集

  2. 在Master節點上配置審計配置策略檔案。

    依次登入所有Master節點,在審計配置策略檔案的路徑/etc/kubernetes/audit-policy.yaml,請根據以下內容修改審計配置策略:

    說明

    若您的叢集版本低於1.24,apiVersion請使用audit.k8s.io/v1beta1,若叢集版本大於等於1.24,則使用audit.k8s.io/v1。更多詳細資料,請參見Kubernetes 1.24版本說明

    apiVersion: audit.k8s.io/v1beta1 
    kind: Policy
    # Don't generate audit events for all requests in RequestReceived stage.
    omitStages:
      - "RequestReceived"
    rules:
      # The following requests were manually identified as high-volume and low-risk,
      # so drop them.
      - 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"]
      # Don't log these read-only URLs.
      - level: None
        nonResourceURLs:
          - /healthz*
          - /version
          - /swagger*
      # Don't log events requests.
      - level: None
        resources:
          - group: "" # core
            resources: ["events"]
      # Secrets, ConfigMaps, and TokenReviews can contain sensitive & binary data,
      # so only log at the Metadata level.
      - level: Metadata
        resources:
          - group: "" # core
            resources: ["secrets", "configmaps"]
          - group: authentication.k8s.io
            resources: ["tokenreviews"]
      # Get repsonses can be large; skip them.
      - 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"
      # Default level for known APIs
      - 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"
      # Default level for all other requests.
      - level: Metadata
  3. 在Master節點上配置Kube API Server檔案。

    依次登入所有Master節點機器,在Kube API Server檔案的路徑/etc/kubernetes/manifests/kube-apiserver.yaml,完成以下相關配置:

    • 根據以下樣本添加command參數--audit-log-*

      ...
      spec:
        containers:
        - command:
          - kube-apiserver
          - --audit-log-maxbackup=10
          - --audit-log-maxsize=100
          - --audit-log-path=/var/log/kubernetes/kubernetes.audit
          - --audit-log-maxage=30
          - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
          ...
    • 根據以下樣本添加env參數aliyun_logs_audit-*

      您需要將以下樣本中的{cluster_id}替換為您叢集的Cluster ID。您可以登入Security Center控制台,在容器資產頁面擷取叢集的Cluster ID,具體位置請參見下圖。擷取叢集Cluster-ID

      ...
      spec:
        containers:
        - command:
          - kube-apiserver
          - --audit-log-maxbackup=10
          - --audit-log-maxsize=100
          - --audit-log-path=/var/log/kubernetes/kubernetes.audit
          - --audit-log-maxage=30
          - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
          ...
          ...
          env:
          - name: aliyun_logs_audit-${cluster_id}
            value: /var/log/kubernetes/kubernetes.audit
          - name: aliyun_logs_audit-${cluster_id}_tags
            value: audit=apiserver
          - name: aliyun_logs_audit-${cluster_id}_product
            value: k8s-audit
          - name: aliyun_logs_audit-${cluster_id}_jsonfile
            value: "true"
          image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1
    • 根據以下樣本掛載/etc/kubernetes/audit-policy.yaml到API Server Pod。

      ...
      spec:
        containers:
        - command:
          - kube-apiserver
          - --audit-log-maxbackup=10
          - --audit-log-maxsize=100
          - --audit-log-path=/var/log/kubernetes/kubernetes.audit
          - --audit-log-maxage=30
          - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
          ...
          ...
          env:
          - name: aliyun_logs_audit-${cluster_id}
            value: /var/log/kubernetes/kubernetes.audit
          - name: aliyun_logs_audit-${cluster_id}_tags
            value: audit=apiserver
          - name: aliyun_logs_audit-${cluster_id}_product
            value: k8s-audit
          - name: aliyun_logs_audit-${cluster_id}_jsonfile
            value: "true"
          image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1
          ...
          ...
          volumeMounts:
          - mountPath: /var/log/kubernetes
            name: k8s-audit
          - mountPath: /etc/kubernetes/audit-policy.yaml
            name: audit-policy
            readOnly: true
          ...
          ...
        volumes:
        - hostPath:
            path: /var/log/kubernetes
            type: DirectoryOrCreate
          name: k8s-audit
        - hostPath:
            path: /etc/kubernetes/audit-policy.yaml
            type: FileOrCreate
          name: audit-policy
        ...

三、驗證日誌採集結果

  1. 登入Log Service控制台

  2. 單擊目標Project名稱。

  3. 查看相關日誌是否已採集到目標Project下的日誌庫(Logstore)。

四、開啟威脅檢測

  1. 登入Security Center控制台

  2. 在左側導覽列,選擇資產 > 容器資產。在控制台左上方,選擇需防護資產所在的地區:中國內地非中國內地

  3. 叢集頁簽,單擊自建集群接入

  4. 找到需要開啟K8s日誌威脅檢測的自建叢集,在操作列單擊編輯

  5. 開啟日誌頁簽,選中開啟K8S日誌上報進行威脅檢測,配置審計日誌資訊,然後單擊儲存

    • 審計日誌Region:選擇審計日誌的儲存地區。

    • 審計日誌Project:輸入一、安裝Logtail組件中建立的Project名稱。例如:如k8s-log-custom-sd89ehdq。

    • 審計日誌LogStore:輸入一、安裝Logtail組件中自動建立的LogStore名稱。例如:audit-027b007a7dd11967a9f7e2449d8dc497。