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

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

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

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

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

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

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

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

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

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

  • 如果您將存取政策與指定群組名稱的存取項目建立關聯,則 IAM 主體會擁有所有關聯存取政策中的所有許可。它也具有任何 Kubernetes Role 或在任何 中指定的ClusterRole物件 Kubernetes 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 主體沒有與存取項目相關聯的任何存取政策指派的許可。唯一 Kubernetes IAM 主體模擬的使用者或群組具有的 許可是 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. 對於存取範圍,選擇存取範圍。如果您選擇叢集,則存取政策中的許可會授予所有資源的 IAM 主體 Kubernetes 命名空間。如果您選擇 Kubernetes 然後,您可以選擇新增命名空間。在出現的名稱空間欄位中,您可以輸入 Kubernetes 叢集上的命名空間。如果您希望 IAM 主體擁有多個命名空間的許可,則可以輸入多個命名空間。

  8. 選擇新增存取政策

AWS CLI

  1. 在您的裝置 2.12.3 or AWS CloudShell 上安裝和設定的 AWS 命令列介面 (AWS CLI) 版本 1.27.160 或更新版本。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。套件管理員apt-get,例如 yum、 或 Homebrew for macOS 通常是最新版本 AWS CLI 後面的幾個版本。若要安裝最新版本,請參閱 AWS 命令列介面使用者指南中的使用 aws 設定安裝 和 快速組態。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config安裝在 in AWS CLI 中的 AWS CloudShell 版本也可能是最新版本後面的幾個版本。若要更新它,請參閱 AWS CLI 使用者指南中的將 Word 安裝到您的主目錄 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. 檢視現有的存取項目。Replace (取代) 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 會授權角色使用政策中的許可來存取 Kubernetes 中的物件 my-namespace1 以及 my-namespace2 Kubernetes 僅限命名空間。Replace (取代) my-cluster 使用叢集的名稱 111122223333 使用 AWS 您的帳戶 ID,以及 my-role 使用您希望 Amazon EKS 授權存取的 IAM 角色名稱 Kubernetes 叢集物件。

    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=namespace,namespaces=my-namespace1,my-namespace2 type=cluster。如果要將多個存取政策關聯到該存取項目,請多次執行該命令,並每次使用不同的存取政策。每個關聯的存取政策都有自身的適用範圍。

    注意

    如果您稍後想要變更關聯的存取政策的適用範圍,請再次執行先前的命令並指定新的適用範圍。例如,如果您想要移除 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-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

存取政策許可

存取政策rules包含 Kubernetes verbs (許可) 和 resources。存取政策不包含 IAM 許可或資源。類似於 Kubernetes RoleClusterRole 物件,存取政策僅包含 allow rules。您無法修改存取政策的內容。您無法建立自己的存取政策。如果存取政策中的許可不符合您的需求,請建立 Kubernetes RBAC 物件並指定存取項目的群組名稱。如需詳細資訊,請參閱建立存取項目。存取政策中包含的許可類似於 中的許可 Kubernetes 面向使用者的叢集角色。如需詳細資訊,請參閱中的面向使用者的角色 Kubernetes 文件中)。

選擇任意存取政策以查看其內容。每個存取政策中每個表的每一行都是一項單獨規則。

此存取政策包含將 IAM 主體的大多數許可授予 資源的許可。與存取項目相關聯時,其存取範圍通常為一或多個 Kubernetes 命名空間。如果您想要 IAM 主體讓管理員存取叢集上的所有資源,請改為將 AmazonEKSClusterAdminPolicyWordAmazonEKSClusterAdminPolicy Word 存取政策與您的存取項目建立關聯。

ARN arn:aws: eks::aws:cluster-access-policy/AmazonEKSAdminPolicy

Kubernetes API 群組 Kubernetes 資源 Kubernetes 動詞 (許可)

apps

