檢視次數:
設定檔適用性:等級 1
Kubernetes 工作負載不應使用叢集節點服務帳戶來驗證 Amazon EKS API。每個需要使用 AWS IAM 驗證其他 AWS 服務的 Kubernetes 工作負載應配置專用的服務帳戶。
在 Amazon EKS 上運行的 Kubernetes 工作負載對 AWS API 進行身份驗證的手動方法包括將服務帳戶密鑰存儲為 Kubernetes 機密(這會引入手動密鑰輪換和密鑰洩露的潛在風險),或者使用基礎節點的 IAM 服務帳戶,這在多租戶節點上違反了最小權限原則,當一個 pod 需要訪問某個服務時,節點上使用該服務帳戶的其他 pod 卻不需要。

稽核

對於叢集中的每個命名空間,檢查分配給預設服務帳戶的權限,並確保除了預設值外,沒有其他角色或叢集角色與其綁定。
另外,請確保每個預設服務帳戶都設置了automountServiceAccountToken: false

補救

在 Amazon EKS 叢集上使用服務帳戶的 IAM 角色,您可以將 IAM 角色與 Kubernetes 服務帳戶關聯。然後,該服務帳戶可以為使用該服務帳戶的任何 Pod 中的容器提供 AWS 權限。透過此功能,您不再需要為工作節點的 IAM 角色提供擴展權限,以便該節點上的 Pod 可以調用 AWS API。
應用程式必須使用 AWS 憑證簽署其 AWS API 請求。此功能提供了一種管理應用程式憑證的策略,類似於 Amazon EC2 Instance 配置檔案為 Amazon EC2 Instance 提供憑證的方式。您可以將 IAM 角色與 Kubernetes 服務帳戶關聯,而不是創建和分發您的 AWS 憑證給容器或使用 Amazon EC2 Instance 的角色。Pod 容器中的應用程式可以使用 AWS SDK 或 AWS CLI 向授權的 AWS 服務發出 API 請求。
服務帳戶的 IAM 角色功能提供以下優點:
  • 最低權限:透過使用 IAM 角色的服務帳戶功能,您不再需要為工作節點 IAM 角色提供擴展的權限,以便該節點上的 pod 可以調用 AWS API。您可以將 IAM 權限範圍限定於服務帳戶,只有使用該服務帳戶的 pod 才能訪問這些權限。此功能也消除了對第三方解決方案如 kiam 或 kube2iam 的需求。
  • 憑證隔離:容器只能獲取與其所屬服務帳戶相關聯的 IAM 角色的憑證。容器永遠無法存取屬於其他 Pod 的其他容器所需的憑證。
  • 可審核性:透過 CloudTrail 提供存取和事件記錄,以協助確保事後審核。
要開始使用,請參閱此處的清單文字,啟用叢集上的服務帳戶的 IAM 角色。
如需使用 eksctl 的端到端操作指南,請參閱操作指南:更新 DaemonSet 以使用 IAM 服務帳戶。