授予 IAM 使用者和角色對 Kubernetes APIs存取權 - Amazon EKS

協助改進此頁面

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

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

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

授予 IAM 使用者和角色對 Kubernetes APIs存取權

您的叢集具有 Kubernetes API 端點。Kubectl 會使用此 API。您可以使用兩種類型的身分來驗證此 API:

  • AWS Identity and Access Management (IAM) 主體 (角色或使用者) – 此類型需要對 IAM 進行身分驗證。使用者可以 AWS 使用透過身分來源提供的憑證,以 IAM 使用者身分或使用聯合身分登入 。如果管理員先前已設定使用 IAM 角色的聯合身分,則使用者只能夠以聯合身分登入。當使用者使用聯合 AWS 存取 時,他們間接擔任角色。當使用者使用此類身分時,您:

    • 可以為其指派 Kubernetes 許可,從而讓其能夠使用您叢集上的 Kubernetes 物件。如需如何向 IAM 主體指派許可以便相應主體能夠存取您叢集上的 Kubernetes 物件的詳細資訊,請參閱 使用 EKS 存取項目授予 IAM 使用者 Kubernetes 的存取權

    • 可以指派 IAM 許可給他們,讓他們可以使用 Amazon EKS API、 AWS CLI AWS 管理主控台、 AWS CloudFormation 或 與您的 Amazon EKS 叢集及其資源搭配使用eksctl。如需詳細資訊,請參閱《服務授權參考》中的 Amazon Elastic Kubernetes Service 定義的動作一節。

    • 節點透過承擔 IAM 角色來加入叢集。適用於 Kubernetes 的AWS IAM 驗證器在 Amazon EKS 控制平面上執行,讓使用者能夠使用 IAM 主體存取您的叢集。

  • 您自己的 OpenID Connect (OIDC) 提供商中的使用者:此類型需要向 OIDC 提供商進行身分驗證。如需向 Amazon EKS 叢集設定您自己的 OIDC 提供商的詳細資訊,請參閱 透過外部 OIDC 提供商授予使用者存取 Kubernetes 的權限。當使用者使用此類身分時,您:

    • 可以為其指派 Kubernetes 許可,從而讓其能夠使用您叢集上的 Kubernetes 物件。

    • 無法為他們指派 IAM 許可,讓他們可以使用 Amazon EKS API、 AWS CLI AWS 管理主控台、 AWS CloudFormation 或 來使用您的 Amazon EKS 叢集及其資源eksctl

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

建立 IAM 身分與 Kubernetes 許可的關聯

適用於 Kubernetes 的AWS IAM 驗證器安裝在叢集的控制平面上。它啟用您允許存取叢集上的 Kubernetes 資源的 AWS Identity and Access Management (IAM) 主體 (角色和使用者)。您可以使用以下方法之一允許 IAM 主體存取叢集上的 Kubernetes 物件:

  • 建立存取項目:如果叢集版本等於或高於叢集 Kubernetes 版本先決條件部分中列出的平台版本,則建議您使用此選項。

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

    若要開始使用,請依照變更身分驗證模式來使用存取項目,然後遷移現有的 aws-auth ConfigMap 項目來存取項目

  • 新增項目到 aws-auth ConfigMap:如果叢集的平台版本低於先決條件部分中列出的版本,則必須使用此選項。如果叢集的平台版本等於或高於叢集 Kubernetes 版本先決條件部分中列出的平台版本,並且您已將項目新增至 ConfigMap,則建議您將這些項目移轉到存取項目。但是,您無法移轉 Amazon EKS 新增至 ConfigMap 的項目,例如用於受管節點群組或 Fargate 設定檔的 IAM 角色項目。如需詳細資訊,請參閱授予 IAM 使用者和角色對 Kubernetes APIs存取權

    • 如果必須使用 aws-auth ConfigMap 選項,則可以使用 eksctl create iamidentitymapping 命令將項目新增至 ConfigMap。如需詳細資訊,請參閱 eksctl 文件中的 Manage IAM users and roles 一節。

設定叢集驗證模式

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

重要

啟用存取項目方法後,即無法將其停用。

如果在叢集建立期間未啟用 ConfigMap 方法,則稍後無法啟用。在引入存取項目之前建立的所有叢集均已啟用 ConfigMap 方法。

如果您搭配叢集使用混合節點,則必須使用 APIAPI_AND_CONFIG_MAP 叢集身分驗證模式。

叢集內的 aws-auth ConfigMap

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

ConfigMap 和存取項目

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

僅存取項目

透過此身分驗證模式,您可以使用 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 自動模式需要存取項目。