本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
叢集存取管理
有效的存取管理對於維護 Amazon EKS 叢集的安全性和完整性至關重要。本指南探索 EKS 存取管理的各種選項,重點是使用 AWS IAM Identity Center (先前稱為 AWS SSO)。我們將比較不同的方法、討論其權衡,並強調已知的限制和考量。
EKS 存取管理選項
注意
ConfigMap 型存取管理 (aws-auth ConfigMap) 已被叢集存取管理 (CAM) API 取代。對於新的 EKS 叢集,實作 CAM API 來管理叢集存取。對於使用 aws-auth ConfigMap 的現有叢集,請使用 CAM API 遷移至 。
選項 1:具有叢集存取管理 (CAM) API 的 AWS IAM Identity Center
-
集中式使用者和許可管理
-
與現有身分提供者整合 (例如 Microsoft AD、Okta、PingId 等)
-
CAM API 使用存取項目將 AWS IAM 主體 (使用者或角色) 連結至 EKS 叢集。這些項目適用於 IAM Identity Center 的受管身分,可讓管理員控制 Identity Center 中定義之使用者和群組的叢集存取。
EKS 叢集身分驗證流程:

-
Principals(人類使用者) 或自動化程序會透過 AWS IAM 提供適當的 AWS 帳戶許可進行身分驗證。在此步驟中,它們會映射到適當的 AWS IAM 主體 (角色或使用者)。
-
接著,EKS 存取項目會定義適當的存取政策,僅包含 Kubernetes 許可,將此 IAM 主體映射至 Kubernetes RBAC 主體 (使用者或群組)。
-
當 Kubernetes 最終使用者嘗試存取叢集時,其身分驗證請求會由 aws-iam-authenticator 或 AWS EKS CLI 處理,並根據 kubeconfig 檔案中的叢集內容進行驗證。
-
最後,EKS 授權方會驗證與已驗證使用者存取項目相關聯的許可,並相應地授予或拒絕存取。
-
API 使用 Amazon EKS 特定的存取政策來定義每個存取項目的授權層級。這些政策可以映射到 IAM Identity Center 中設定的角色和許可,確保跨 AWS 服務和 EKS 叢集的一致存取控制。
-
ConfigMap 型存取管理的優勢:
-
降低組態錯誤的風險:直接 API 型管理可消除與手動 ConfigMap 編輯相關的常見錯誤。這有助於防止意外刪除或語法錯誤,可能會將使用者封鎖在叢集之外。
-
增強型最低權限原則:從叢集建立者身分中移除叢集管理員許可的需求,並允許更精細且適當的許可指派。您可以選擇為打破玻璃的使用案例新增此許可。
-
增強型安全模型:在套用存取項目之前,提供存取項目的內建驗證。此外, 提供更緊密的 AWS IAM 整合以進行身分驗證。
-
簡化操作:透過 AWS 原生工具提供更直覺的方式來管理許可。
最佳實務:
-
使用 AWS Organizations 管理多個帳戶並套用服務控制政策 SCPs)。
-
為不同的 EKS 角色 (例如,管理員、開發人員、唯讀) 建立特定許可集,以實作最低權限原則。
-
利用屬性型存取控制 (ABAC),根據使用者屬性將許可動態指派給 Pod。
-
定期稽核和檢閱存取許可。
考量/限制:
-
Identity Center 產生的角色 ARNs 具有隨機尾碼,這使得它們在靜態組態中使用具有挑戰性。
-
在 Kubernetes 資源層級對精細許可的有限支援。自訂 Kubernetes RBAC 角色需要額外的組態。除了 Kubernetes 原生 RBAC 之外,請考慮在 EKS 叢集中使用 Kyverno 進行進階許可管理。
選項 2:映射至 Kubernetes 群組的 AWS IAM 使用者/角色
專業人員:
-
精細控制 IAM 許可。
-
可預測和靜態角色 ARNs
Cons:
-
增加使用者帳戶的管理開銷
-
缺乏集中式身分管理
-
IAM 實體擴散的可能性
最佳實務:
-
使用 IAM 角色而非 IAM 使用者以提高安全性和管理性
-
為角色實作命名慣例,以確保一致性和易於管理
-
利用 IAM 政策條件,根據標籤或其他屬性限制存取。
-
定期輪換存取金鑰並檢閱許可。
考量/限制:
-
管理大量使用者或角色時的可擴展性問題
-
沒有內建的單一登入功能
選項 3:OIDC 供應商
專業人員:
-
與現有身分管理系統整合
-
降低使用者帳戶的管理開銷
Cons:
-
額外的組態複雜性
-
身分驗證期間延遲增加的可能性
-
外部身分提供者的相依性
最佳實務:
-
仔細設定 OIDC 提供者,以確保安全字符驗證。
-
使用短期權杖並實作權杖重新整理機制。
-
定期稽核和更新 OIDC 組態。
檢閱本指南,了解整合外部單一登入提供者與 Amazon EKS
考量/限制:
-
相較於 IAM,與 AWS 服務的原生整合有限。
-
OIDC 提供者的發行者 URL 必須可公開存取,EKS 才能探索簽署金鑰。
工作負載的 AWS EKS Pod 身分與 IRSA
Amazon EKS 提供兩種方式將 AWS IAM 許可授予在 Amazon EKS 叢集中執行的工作負載:服務帳戶的 IAM 角色 (IRSA) 和 EKS Pod 身分。
雖然 IRSA 和 EKS Pod 身分都提供最低權限存取、憑證隔離和可稽核性的優點,但 EKS Pod Identity 是將許可授予工作負載的建議方法。
如需 EKS Pod 身分和登入資料的詳細指引,請參閱安全最佳實務中的身分和登入資料一節。
建議
結合 IAM Identity Center 與 CAM API
-
簡化管理:透過使用叢集存取管理 API 搭配 IAM Identity Center,管理員可以與其他 AWS 服務一起管理 EKS 叢集存取,減少在不同介面之間切換或手動編輯 ConfigMaps 的需求。
-
使用存取項目從叢集外部管理 IAM 主體的 Kubernetes 許可。您可以使用 EKS API、AWS 命令列界面、AWS SDKs來新增和管理對叢集的存取。 AWS CloudFormation 這意味著您可以使用建立叢集時使用的工具來管理使用者。
-
精細 Kubernetes 許可可以透過存取項目和存取政策,與與 SSO 身分相關聯的 IAM 主體映射 Kubernetes 使用者或群組套用。
-
若要開始使用,請依照變更身分驗證模式來使用存取項目,然後遷移現有的 aws-auth ConfigMap 項目來存取項目。