Amazon EKS 身分型政策範例 - Amazon EKS

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

Amazon EKS 身分型政策範例

根據預設,IAM 使用者和角色沒有建立或修改 Amazon EKS 資源的許可。他們也無法使用 AWS Management Console、 AWS CLI 或 AWS API 執行任務。IAM 管理員必須建立 IAM 政策,授予使用者和角色許可,以對所需的指定資源執行特定 API 操作。然後,管理員必須將這些政策連接到需要這些許可的 IAM 使用者或群組。

若要了解如何使用這些範例 IAM 政策文件建立以 Word 身分為基礎的JSON政策,請參閱 Word 使用者指南中的在 JSON 索引標籤上建立政策IAM

當您建立 Amazon EKS 叢集時,會自動在 Amazon IAM 控制平面中,授予叢集角色型存取控制 (Word) 組態中建立叢集的 Word 主體system:masters許可。RBAC EKS此主體不會出現在任何可見的組態中,因此請務必追蹤最初建立叢集的主體。若要授予其他 IAM 主體與您的叢集互動的能力,請在 aws-auth ConfigMap內編輯 Kubernetes 並建立 Kubernetes rolebinding clusterrolebinding或使用group您在 中指定的 名稱aws-auth ConfigMap

如需使用 ConfigMap 的詳細資訊,請參閱 授予 IAM 使用者和角色對 Kubernetes APIs 的存取權

政策最佳實務

身分型政策會判斷是否有人可以在您的帳戶中建立、存取或刪除 Amazon EKS 資源。這些動作可能會為 AWS 您的帳戶產生成本。當您建立或編輯身分型政策時,請遵循下列準則及建議事項:

  • 開始使用 AWS 受管政策並邁向最低權限許可 – 若要開始將許可授予您的使用者和工作負載,請使用 AWS 受管政策,將許可授予許多常見使用案例。它們可在您的帳戶中使用 AWS 。建議您定義特定於使用案例 AWS 的客戶受管政策,以進一步減少許可。如需詳細資訊,請參閱 IAM 使用者指南中的 AWS 受管政策AWS 任務功能的受管政策

  • 套用最低權限許可 – 當您使用 IAM 政策設定許可時, 只會授予執行任務所需的許可。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低權限許可。如需使用 IAM 套用許可的詳細資訊,請參閱 IAM 使用者指南中的 Word 中的政策和許可IAM

  • 使用 IAM 政策中的條件來進一步限制存取:您可以將條件新增至政策,以限制對動作和資源的存取。例如,您可以撰寫政策條件來指定所有請求都必須使用 SSL 傳送。如果透過特定服務使用服務動作,例如 AWS CloudFormation,您也可以使用條件來授予存取 AWS 服務動作的權限。如需詳細資訊,請參閱 JSONIAM 使用者指南中的 Word 政策元素:條件IAM

  • 使用 IAM Access Analyzer 驗證您的 IAM 政策,以確保安全且功能許可 – IAM Access Analyzer 會驗證新的和現有的政策,以便政策遵循 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供超過 100 個政策檢查和可操作的建議,以協助您撰寫安全且實用的政策。如需詳細資訊,請參閱 IAM 使用者指南中的 Word Access Analyzer 政策驗證IAM

  • 需要多重要素驗證 (MFA) – 如果您有需要 IAM 使用者或 AWS 帳戶中根使用者的案例,請開啟 MFA 以增加安全性。若要在呼叫 MFA 操作時要求 API,請將 MFA 條件新增至您的政策。如需詳細資訊,請參閱 MFA 使用者指南中的設定受 APIWord 保護的 Word 存取IAM

如需 IAM 最佳實務的詳細資訊,請參閱 Word 使用者指南IAM中的 Word 中的安全最佳實務IAM

使用 Amazon EKS 主控台

若要存取 Amazon EKS 主控台,IAM 主體必須具有一組最低許可。這些許可允許委託人列出和檢視您 AWS 帳戶中 Amazon EKS 資源的詳細資訊。如果您建立比最低必要許可更嚴格的身分型政策,則主控台將無法對連接該政策的主體如預期般運作。

