

 **協助改進此頁面** 

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

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

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

# 授予 IAM 使用者和角色對 Kubernetes APIs存取權
<a name="grant-k8s-access"></a>

您的叢集具有 Kubernetes API 端點。Kubectl 會使用此 API。您可以使用兩種類型的身分來驗證此 API：
+  ** AWS Identity and Access Management (IAM) *主體* （角色或使用者）** – 此類型需要對 IAM 進行身分驗證。使用者可以 AWS 使用透過身分來源提供的憑證，以 [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) [使用者身分或使用聯合](https://aws.amazon.com/identity/federation/)身分登入 。如果管理員先前已設定使用 IAM 角色的聯合身分，則使用者只能夠以聯合身分登入。當使用者使用聯合 AWS 存取 時，他們間接[擔任角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/when-to-use-iam.html#security-iam-authentication-iamrole)。當使用者使用此類身分時，您：
  + 可以為其指派 Kubernetes 許可，從而讓其能夠使用您叢集上的 Kubernetes 物件。如需如何向 IAM 主體指派許可以便相應主體能夠存取您叢集上的 Kubernetes 物件的詳細資訊，請參閱 [使用 EKS 存取項目授予 IAM 使用者 Kubernetes 的存取權](access-entries.md)。
  + 可以指派 IAM 許可給他們，讓他們可以使用 Amazon EKS API、 AWS CLI AWS 管理主控台、 AWS CloudFormation 或 與您的 Amazon EKS 叢集及其資源搭配使用`eksctl`。如需詳細資訊，請參閱《服務授權參考》中的 [Amazon Elastic Kubernetes Service 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)一節。
  + 節點透過承擔 IAM 角色來加入叢集。[適用於 Kubernetes 的AWS IAM 驗證器](https://github.com/kubernetes-sigs/aws-iam-authenticator#readme)在 Amazon EKS 控制平面上執行，讓使用者能夠使用 IAM 主體存取您的叢集。
+  **您自己的 OpenID Connect (OIDC) 提供商中的使用者**：此類型需要向 [OIDC](https://openid.net/connect/) 提供商進行身分驗證。如需向 Amazon EKS 叢集設定您自己的 OIDC 提供商的詳細資訊，請參閱 [透過外部 OIDC 提供商授予使用者存取 Kubernetes 的權限](authenticate-oidc-identity-provider.md)。當使用者使用此類身分時，您：
  + 可以為其指派 Kubernetes 許可，從而讓其能夠使用您叢集上的 Kubernetes 物件。
  + 無法為他們指派 IAM 許可，讓他們可以使用 Amazon EKS API、 AWS CLI AWS 管理主控台、 AWS CloudFormation 或 來使用您的 Amazon EKS 叢集及其資源`eksctl`。

您可以在叢集中使用這兩種類型的身分。IAM 身分驗證方法無法停用。OIDC 身分驗證方法為選用。

## 建立 IAM 身分與 Kubernetes 許可的關聯
<a name="authentication-modes"></a>

[適用於 Kubernetes 的AWS IAM 驗證器](https://github.com/kubernetes-sigs/aws-iam-authenticator#readme)安裝在叢集的控制平面上。它啟用您允許存取叢集上的 Kubernetes 資源的 [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) (IAM) 主體 (角色和使用者)。您可以使用以下方法之一允許 IAM 主體存取叢集上的 Kubernetes 物件：
+  **建立存取項目**：如果叢集版本等於或高於叢集 Kubernetes 版本[先決條件](access-entries.md)部分中列出的平台版本，則建議您使用此選項。

  使用*存取項目*，從叢集外部管理 IAM 主體的 Kubernetes 許可。您可以使用 EKS API、 AWS 命令列界面、 AWS SDKs、 AWS CloudFormation 和 來新增和管理對叢集的存取 AWS 管理主控台。這意味著您可以使用建立叢集時使用的工具來管理使用者。

  若要開始使用，請依照[變更身分驗證模式來使用存取項目](setting-up-access-entries.md)，然後[遷移現有的 aws-auth ConfigMap 項目來存取項目](migrating-access-entries.md)。
+  **新增項目到 `aws-auth` `ConfigMap`**：如果叢集的平台版本低於[先決條件](access-entries.md)部分中列出的版本，則必須使用此選項。如果叢集的平台版本等於或高於叢集 Kubernetes 版本[先決條件](access-entries.md)部分中列出的平台版本，並且您已將項目新增至 `ConfigMap`，則建議您將這些項目移轉到存取項目。但是，您無法移轉 Amazon EKS 新增至 `ConfigMap` 的項目，例如用於受管節點群組或 Fargate 設定檔的 IAM 角色項目。如需詳細資訊，請參閱[授予 IAM 使用者和角色對 Kubernetes APIs存取權](#grant-k8s-access)。
  + 如果必須使用 `aws-auth` `ConfigMap` 選項，則可以使用 `eksctl create iamidentitymapping` 命令將項目新增至 `ConfigMap`。如需詳細資訊，請參閱 `eksctl` 文件中的 [Manage IAM users and roles](https://eksctl.io/usage/iam-identity-mappings/) 一節。

## 設定叢集驗證模式
<a name="set-cam"></a>

每個叢集都有自己的*身分驗證模式*。身分驗證模式決定您可以使用哪些方法來允許 IAM 主體存取叢集上的 Kubernetes 物件。身分驗證模式有 3 種。

**重要**  
啟用存取項目方法後，即無法將其停用。  
如果在叢集建立期間未啟用 `ConfigMap` 方法，則稍後無法啟用。在引入存取項目之前建立的所有叢集均已啟用 `ConfigMap` 方法。  
如果您搭配叢集使用混合節點，則必須使用 `API` 或 `API_AND_CONFIG_MAP` 叢集身分驗證模式。

 **叢集內的 `aws-auth` `ConfigMap`**   
這是 Amazon EKS 叢集的原始身分驗證模式。建立叢集的 IAM 主體是可以使用 `kubectl` 存取叢集的初始使用者。初始使用者必須將其他使用者新增至 `aws-auth` `ConfigMap` 的清單中，並為這些使用者指派相應許可。其他使用者無法管理或移除初始使用者，因為 `ConfigMap` 中沒有要管理的項目。

 **`ConfigMap` 和存取項目**   
使用這種身分驗證模式時，您可以使用這兩種方法將 IAM 主體新增至叢集。請注意，每個方法都會存放個別的項目；例如，如果您從 AWS CLI 新增存取項目，`aws-auth``ConfigMap`則不會更新 。

 **僅存取項目**   
透過此身分驗證模式，您可以使用 EKS API、 AWS 命令列界面、 AWS SDKs、 AWS CloudFormation 和 AWS 管理主控台 來管理 IAM 主體對叢集的存取。  
每個存取項目都有一個*類型*，您可以使用*存取範圍*的組合將主體限制為特定命名空間，並使用*存取政策*來設定預先設定的可重複使用許可政策。您也可以使用 STANDARD 類型和 Kubernetes RBAC 群組來指派自訂許可。


| 身分驗證方式 | 方法 | 
| --- | --- | 
|  僅 `ConfigMap` (`CONFIG_MAP`) |  `aws-auth` `ConfigMap`  | 
| EKS API 和 `ConfigMap` (`API_AND_CONFIG_MAP`) | EKS API、 AWS 命令列界面、 AWS SDKs、 AWS CloudFormation 和 AWS 管理主控台 中的存取項目 `aws-auth` `ConfigMap`  | 
| 僅 EKS API (`API`) | EKS API、 AWS 命令列界面、 AWS SDKs、 AWS CloudFormation 和 中的存取項目 AWS 管理主控台  | 

**注意**  
Amazon EKS 自動模式需要存取項目。