daemonsets, deployments, deployments/rollback, deployments/scale, replicasets, replicasets/scale, statefulsets, statefulsets/scale

create, delete, deletecollection, patch, update

apps

controllerrevisions, daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, replicasets, replicasets/scale, replicasets/status, statefulsets, statefulsets/scale, statefulsets/status

get, list, watch

authorization.k8s.io

localsubjectaccessreviews

create

autoscaling

horizontalpodautoscalers

create, delete, deletecollection, patch, update

autoscaling

horizontalpodautoscalers, horizontalpodautoscalers/status

get, list, watch

batch

cronjobs, jobs

create, delete, deletecollection, patch, update

batch

cronjobs, cronjobs/status, jobs, jobs/status

get, list, watch

discovery.k8s.io

endpointslices

get, list, watch

extensions

daemonsets, deployments, deployments/rollback, deployments/scale, ingresses, networkpolicies, replicasets, replicasets/scale, replicationcontrollers/scale

create, delete, deletecollection, patch, update

extensions

daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, ingresses, ingresses/status, networkpolicies, replicasets, replicasets/scale, replicasets/status, replicationcontrollers/scale

get, list, watch

networking.k8s.io

ingresses, ingresses/status, networkpolicies

get, list, watch

networking.k8s.io

ingresses, networkpolicies

create, delete, deletecollection, patch, update

policy

poddisruptionbudgets

create, delete, deletecollection, patch, update

policy

poddisruptionbudgets, poddisruptionbudgets/status

get, list, watch

rbac.authorization.k8s.io

rolebindings, roles

create, delete, deletecollection, get, list, patch, update, watch

configmaps, endpoints, persistentvolumeclaims, persistentvolumeclaims/status, pods, replicationcontrollers, replicationcontrollers/scale, serviceaccounts, services, services/status

get,list, watch

pods/attach, pods/exec, pods/portforward, pods/proxy, secrets, services/proxy

get, list, watch

configmaps, events, persistentvolumeclaims, replicationcontrollers, replicationcontrollers/scale, secrets, serviceaccounts, services, services/proxy

create, delete, deletecollection, patch, update

pods, pods/attach, pods/exec, pods/portforward, pods/proxy

create, delete, deletecollection, patch, update

serviceaccounts

impersonate

bindings, events, limitranges, namespaces/status, pods/log, pods/status, replicationcontrollers/status, resourcequotas, resourcequotas/status

get, list, watch

namespaces

get,list, watch

此存取政策包含授予 IAM 主體管理員存取叢集的許可。與存取項目相關聯時,其存取範圍通常是叢集,而不是 Kubernetes 命名空間。如果您希望 IAM 主體具有更有限的管理範圍,請考慮改為將 AmazonEKSAdmin 政策AmazonEKSAdmin 政策存取政策與存取項目建立關聯。

ARN arn:aws: eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy

Kubernetes API 群組 Kubernetes nonResourceURLsWord Kubernetes 資源 Kubernetes 動詞 (許可)

\*

\*

\*

\*

\*

此存取政策包含許可,授予 IAM 主體列出/檢視叢集中所有資源的存取權。請注意,這包含 Kubernetes 秘密。

ARN arn:aws: eks::aws:cluster-access-policy/AmazonEKSAdminViewPolicy

Kubernetes API 群組 Kubernetes 資源 Kubernetes 動詞 (許可)

\*

\*

