將存取政策與存取項目關聯和取消關聯 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

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

將存取政策與存取項目關聯和取消關聯

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

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

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

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

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

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

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

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

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

  • 如果您在與叢集上的 Kubernetes 物件互動時模擬 Kubernetes 使用者或群組,例如將 kubectl 命令與 --as username--as-group group-name 結合使用,則將強制使用 Kubernetes RBAC 授權。因此,相應 IAM 主體沒有與相應存取項目關聯的任何存取政策指派的許可。相應 IAM 主體模擬的使用者或群組擁有的 Kubernetes 許可,僅限於您在繫結到該群組名稱或使用者名稱的 Kubernetes RoleClusterRole 物件中授予的 Kubernetes 許可。為了讓相應 IAM 主體擁有關聯的存取政策中的許可,請勿模擬 Kubernetes 使用者或群組。相應 IAM 主體還將擁有您在繫結至為存取項目指定的群組名稱或使用者名稱的 Kubernetes RoleClusterRole 物件中授予的任何許可。如需詳細資訊,請參閱 Kubernetes 文件中的 User impersonation 一節。

您可以使用或將存取原則與存取項目 AWS Management Console 相關聯 AWS CLI。

AWS Management Console
使用 AWS Management Console將存取政策與存取項目關聯
  1. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

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

  3. 選擇存取索引標籤。

  4. 如果存取項目的類型為標準,則可以將 Amazon EKS存取政策與之關聯或取消關聯。如果存取項目的類型不為標準,則此選項不可用。

  5. 選擇關聯存取政策

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

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

  8. 選擇新增存取政策

AWS CLI
先決條件

您裝置上安裝和設定的 AWS Command Line Interface (AWS CLI) 的版本1.27.160或更新版本、版本或更新版本或更新版本或更新版本 AWS CloudShell。2.12.3若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。如 yumapt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI落後數個版本之多。若要安裝最新版本,請參閱《AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI以及使用 aws configure 的快速組態。安裝在中的 AWS CLI 版本也 AWS CloudShell 可能是最新版本之後的幾個版本。若要進行更新,請參閱《AWS CloudShell 使用者指南》中的〈安裝 AWS CLI 到主目錄

將存取政策與存取項目關聯
  1. 檢視可用的存取政策。

    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          ||
    |+---------------------------------------------------------------------+-------------------------------+|

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

  2. 檢視現有的存取項目。使用您叢集的名稱取代 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"
        ]
    }
  3. 將存取政策與存取項目關聯。以下範例將 AmazonEKSViewPolicy 存取政策與一個存取項目關聯。每當 my-role IAM 角色嘗試存取叢集上的 Kubernetes 物件時,Amazon EKS 將授權該角色使用政策中的許可來存取且僅存取 my-namespace1my-namespace2 Kubernetes 命名空間中的 Kubernetes 物件。用您的叢集名稱取代 my-cluster,用您的 AWS 帳戶 ID 取代 111122223333,並用您想要讓 Amazon EKS 為其授予對 Kubernetes 叢集上物件之存取權的 IAM 角色取代 my-role

    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

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

    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 命名空間的管理員許可。

  2. 將存取政策與存取項目取消關聯。在此範例中,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

存取政策許可

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

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

此存取政策包含向相應 IAM 主體授予對資源的大部分許可的許可。當將之與某個存取項目關聯時,其存取範圍通常是一個或多個 Kubernetes 命名空間。如果您希望相應 IAM 主體對叢集上的所有資源具有管理員存取權,請將 AmazonEKS ClusterAdminPolicy 存取政策與相應存取項目關聯。

ARNarn: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 主體的管理範圍,請考慮將 AmazonEKS AdminPolicy 存取政策與相應存取項目關聯。

ARNarn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy

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

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

ARNarn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminViewPolicy

Kubernetes API 群組 Kubernetes 資源 Kubernetes 動詞 (許可)
* * get, list, watch

此存取政策包含允許相應 IAM 主體編輯大多數 Kubernetes 資源的許可。

ARNarn: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 資源的許可。

ARNarn: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
bindings,events,limitranges,namespaces/status,pods/log, rpods/status,eplicationcontrollers/status, rresourcequotas, r esourcequotas/status get, list, watch
namespaces get, list, watch

存取政策更新

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

變更 描述 日期
AmazonEKSAdminViewPolicy 新增擴充檢視存取權限的新原則,包括 Secret 等資源。 2024年4月23 日

引進存取政策。

Amazon EKS 引進了存取政策。

2023 年 5 月 29 日