將存取政策與存取項目建立關聯 - Amazon EKS

協助改善此頁面

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

若要提供此使用者指南,請選擇位於每個頁面右窗格中的在 GitHub 上編輯此頁面連結。

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

將存取政策與存取項目建立關聯

您可以向類型STANDARD存取項目指派一個或多個存取政策。Amazon EKS 會自動向其他類型的存取項目授予在叢集中正常運作所需的許可。Amazon EKS 存取政策包含 Kubernetes 許可,而非 IAM 許可。將存取政策與存取項目建立關聯之前,請確定您已熟悉每個存取政策中包含的 Kubernetes 許可。如需詳細資訊,請參閱檢閱存取政策許可。如果沒有任何存取政策符合您的需求,則請勿將存取政策與存取項目建立關聯。反之,請為存取項目指定一或多個群組名稱,並建立和管理 Kubernetes 角色型存取控制物件。如需詳細資訊,請參閱建立存取項目

  • 現有的存取項目。若要建立服務角色,請參閱建立存取項目

  • Identity AWS and Access Management 角色或具有下列許可的使用者:ListAccessEntriesDescribeAccessEntryUpdateAccessEntryListAccessPolicies、、 AssociateAccessPolicyDisassociateAccessPolicy。如需詳細資訊,請參閱《服務授權參考》中的 Amazon Elastic Kubernetes Service 定義的動作

在將存取政策與存取項目關聯之前,請考量以下要求:

  • 每個存取項目可以關聯多個存取政策,但只能將每個政策與一個存取項目關聯一次。如果您關聯多個存取政策,則存取項目的 IAM 主體具有所有包含在所有關聯存取政策中的所有許可。

  • 您可以指定一或多個 Kubernetes 命名空間的名稱,將存取政策範圍限定在叢集上的所有資源。您可以將萬用字元用於命名空間名稱。例如,如果要將存取政策的適用範圍限定為以 dev- 開頭的所有命名空間,則可以指定 dev-* 作為命名空間名稱。確認叢集上存在相應命名空間,並且拼字與叢集上的實際命名空間名稱相符。Amazon EKS 不會確認叢集上命名空間的拼字或存在。

  • 將存取政策關聯到存取項目後,您可以變更存取政策的存取範圍。如果您已將存取政策範圍限定為 Kubernetes 命名空間,您可以視需要新增和移除關聯的命名空間。

  • 如果您將存取政策關聯到也指定了群組名稱的存取項目,則相應 IAM 主體擁有所有關聯存取政策中的所有許可。它還具有任何 Kubernetes 中指定的所有許可RoleClusterRole物件,Role以及指定群組名稱的RoleBinding物件。

  • 如果您執行 kubectl auth can-i --list命令,則不會看到任何由存取政策指派的 Kubernetes 許可,該政策與您執行命令時使用的 IAM 主體的存取項目相關聯。命令只會顯示您在 Kubernetes 中授予的 Kubernetes 許可,Role或您已繫結至您為存取項目指定的群組名稱或使用者名稱的ClusterRole物件。

  • 如果您在與叢集上的 Kubernetes 物件互動時模擬 Kubernetes 使用者或群組,例如搭配 --as username 或 使用 kubectl命令--as-group group-name ,則表示您強制使用 Kubernetes RBAC 授權。因此,相應 IAM 主體沒有與相應存取項目關聯的任何存取政策指派的許可。IAM 主體模擬的使用者或群組唯一擁有的 Kubernetes 許可,是您在 Kubernetes 中授予的 Kubernetes 許可,Role或是您已繫結至群組名稱或使用者名稱的ClusterRole物件。若要讓您的 IAM 主體在相關聯的存取政策中擁有許可,請勿模擬 Kubernetes 使用者或群組。IAM 委託人仍會擁有您在 Kubernetes 中授予的任何許可,Role或您已繫結至您為存取項目指定的群組名稱或使用者名稱的ClusterRole物件。如需詳細資訊,請參閱 Kubernetes 文件中的使用者模擬

您可以使用 AWS Management Console 或 AWS CLI 將存取政策與存取項目建立關聯。

AWS Management Console

  1. 開啟 Amazon EKS 主控台

  2. 選擇要將存取政策關聯到的存取項目所在的叢集的名稱。

  3. 選擇存取索引標籤。

  4. 如果存取項目的類型為標準,則可以將 Amazon EKS存取政策與之關聯或取消關聯。如果您的存取項目類型是標準以外的任何項目,則無法使用此選項。

  5. 選擇關聯存取政策

  6. 對於政策名稱,選取具有您希望相應 IAM 主體擁有的許可的政策。若要查看每個政策包含的許可,請參閱 檢閱存取政策許可

  7. 對於存取範圍,選擇存取範圍。如果您選擇叢集,則存取政策中的許可會授予所有 Kubernetes 命名空間中資源的 IAM 主體。如果您選擇 Kubernetes 命名空間,則可以選擇新增命名空間。在出現的命名空間欄位中,您可以輸入叢集上 Kubernetes 命名空間的名稱。如果您希望相應 IAM 主體擁有跨多個命名空間的許可,則可以輸入多個命名空間。

  8. 選擇新增存取政策

