了解 EKS 自動模式中的身分和存取 - Amazon EKS

協助改進此頁面

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

了解 EKS 自動模式中的身分和存取

本主題描述使用 EKS 自動模式所需的 Identity and Access Management (IAM) 角色與許可。EKS 自動模式使用兩個主要 IAM 角色:叢集 IAM 角色和節點 IAM 角色。這些角色與 EKS Pod 身分識別和 EKS 存取項目協同工作,為您的 EKS 叢集提供全面的存取管理。

當您設定 EKS 自動模式時,需要設定這些具有特定許可的 IAM 角色,以允許 AWS 服務與您的叢集資源互動。這包括用於管理運算資源、儲存磁碟區、負載平衡器和聯網元件的許可。了解這些角色組態對於正確的叢集操作與安全性至關重要。

在 EKS 自動模式中,IAM AWS 角色會透過 EKS 存取項目自動映射至 Kubernetes 許可,無需手動設定 aws-auth ConfigMaps 或自訂繫結。當您建立新的自動模式叢集時,EKS 會使用存取項目自動建立對應的 Kubernetes 許可,確保 AWS 服務和叢集元件在 AWS 和 Kubernetes 授權系統內都具有適當的存取層級。這種自動化整合降低了設定複雜性,並有助於預防管理 EKS 叢集時常見的許可相關問題。

叢集 IAM 角色

叢集 IAM 角色是 AWS Identity and Access Management (IAM) 角色,由 Amazon EKS 用來管理 Kubernetes 叢集的許可。此角色授予 Amazon EKS 必要的許可,以代表您的叢集與其他 AWS 服務互動,並使用 EKS 存取項目自動設定 Kubernetes 許可。

  • 您必須將 AWS IAM 政策附加到此角色。

  • EKS 自動模式會使用 EKS 存取項目自動將 Kubernetes 許可附加到此角色。

  • 對於 EKS 自動模式,AWS 建議每個 AWS 帳戶建立單一的叢集 IAM 角色。

  • AWS 建議將此角色命名為 AmazonEKSAutoClusterRole

  • 此角色需要多個 AWS 服務的許可,以管理包括 EBS 磁碟區、Elastic Load Balancer 和 EC2 執行個體在內的資源。

  • 此角色的建議組態包括多個與 EKS 自動模式不同功能相關的 AWS 受管 IAM 政策。

    • AmazonEKSComputePolicy

    • AmazonEKSBlockStoragePolicy

    • AmazonEKSLoadBalancingPolicy

    • AmazonEKSNetworkingPolicy

    • AmazonEKSClusterPolicy

有關叢集 IAM 角色與 AWS 受管 IAM 政策的更多資訊,請參閱:

如需有關 Kubernetes 存取的詳細資訊,請參閱:

節點 IAM 角色

節點 IAM 角色是 AWS Identity and Access Management (IAM) 角色,由 Amazon EKS 用來管理 Kubernetes 叢集中工作節點的許可。此角色授予作為 Kubernetes 節點運行的 EC2 執行個體必要的許可,以與 AWS 服務和資源互動,並使用 EKS 存取項目自動設定 Kubernetes RBAC 許可。

  • 您必須將 AWS IAM 政策附加到此角色。

  • EKS 自動模式會使用 EKS 存取項目自動將 Kubernetes RBAC 許可附加到此角色。

  • AWS 建議將此角色命名為 AmazonEKSAutoNodeRole

  • 對於 EKS 自動模式,AWS 建議每個 AWS 帳戶建立單一的節點 IAM 角色。

  • 此角色具有有限的許可。關鍵許可包括擔任 Pod 身分識別角色,以及從 ECR 提取映像。

  • AWS 建議以下 AWS 受管 IAM 政策:

    • AmazonEKSWorkerNodeMinimalPolicy

    • AmazonEC2ContainerRegistryPullOnly

有關叢集 IAM 角色與 AWS 受管 IAM 政策的更多資訊,請參閱:

如需有關 Kubernetes 存取的詳細資訊,請參閱:

服務連結角色

Amazon EKS 針對某些操作使用服務連結角色 (SLR)。服務連結角色是直接連結至 Amazon EKS 的一種特殊 IAM 角色類型。服務連結角色由 Amazon EKS 預先定義,且內含該服務代您呼叫其他 AWS 服務所需的所有許可。

AWS 會自動建立和設定 SLR。您必須先刪除 SLR 的相關資源,才能刪除角色。如此可保護您的 Amazon EKS 資源,避免您不小心移除資源的存取許可。

SLR 政策授予 Amazon EKS 觀察和刪除核心基礎結構元件的許可:EC2 資源 (執行個體、網路介面、安全群組)、ELB 資源 (負載平衡器、目標群組)、CloudWatch 功能 (記錄和指標),以及具有「eks」字首的 IAM 角色。它還透過 VPC/託管區域關聯啟用私有端點聯網,並包含用於 EventBridge 監控和清理帶有 EKS 標籤之資源的許可。

如需詳細資訊,請參閱:

用於 EKS Auto 資源的自訂 AWS 標籤

預設情況下,與 EKS 自動模式相關的受管政策不允許將使用者定義的標籤應用到自動模式佈建的 AWS 資源。如果您想要將使用者定義的標籤應用到 AWS 資源,必須向叢集 IAM 角色附加額外許可,這些許可需具備在 AWS 資源上建立和修改標籤的足夠許可。以下是允許無限制標籤存取的政策範例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Compute", "Effect": "Allow", "Action": [ "ec2:CreateFleet", "ec2:RunInstances", "ec2:CreateLaunchTemplate" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" }, "StringLike": { "aws:RequestTag/eks:kubernetes-node-class-name": "*", "aws:RequestTag/eks:kubernetes-node-pool-name": "*" } } }, { "Sid": "Storage", "Effect": "Allow", "Action": [ "ec2:CreateVolume", "ec2:CreateSnapshot" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:snapshot/*" ], "Condition": { "StringEquals": { "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" } } }, { "Sid": "Networking", "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" }, "StringLike": { "aws:RequestTag/eks:kubernetes-cni-node-name": "*" } } }, { "Sid": "LoadBalancer", "Effect": "Allow", "Action": [ "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateRule", "ec2:CreateSecurityGroup" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" } } }, { "Sid": "ShieldProtection", "Effect": "Allow", "Action": [ "shield:CreateProtection" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" } } }, { "Sid": "ShieldTagResource", "Effect": "Allow", "Action": [ "shield:TagResource" ], "Resource": "arn:aws:shield::*:protection/*", "Condition": { "StringEquals": { "aws:RequestTag/eks:eks-cluster-name": "${aws:PrincipalTag/eks:eks-cluster-name}" } } } ] }

存取政策參考

如需 EKS 自動模式使用的 Kubernetes 許可的詳細資訊,請參閱 檢閱存取政策許可