

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 叢集存取管理
<a name="cluster-access-management"></a>

有效的存取管理對於維護 Amazon EKS 叢集的安全性和完整性至關重要。本指南探索 EKS 存取管理的各種選項，重點是使用 AWS IAM Identity Center （先前稱為 AWS SSO)。我們將比較不同的方法、討論其權衡，並強調已知的限制和考量。

## EKS 存取管理選項
<a name="_eks_access_management_options"></a>

**注意**  
ConfigMap 型存取管理 (aws-auth ConfigMap) 已被叢集存取管理 (CAM) API 取代。對於新的 EKS 叢集，實作 CAM API 來管理叢集存取。對於使用 aws-auth ConfigMap 的現有叢集，請使用 CAM API 遷移至 。

## 選項 1：具有叢集存取管理 (CAM) API 的 AWS IAM Identity Center
<a name="_option_1_aws_iam_identity_center_with_cluster_access_management_cam_api"></a>
+ 集中式使用者和許可管理
+ 與現有身分提供者整合 （例如 Microsoft AD、Okta、PingId 等）
+ CAM API 使用存取項目將 AWS IAM 主體 （使用者或角色） 連結至 EKS 叢集。這些項目適用於 IAM Identity Center 的受管身分，可讓管理員控制 Identity Center 中定義之使用者和群組的叢集存取。

### EKS 叢集身分驗證流程：
<a name="_eks_cluster_authentication_flow"></a>

![EKS 叢集身分驗證流程](http://docs.aws.amazon.com/zh_tw/eks/latest/best-practices/images/eks-auth-flow.jpg)


1. 委託人 （人類使用者） 或自動化程序透過 AWS IAM 透過提供適當的 AWS 帳戶許可進行身分驗證。在此步驟中，它們會映射到適當的 AWS IAM 主體 （角色或使用者）。

1. 接著，EKS 存取項目會定義適當的存取政策，僅包含 Kubernetes 許可，將此 IAM 主體映射至 Kubernetes RBAC 主體 （使用者或群組）。

1. 當 Kubernetes 最終使用者嘗試存取叢集時，其身分驗證請求會由 aws-iam-authenticator 或 AWS EKS CLI 處理，並根據 kubeconfig 檔案中的叢集內容進行驗證。

1. 最後，EKS 授權方會驗證與已驗證使用者存取項目相關聯的許可，並相應地授予或拒絕存取。
   + API 使用 Amazon EKS 特定的存取政策來定義每個存取項目的授權層級。這些政策可以映射到 IAM Identity Center 中設定的角色和許可，確保跨 AWS 服務和 EKS 叢集的一致存取控制。

### ConfigMap 型存取管理的優勢：
<a name="_benefits_over_configmap_based_access_management"></a>

1.  **降低組態錯誤的風險**：直接 API 型管理可消除與手動 ConfigMap 編輯相關的常見錯誤。這有助於防止意外刪除或語法錯誤，可能會將使用者封鎖在叢集之外。

1.  **增強型最低權限原則**：從叢集建立者身分中移除叢集管理員許可的需求，並允許更精細且適當的許可指派。您可以選擇為打破玻璃的使用案例新增此許可。

1.  **增強型安全模型**：在套用存取項目之前，提供存取項目的內建驗證。此外， 提供更緊密的 AWS IAM 整合以進行身分驗證。

1.  **簡化操作**：提供更直覺的方式，透過 AWS 原生工具管理許可。

### 最佳實務：
<a name="_best_practices"></a>

1. 使用 AWS Organizations 管理多個帳戶並套用服務控制政策 SCPs)。

1. 為不同的 EKS 角色 （例如，管理員、開發人員、唯讀） 建立特定許可集，以實作最低權限原則。

1. 利用屬性型存取控制 (ABAC)，根據使用者屬性將許可動態指派給 Pod。

1. 定期稽核和檢閱存取許可。

### 考量/限制：
<a name="_considerationslimitations"></a>

1. Identity Center 產生的角色 ARNs 具有隨機尾碼，使其在靜態組態中使用具有挑戰性。

1. 在 Kubernetes 資源層級對精細許可的有限支援。自訂 Kubernetes RBAC 角色需要額外的組態。除了 Kubernetes 原生 RBAC 之外，請考慮在 EKS 叢集中使用 Kyverno 進行進階許可管理。