若要確保您的 IAM 主體仍然可以使用 Amazon EKS 主控台,請使用您自己的唯一名稱建立政策,例如 AmazonEKSAdminPolicy。將政策連接至主體。如需詳細資訊,請參閱 IAM 使用者指南中的新增和移除 Word 身分許可IAM

重要

下列範例政策可讓主體檢視主控台內的組態標籤上的資訊。若要檢視 中概觀和資源索引標籤的資訊 AWS Management Console,委託人也需要 Kubernetes 許可。如需詳細資訊,請參閱所需的許可

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ] }

對於僅對 AWS CLI 或 AWS API 進行呼叫的主體,您不需要允許最低主控台許可。相反地,僅允許存取與您嘗試執行的 API 操作相符的動作。

允許 IAM 使用者檢視自己的許可

此範例示範如何建立政策,允許 IAM 使用者檢視連接至其使用者身分的內嵌和受管政策。此政策包含在主控台上完成此動作或使用 AWS CLI 或 AWS API 以程式設計方式完成此動作的許可。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws: iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

建立 KubernetesAWS Cloud 上的 叢集

此範例政策包含建立名為 的 Amazon EKS 叢集所需的最低許可 my-cluster 在 中 us-west-2 AWS 區域。您可以將 AWS 區域取代為您要在其中建立叢集 AWS 的區域。如果您看到警告,指出政策中的 動作不支援資源層級許可,並需要在 All resources中選擇 AWS Management Console,則可以安全地忽略它。如果您的 帳戶已有 AWSServiceRoleForAmazonEKS 角色,您可以從政策中移除iam:CreateServiceLinkedRole動作。如果您已在帳戶中建立 Amazon EKS 叢集,則除非您刪除,否則此角色已存在。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:CreateCluster", "Resource": "arn:aws: eks:us-west-2:111122223333:cluster/my-cluster" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws: iam::111122223333:role/aws-service-role/eks.amazonaws.com/AWSServiceRoleForAmazonEKS", "Condition": { "ForAnyValue:StringEquals": { "iam:AWSServiceName": "eks" } } }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws: iam::111122223333:role/cluster-role-name" } ] }

建立本機 Kubernetes Outpost 上的叢集

此範例政策包含建立名為 的 Amazon EKS 本機叢集所需的最低許可 my-cluster 在 中的 Outpost 上 us-west-2 AWS 區域。您可以將 AWS 區域取代為您要在其中建立叢集 AWS 的區域。如果您看到警告,指出政策中的 動作不支援資源層級許可,並需要在 All resources中選擇 AWS Management Console,則可以安全地忽略它。如果您的帳戶已具有 AWSServiceRoleForAmazonEKSLocalOutpost 角色,您可以移除來自政策的 iam:CreateServiceLinkedRole 動作。如果您曾經在帳戶中的 Outpost 上建立 Amazon EKS 本機叢集,則除非您刪除該角色,否則此角色已存在。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:CreateCluster", "Resource": "arn:aws: eks:us-west-2:111122223333:cluster/my-cluster" }, { "Action": [ "ec2:DescribeSubnets", "ec2:DescribeVpcs", "iam:GetRole" ], "Resource": "*", "Effect": "Allow" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws: iam::111122223333:role/aws-service-role/outposts.eks-local.amazonaws.com/AWSServiceRoleForAmazonEKSLocalOutpost" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "iam:ListAttachedRolePolicies" ] "Resource": "arn:aws: iam::111122223333:role/cluster-role-name" }, { "Action": [ "iam:CreateInstanceProfile", "iam:TagInstanceProfile", "iam:AddRoleToInstanceProfile", "iam:GetInstanceProfile", "iam:DeleteInstanceProfile", "iam:RemoveRoleFromInstanceProfile" ], "Resource": "arn:aws: iam::*:instance-profile/eks-local-*", "Effect": "Allow" }, ] }

更新 () Kubernetes 叢集

此範例政策包含更新名為 的叢集所需的最低許可 my-cluster 在 us-west-2 AWS Region 中。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:UpdateClusterVersion", "Resource": "arn:aws: eks:us-west-2:111122223333:cluster/my-cluster" } ] }

所有叢集的清單或描述

此範例政策包含列出及說明帳戶中所有叢集所需的最低許可。IAM 主體必須能夠列出和描述叢集,才能使用 AWS CLI update-kubeconfig 命令。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ] }