理解 Amazon EKS 所建立的 RBAC 角色及使用者 - Amazon EKS

協助改進此頁面

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

理解 Amazon EKS 所建立的 RBAC 角色及使用者

當您建立 Kubernetes 叢集時,會在該叢集上建立數個預設 Kubernetes 身分,以便 Kubernetes 能正常運作。Amazon EKS 會為其每個預設元件建立 Kubernetes 身分。身分為叢集元件提供以 Kubernetes 角色為基礎的授權控制 (RBAC)。如需詳細資訊,請參閱 Kubernetes 文件中的使用 RBAC 授權

當您將選用的附加元件安裝到叢集時,可能會將其他 Kubernetes 身分新增至叢集。如需有關本主題未討論之身分的詳細資訊,請參閱附加元件的文件。

您可以使用 AWS 管理主控台 或 kubectl 命令列工具檢視叢集上 Amazon EKS 所建立之 Kubernetes 身分的清單。所有的使用者身分都會出現在 kube 稽核日誌中,可供您透過 Amazon CloudWatch 加以利用。

AWS 管理主控台

先決條件

您使用的 IAM 主體必須具有所需許可中所述的許可。

使用 AWS 管理主控台 檢視 Amazon EKS 所建立的身分

  1. 開啟 Amazon EKS 主控台

  2. Clusters (叢集) 清單中,選擇包含您要檢視之身分的叢集。

  3. 選擇 Resources (資源) 標籤。

  4. Resource types (資源類型) 下選擇 Authorization (授權)。

  5. 選擇 ClusterRolesClusterRoleBindingsRoles (角色) 或 RoleBindings。所有前面帶有 eks 的資源皆是由 Amazon EKS 所建立。其他由 Amazon EKS 建立的身分資源包含:

    • 名為 aws-nodeClusterRoleClusterRoleBindingaws-node 資源支援 Kubernetes 專用 Amazon VPC CNI 外掛程式,Amazon EKS 會在所有叢集上安裝。

    • 名為 vpc-resource-controller-roleClusterRole,以及名為 vpc-resource-controller-rolebindingClusterRoleBinding。這些資源支援 Amazon VPC 資源控制器,Amazon EKS 會在所有叢集上安裝該控制器。

    除了您在主控台中看到的資源之外,您的叢集上還存在下列特殊使用者身分,但在叢集的組態中不會顯示出來:

    • eks:cluster-bootstrap:用於叢集引導期間的 kubectl 操作。

    • eks:support-engineer:用於叢集管理操作。

  6. 選擇特定資源以檢視其相關詳細資訊。依預設,您可以在 Structured view (結構化檢視) 中檢視資訊。您可以在詳細資訊頁面的右上角,選擇 Raw view (原始檢視) 以查看資源的所有資訊。

kubectl

先決條件

您用於在叢集上列出 Kubernetes 資源的實體 (AWS Identity and Access Management (IAM) 或 OpenID Connect (OIDC)),必須經過 IAM 或您的 OIDC 身分提供者驗證。必須授予實體在叢集上針對 RoleClusterRoleRoleBindingClusterRoleBinding 資源使用 Kubernetes getlist 動詞的許可,以便與實體互相搭配使用。如需有關授予 IAM 實體叢集存取權的詳細資訊,請參閱授予 IAM 使用者和角色對 Kubernetes API 的存取權。如需有關授予經由您的 OIDC 提供商驗證之實體叢集存取權的詳細資訊,請參閱 透過外部 OIDC 提供商授予使用者存取 Kubernetes 的權限

使用 kubectl 檢視 Amazon EKS 所建立的身分

執行您要查看的資源類型的命令。所有前面帶有 eks 的傳回資源皆是由 Amazon EKS 所建立。除了命令輸出中傳回的資源之外,您的叢集上還存在下列特殊使用者身分,但在叢集的組態中不會顯示出來:

  • eks:cluster-bootstrap:用於叢集引導期間的 kubectl 操作。

  • eks:support-engineer:用於叢集管理操作。

ClusterRolesClusterRoles 設定範圍為您的叢集內,因此授予角色的任何許可皆會套用至叢集上任何 Kubernetes 命名空間中的資源。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes ClusterRoles

kubectl get clusterroles | grep eks

除了前面帶有 的輸出中傳回的 ClusterRoles 之外,還存在以下 ClusterRoles

若要查看 ClusterRole 的規格,請將以下命令中的 ek: k8s-metrics 取代為先前命令輸出中傳回的 ClusterRole。下列範例會傳回 eks:k8s-metrics ClusterRole 的規格。

kubectl describe clusterrole eks:k8s-metrics

範例輸出如下。

Name: eks:k8s-metrics Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- [/metrics] [] [get] endpoints [] [] [list] nodes [] [] [list] pods [] [] [list] deployments.apps [] [] [list]

ClusterRoleBindingsClusterRoleBindings 設定範圍為您的叢集內。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes ClusterRoleBindings

kubectl get clusterrolebindings | grep eks

除了輸出中傳回的 ClusterRoleBindings 之外,還存在以下 ClusterRoleBindings

若要查看 ClusterRoleBinding 的規格,請將以下命令中的 ek: k8s-metrics 取代為先前命令輸出中傳回的 ClusterRoleBinding。下列範例會傳回 eks:k8s-metrics ClusterRoleBinding 的規格。

kubectl describe clusterrolebinding eks:k8s-metrics

範例輸出如下。

Name: eks:k8s-metrics Labels: <none> Annotations: <none> Role: Kind: ClusterRole Name: eks:k8s-metrics Subjects: Kind Name Namespace ---- ---- --------- User eks:k8s-metrics

角色Roles 設定範圍為 Kubernetes 命名空間內。所有 Amazon EKS 所建立的 Roles 設定範圍皆為 kube-system 命名空間內。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes Roles

kubectl get roles -n kube-system | grep eks

若要查看 Role 的規格,請將以下命令中的 ek: k8s-metrics 取代為先前命令輸出中傳回之 Role 的名稱。下列範例會傳回 eks:k8s-metrics Role 的規格。

kubectl describe role eks:k8s-metrics -n kube-system

範例輸出如下。

Name: eks:k8s-metrics Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- daemonsets.apps [] [aws-node] [get] deployments.apps [] [vpc-resource-controller] [get]

RoleBindingsRoleBindings 設定範圍為 Kubernetes 命名空間內。所有 Amazon EKS 所建立的 RoleBindings 設定範圍皆為 kube-system 命名空間內。

下列命令會傳回叢集上由 Amazon EKS 建立的所有 Kubernetes RoleBindings

kubectl get rolebindings -n kube-system | grep eks

若要查看 RoleBinding 的規格,請將以下命令中的 ek: k8s-metrics 取代為先前命令輸出中傳回的 RoleBinding。下列範例會傳回 eks:k8s-metrics RoleBinding 的規格。

kubectl describe rolebinding eks:k8s-metrics -n kube-system

範例輸出如下。

Name: eks:k8s-metrics Labels: <none> Annotations: <none> Role: Kind: Role Name: eks:k8s-metrics Subjects: Kind Name Namespace ---- ---- --------- User eks:k8s-metrics