協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將存取政策與存取項目建立關聯
您可以向類型為 STANDARD
的存取項目指派一個或多個存取政策。Amazon EKS 會自動向其他類型的存取項目授予在叢集中正常運作所需的許可。Amazon EKS 存取政策包含 Kubernetes 許可,而非 IAM 許可。將存取政策與存取項目建立關聯之前,請確定您已熟悉每個存取政策中包含的 Kubernetes 許可。如需詳細資訊,請參閱檢閱存取政策許可。如果沒有任何存取政策符合您的需求,則請勿將存取政策與存取項目建立關聯。反之,請為存取項目指定一或多個群組名稱,並建立和管理 Kubernetes 角色型存取控制物件。如需詳細資訊,請參閱建立存取項目。
-
現有的存取項目。若要建立服務角色,請參閱建立存取項目。
-
Identity AWS and Access Management 角色或具有下列許可的使用者:
ListAccessEntries
、DescribeAccessEntry
、UpdateAccessEntry
ListAccessPolicies
、、AssociateAccessPolicy
和DisassociateAccessPolicy
。如需詳細資訊,請參閱《服務授權參考》中的 Amazon Elastic Kubernetes Service 定義的動作。
在將存取政策與存取項目關聯之前,請考量以下要求:
-
每個存取項目可以關聯多個存取政策,但只能將每個政策與一個存取項目關聯一次。如果您關聯多個存取政策,則存取項目的 IAM 主體具有所有包含在所有關聯存取政策中的所有許可。
-
您可以指定一或多個 Kubernetes 命名空間的名稱,將存取政策範圍限定在叢集上的所有資源。您可以將萬用字元用於命名空間名稱。例如,如果要將存取政策的適用範圍限定為以
dev-
開頭的所有命名空間,則可以指定dev-*
作為命名空間名稱。確認叢集上存在相應命名空間,並且拼字與叢集上的實際命名空間名稱相符。Amazon EKS 不會確認叢集上命名空間的拼字或存在。 -
將存取政策關聯到存取項目後,您可以變更存取政策的存取範圍。如果您已將存取政策範圍限定為 Kubernetes 命名空間,您可以視需要新增和移除關聯的命名空間。
-
如果您將存取政策關聯到也指定了群組名稱的存取項目,則相應 IAM 主體擁有所有關聯存取政策中的所有許可。它還具有任何 Kubernetes 中指定的所有許可
Role
或ClusterRole
物件,Role
以及指定群組名稱的RoleBinding
物件。 -
如果您執行
kubectl auth can-i --list
命令,則不會看到任何由存取政策指派的 Kubernetes 許可,該政策與您執行命令時使用的 IAM 主體的存取項目相關聯。命令只會顯示您在 Kubernetes 中授予的 Kubernetes 許可,Role
或您已繫結至您為存取項目指定的群組名稱或使用者名稱的ClusterRole
物件。 -
如果您在與叢集上的 Kubernetes 物件互動時模擬 Kubernetes 使用者或群組,例如搭配
--as
或 使用username
kubectl
命令--as-group
,則表示您強制使用 Kubernetes RBAC 授權。因此,相應 IAM 主體沒有與相應存取項目關聯的任何存取政策指派的許可。IAM 主體模擬的使用者或群組唯一擁有的 Kubernetes 許可,是您在 Kubernetes 中授予的 Kubernetes 許可,group-name
Role
或是您已繫結至群組名稱或使用者名稱的ClusterRole
物件。若要讓您的 IAM 主體在相關聯的存取政策中擁有許可,請勿模擬 Kubernetes 使用者或群組。IAM 委託人仍會擁有您在 Kubernetes 中授予的任何許可,Role
或您已繫結至您為存取項目指定的群組名稱或使用者名稱的ClusterRole
物件。如需詳細資訊,請參閱 Kubernetes 文件中的使用者模擬。
您可以使用 AWS Management Console 或 AWS CLI 將存取政策與存取項目建立關聯。
AWS Management Console
-
開啟 Amazon EKS 主控台
。 -
選擇要將存取政策關聯到的存取項目所在的叢集的名稱。
-
選擇存取索引標籤。
-
如果存取項目的類型為標準,則可以將 Amazon EKS存取政策與之關聯或取消關聯。如果您的存取項目類型是標準以外的任何項目,則無法使用此選項。
-
選擇關聯存取政策。
-
對於政策名稱,選取具有您希望相應 IAM 主體擁有的許可的政策。若要查看每個政策包含的許可,請參閱 檢閱存取政策許可。
-
對於存取範圍,選擇存取範圍。如果您選擇叢集,則存取政策中的許可會授予所有 Kubernetes 命名空間中資源的 IAM 主體。如果您選擇 Kubernetes 命名空間,則可以選擇新增命名空間。在出現的命名空間欄位中,您可以輸入叢集上 Kubernetes 命名空間的名稱。如果您希望相應 IAM 主體擁有跨多個命名空間的許可,則可以輸入多個命名空間。
-
選擇新增存取政策。
AWS CLI
-
在您的裝置或 AWS CloudShell 上安裝和設定的 AWS 命令列界面 (AWS CLI) 版本
1.27.160
2.12.3
或更新版本。若要檢查您目前的版本,請使用aws --version | cut -d / -f2 | cut -d ' ' -f1
。適用於 macOS 的yum
、apt-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 -
檢視可用的存取政策。
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 || |+---------------------------------------------------------------------+-------------------------------+|
若要查看每個政策包含的許可,請參閱 檢閱存取政策許可。
-
檢視現有的存取項目。使用您叢集的名稱取代
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" ] }
-
將存取政策與存取項目關聯。以下範例將
AmazonEKSViewPolicy
存取政策與一個存取項目關聯。每當my-role
IAM 角色嘗試存取叢集上的 Kubernetes 物件時,Amazon EKS 將授權該角色使用政策中的許可,僅存取my-namespace1
和my-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
-
確定哪些存取政策與某個存取項目關聯。
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 命名空間的管理員許可。
-
將存取政策與存取項目取消關聯。在此範例中,
AmazonEKSAdminPolicy
政策與存取項目取消關聯。但是,相應 IAM 主體保留AmazonEKSViewPolicy
存取政策中對my-namespace1
和my-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
若要列出可用的存取政策,請參閱 檢閱存取政策許可。