AWS CLI

  1. 在您的裝置或 AWS CloudShell 上安裝和設定的 AWS 命令列界面 (AWS CLI) 版本 1.27.160 2.12.3或更新版本。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。適用於 macOS 的 yumapt-get或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的數個版本。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定安裝 和 快速組態。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config在 AWS CloudShell 中安裝的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它,請參閱《CloudShell AWS 使用者指南》中的將 CLI 安裝到您的主目錄 AWS CloudShell

  2. 檢視可用的存取政策。

    aws eks list-access-policies --output table

    範例輸出如下。

    --------------------------------------------------------------------------------------------------------- | ListAccessPolicies | +-------------------------------------------------------------------------------------------------------+ || accessPolicies || |+---------------------------------------------------------------------+-------------------------------+| || arn | name || |+---------------------------------------------------------------------+-------------------------------+| || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSAdminPolicy | AmazonEKSAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy | AmazonEKSClusterAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSEditPolicy | AmazonEKSEditPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSViewPolicy | AmazonEKSViewPolicy || |+---------------------------------------------------------------------+-------------------------------+|

    若要查看每個政策包含的許可,請參閱 檢閱存取政策許可

  3. 檢視現有的存取項目。使用您叢集的名稱取代 my-cluster

    aws eks list-access-entries --cluster-name my-cluster

    範例輸出如下。

    { "accessEntries": [ "arn:aws: iam::111122223333:role/my-role", "arn:aws: iam::111122223333:user/my-user" ] }
  4. 將存取政策與存取項目關聯。以下範例將 AmazonEKSViewPolicy 存取政策與一個存取項目關聯。每當 my-role IAM 角色嘗試存取叢集上的 Kubernetes 物件時,Amazon EKS 將授權該角色使用政策中的許可,僅存取 my-namespace1my-namespace2 Kubernetes 命名空間中的 Kubernetes 物件。將 my-cluster 取代為您的叢集名稱、將 111122223333 取代為您的 AWS 帳戶 ID,並將 my-role 取代為您希望 Amazon EKS 授權存取 Kubernetes 叢集物件的 IAM 角色名稱。

    aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws: iam::111122223333:role/my-role \ --access-scope type=namespace,namespaces=my-namespace1,my-namespace2 --policy-arn arn:aws: eks::aws:cluster-access-policy/AmazonEKSViewPolicy

    如果您希望相應 IAM 主體擁有適用於整個叢集的許可,請用 type=cluster 取代 type=namespace,namespaces=my-namespace1,my-namespace2 。如果要將多個存取政策關聯到該存取項目,請多次執行該命令,並每次使用不同的存取政策。每個關聯的存取政策都有自身的適用範圍。

    注意

    如果您稍後想要變更關聯的存取政策的適用範圍,請再次執行先前的命令並指定新的適用範圍。例如,如果您想要移除 my-namespace2,則type=namespace,namespaces=my-namespace1 只會使用 再次執行命令。如果您想要將範圍從 變更為 namespace cluster,則可以再次使用 執行命令type=cluster,移除 type=namespace,namespaces=my-namespace1,my-namespace2

  5. 確定哪些存取政策與某個存取項目關聯。

    aws eks list-associated-access-policies --cluster-name my-cluster --principal-arn arn:aws: iam::111122223333:role/my-role

    範例輸出如下。

    { "clusterName": "my-cluster", "principalArn": "arn:aws: iam::111122223333", "associatedAccessPolicies": [ { "policyArn": "arn:aws: eks::aws:cluster-access-policy/AmazonEKSViewPolicy", "accessScope": { "type": "cluster", "namespaces": [] }, "associatedAt": "2023-04-17T15:25:21.675000-04:00", "modifiedAt": "2023-04-17T15:25:21.675000-04:00" }, { "policyArn": "arn:aws: eks::aws:cluster-access-policy/AmazonEKSAdminPolicy", "accessScope": { "type": "namespace", "namespaces": [ "my-namespace1", "my-namespace2" ] }, "associatedAt": "2023-04-17T15:02:06.511000-04:00", "modifiedAt": "2023-04-17T15:02:06.511000-04:00" } ] }

    在上述範例中,此存取項目的 IAM 主體具有叢集上所有命名空間的檢視許可,以及兩個 Kubernetes 命名空間的管理員許可。

  6. 將存取政策與存取項目取消關聯。在此範例中,AmazonEKSAdminPolicy 政策與存取項目取消關聯。但是,相應 IAM 主體保留 AmazonEKSViewPolicy 存取政策中對 my-namespace1my-namespace2 命名空間中物件的許可,因為該存取政策並未與該存取項目取消關聯。

    aws eks disassociate-access-policy --cluster-name my-cluster --principal-arn arn:aws: iam::111122223333:role/my-role \ --policy-arn arn:aws: eks::aws:cluster-access-policy/AmazonEKSAdminPolicy

若要列出可用的存取政策,請參閱 檢閱存取政策許可