憑證存取:在 Kubernetes 命名空間存取密鑰

本文說明 Security Command Center 中的威脅發現項目類型。威脅偵測工具在雲端資源中偵測到潛在威脅時,就會產生威脅發現項目。如需可用威脅發現項目的完整清單,請參閱「威脅發現項目索引」。

總覽

Pod 的 defaultKubernetes 服務帳戶用於存取叢集中的 Secret 物件。除非您使用 Role 物件或 ClusterRole 物件明確授予存取權,否則 defaultKubernetes 服務帳戶不應有權存取 Secret 物件。

Event Threat Detection 是這項發現項目的來源。

下列應變計畫可能適用於這項發現,但也可能影響作業。 請仔細評估調查期間收集到的資訊,找出解決問題的最佳方式。

回應方式

如要回應這項發現項目,請按照下列步驟操作:

  1. 找出存取權範圍:

    • 在發現項目 JSON 中,記下 finding.resourceName 的值。這表示發生存取行為的 Kubernetes 命名空間或資源。
    • 請記下 resource.sourceProperties.affectedResources.gcpResourceName 的值。這是所存取 Kubernetes 密鑰的完整資源名稱。
  2. 調查 Cloud 稽核記錄:

    • 前往 Google Cloud 控制台的「Logs Explorer」。
    • 篩選記錄,找出對 Kubernetes 密鑰執行的特定動作。使用下列篩選條件:

      resource.type="k8s_cluster"
      protoPayload.methodName=~"io\.k8s\.core\.v1\.secrets\..*"
      
    • 在發現結果產生前後的時間,尋找具有 protoPayload.methodName 值的項目,例如 io.k8s.core.v1.secrets.getio.k8s.core.v1.secrets.list。這些記錄可提供更多資訊,瞭解誰或什麼存取了密碼,以及執行了哪些動作。

    • 使用下列記錄篩選器,檢查角色型存取權控管 (RBAC) 的變更 (Pod 必須進行這項變更,才能存取密鑰):

      resource.type="k8s_cluster"
      protoPayload.methodName:"io\.k8s\.authorization\.rbac\.v1\..*"
      

      具體來說,請尋找含有 methodName 的記錄,其中包含 io.k8s.authorization.rbac.v1.roles.create/updateio.k8s.authorization.rbac.v1.rolebindings.create/update

  3. 檢查 Google Kubernetes Engine RBAC 設定:

    • 前往 Google Cloud 控制台的「Kubernetes Engine」部分。
    • 前往叢集並選取「物件瀏覽器」
    • 展開 rbac.authorization.k8s.io 群組。
    • 檢查 finding.resourceName 中所識別命名空間內的 RoleRoleBinding 物件 (以及 ClusterRole / ClusterRoleBinding,如適用)。
    • 找出在 secrets 上授予 getlist 權限的角色。
    • 找出將命名空間中的 default 服務帳戶 (或其他服務帳戶) 與授予密鑰存取權的角色建立關聯的 RoleBinding
  4. 修正權限要求過多的問題: