配置檔適用性:級別 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 實例配置文件為 Amazon
EC2 實例提供憑證的方式。
您可以將 IAM 角色與 Kubernetes 服務帳戶關聯,而不是將 AWS 憑證創建並分發到容器中或使用 Amazon EC2 實例的角色。這樣,Pod 中容器的應用程式就可以使用
AWS SDK 或 AWS CLI 向授權的 AWS 服務發送 API 請求。
服務帳戶的 IAM 角色功能提供以下好處:
- 最小權限:透過使用服務帳戶的 IAM 角色功能,您不再需要為工作節點的 IAM 角色提供擴展權限,以便該節點上的 Pod 可以調用 AWS API。您可以將 IAM 權限範圍限制在服務帳戶上,只有使用該服務帳戶的 Pod 才能訪問這些權限。此功能還消除了對第三方解決方案(如 kiam 或 kube2iam)的需求。
- 憑證隔離: 容器只能檢索與其所屬服務帳戶相關聯的 IAM 角色的憑證。容器永遠無法訪問針對屬於其他 Pod 的另一個容器的憑證。
- 可審計性:透過 CloudTrail 提供訪問和事件日誌,以協助確保事後審計。