`get, watch``

此存取政策包含允許 IAM 主體編輯大部分 Kubernetes 的費用。

ARN arn:aws: eks::aws:cluster-access-policy/AmazonEKSEditPolicy

Kubernetes API 群組 Kubernetes 資源 Kubernetes 動詞 (許可)

apps

daemonsets, deployments, deployments/rollback, deployments/scale, replicasets, replicasets/scale, statefulsets, statefulsets/scale

create, delete, deletecollection, patch, update

apps

controllerrevisions, daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, replicasets, replicasets/scale, replicasets/status, statefulsets, statefulsets/scale, statefulsets/status

get, list, watch

autoscaling

horizontalpodautoscalers, horizontalpodautoscalers/status

get, list, watch

autoscaling

horizontalpodautoscalers

create, delete, deletecollection, patch, update

batch

cronjobs, jobs

create, delete, deletecollection, patch, update

batch

cronjobs, cronjobs/status, jobs, jobs/status

get, list, watch

discovery.k8s.io

endpointslices

get, list, watch

extensions

daemonsets, deployments, deployments/rollback, deployments/scale, ingresses, networkpolicies, replicasets, replicasets/scale, replicationcontrollers/scale

create, delete, deletecollection, patch, update

extensions

daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, ingresses, ingresses/status, networkpolicies, replicasets, replicasets/scale, replicasets/status, replicationcontrollers/scale

get, list, watch

networking.k8s.io

ingresses, networkpolicies

create, delete, deletecollection, patch, update

networking.k8s.io

ingresses, ingresses/status, networkpolicies

get, list, watch

policy

poddisruptionbudgets

create, delete, deletecollection, patch, update

policy

poddisruptionbudgets, poddisruptionbudgets/status

get, list, watch

namespaces

get, list, watch

pods/attach, pods/exec, pods/portforward, pods/proxy, secrets, services/proxy

get, list, watch

serviceaccounts

impersonate

pods, pods/attach, pods/exec, pods/portforward, pods/proxy

create, delete, deletecollection, patch, update

configmaps, events, persistentvolumeclaims, replicationcontrollers, replicationcontrollers/scale, secrets, serviceaccounts, services, services/proxy

create, delete, deletecollection, patch, update

configmaps, endpoints, persistentvolumeclaims, persistentvolumeclaims/status, pods, replicationcontrollers, replicationcontrollers/scale, serviceaccounts, services, services/status

get, list, watch

bindings, events, limitranges, namespaces/status, pods/log, pods/status, replicationcontrollers/status, resourcequotas, resourcequotas/status

get, list, watch

此存取政策包含允許 IAM 主體檢視大多數 Kubernetes 的費用。

ARN arn:aws: eks::aws:cluster-access-policy/AmazonEKSViewPolicy

Kubernetes API 群組 Kubernetes 資源 Kubernetes 動詞 (許可)

apps

controllerrevisions, daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, replicasets, replicasets/scale, replicasets/status, statefulsets, statefulsets/scale, statefulsets/status

get, list, watch

autoscaling

horizontalpodautoscalers, horizontalpodautoscalers/status

get, list, watch

batch

cronjobs, cronjobs/status, jobs, jobs/status

get, list, watch

discovery.k8s.io

endpointslices

get, list, watch

extensions

daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, ingresses, ingresses/status, networkpolicies, replicasets, replicasets/scale, replicasets/status, replicationcontrollers/scale

get, list, watch

networking.k8s.io

ingresses, ingresses/status, networkpolicies

get, list, watch

policy

poddisruptionbudgets, poddisruptionbudgets/status

get, list, watch

configmaps, endpoints, persistentvolumeclaims, persistentvolumeclaims/status, pods, replicationcontrollers, replicationcontrollers/scale, serviceaccounts, services, services/status

get, list, watch

bindingseventslimitrangesnamespaces/statuspods/logpods/statusreplicationcontrollers/statusresourcequotas、、esourcequotas/status

get, list, watch

namespaces

get, list, watch

存取政策更新

檢視有關存取政策更新 (自引進以來) 的詳細資訊。如需此頁面變更的自動提醒,請訂閱 中的 RSS 摘要文件歷史紀錄

變更 描述 日期

AmazonEKSAdminViewPolicy

新增新政策以擴展檢視存取,包括 Secrets 等資源。

2024 年 4 月 23 日

引進存取政策。

Amazon EKS 引入了存取政策。

2023 年 5 月 29 日