## 選項 2：映射至 Kubernetes 群組的 AWS IAM 使用者/角色
<a name="_option_2_aws_iam_usersroles_mapped_to_kubernetes_groups"></a>

### 優點：
<a name="_pros"></a>

1. 精細控制 IAM 許可。

1. 可預測和靜態角色 ARNs

### 缺點：
<a name="_cons"></a>

1. 使用者帳戶的管理開銷增加

1. 缺乏集中式身分管理

1. IAM 實體擴散的可能性

### 最佳實務：
<a name="_best_practices_2"></a>

1. 使用 IAM 角色而非 IAM 使用者以提高安全性和管理性

1. 為角色實作命名慣例，以確保一致性和易於管理

1. 利用 IAM 政策條件，根據標籤或其他屬性限制存取。

1. 定期輪換存取金鑰並檢閱許可。

### 考量/限制：
<a name="_considerationslimitations_2"></a>

1. 管理大量使用者或角色時的可擴展性問題

1. 沒有內建的單一登入功能

## 選項 3：OIDC 供應商
<a name="_option_3_oidc_providers"></a>

### 優點：
<a name="_pros_2"></a>

1. 與現有身分管理系統整合

1. 降低使用者帳戶的管理開銷

### 缺點：
<a name="_cons_2"></a>

1. 其他組態複雜性

1. 身分驗證期間延遲增加的可能性

1. 外部身分提供者的相依性

### 最佳實務：
<a name="_best_practices_3"></a>

1. 仔細設定 OIDC 提供者，以確保安全字符驗證。

1. 使用短期字符並實作字符重新整理機制。

1. 定期稽核和更新 OIDC 組態。

檢閱本指南，了解[整合外部單一登入供應商與 Amazon EKS ](https://aws.amazon.com/solutions/guidance/integrating-external-single-sign-on-providers-with-amazon-eks/)的參考實作 

### 考量/限制：
<a name="_considerationslimitations_3"></a>

1. 相較於 IAM，與 AWS 服務的原生整合有限。

1. OIDC 供應商的發行者 URL 必須可公開存取，EKS 才能探索簽署金鑰。

## 工作負載的 AWS EKS Pod 身分與 IRSA
<a name="_aws_eks_pod_identity_vs_irsa_for_workloads"></a>

Amazon EKS 提供兩種方式將 AWS IAM 許可授予在 Amazon EKS 叢集中執行的工作負載：服務帳戶的 IAM 角色 (IRSA) 和 EKS Pod 身分。

雖然 IRSA 和 EKS Pod 身分都提供最低權限存取、憑證隔離和可稽核性的優點，但 EKS Pod Identity 是將許可授予工作負載的建議方法。

如需 EKS Pod 身分和登入資料的詳細指引，請參閱安全最佳實務中的[身分和登入資料一節](https://docs.aws.amazon.com/eks/latest/best-practices/identity-and-access-management.html#_identities_and_credentials_for_eks_pods)。

## 建議
<a name="_recommendation"></a>

### 結合 IAM Identity Center 與 CAM API
<a name="_combine_iam_identity_center_with_cam_api"></a>
+  **簡化管理**：透過使用叢集存取管理 API 搭配 IAM Identity Center，管理員可以與其他 AWS 服務一起管理 EKS 叢集存取，減少在不同介面之間切換或手動編輯 ConfigMaps 的需求。
+ 使用存取項目，從叢集外部管理 IAM 主體的 Kubernetes 許可。您可以使用 EKS API、AWS 命令列界面、AWS SDKs來新增和管理對叢集的存取。 AWS CloudFormation 這意味著您可以使用建立叢集時使用的工具來管理使用者。
+ 精細 Kubernetes 許可可以透過存取項目和存取政策，與與 SSO 身分相關聯的 IAM 主體映射 Kubernetes 使用者或群組套用。
+ 若要開始使用，請依照[變更身分驗證模式來使用存取項目](https://docs.aws.amazon.com/eks/latest/userguide/setting-up-access-entries.html#access-entries-setup-console)，然後[遷移現有的 aws-auth ConfigMap 項目來存取項目](https://docs.aws.amazon.com/eks/latest/userguide/migrating-access-entries.html)。