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

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

Amazon EKS 身分型政策範例

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

若要了解如何使用這些範例 JSON 政策文件來建立 IAM 身分型政策,請參閱在 JSON 標籤上建立政策中的IAM 使用者指南

建立 Amazon EKS 叢集時,IAM 實體使用者或角色 (例如聯合身分使用者,會自動授與system:masters權限存放在叢集的 RBAC 組態中的控制平面中。此 IAM 實體不會出現在 ConConfigMap 或任何其他可見的組態中,因此請務必追蹤最初建立叢集的 IAM 實體。若要授予其他 AWS 使用者或角色與叢集互動的能力,您必須在 Kubernetes 中編輯 aws-auth ConfigMap。

如需使用 ConfigMap 的詳細資訊,請參閱管理叢集的使用者或 IAM 角色

政策最佳實務

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

  • 開始使用 AWS 受管政策— 若要快速開始使用 Amazon EKS,請使用 AWS 受管政策來給予員工所需許可。這些政策已在您的帳戶中提供,並由 AWS 維護和更新。如需詳細資訊,請參閱「」AWS 受管政策開始使用許可中的IAM 使用者指南

  • 授予最低權限 – 當您建立自訂原則時,請只授予執行任務所需要的許可。以最小一組許可開始,然後依需要授予額外的許可。如此做比一開始使用太寬鬆的許可更為安全,然後稍後再嘗試將它們限縮。如需詳細資訊,請參閱「」授予最低權限中的IAM 使用者指南

  • 為敏感操作啟用 MFA – 為了增加安全,請要求IAM 使用者使用 Multi-Factor Authentication (MFA) 存取敏感資源或 API 操作。如需詳細資訊,請參閱「」AWS 中使用多重因素身份驗證 (MFA)中的IAM 使用者指南

  • 使用原則條件以增加安全 – 在切實可行的範圍中,請定義您身份類型原則允許存取資源的條件。例如,您可以撰寫條件,來指定必須發出各種請求的可允許 IP 地址範圍。您也可以撰寫條件,只在指定的日期或時間範圍內允許請求,或是要求使用 SSL 或 MFA。如需詳細資訊,請參閱「」IAM JSON 政策元素:Condition中的IAM 使用者指南

使用 Amazon EKS 主控台

若要存取 Amazon EKS 主控台,您必須擁有最低的一組許可。這些許可必須允許您列出和檢視您 AWS 帳戶中 Amazon EKS 資源的詳細資訊。如果您建立比最基本必要許可更嚴格的身分型政策,則對於具有該政策的實體 (IAM 使用者或角色) 而言,主控台就無法如預期運作。

重要

如果您看到載入命名空間時發生錯誤錯誤,或者在概觀工作負載索引標籤,請參閱在 AWS 管理主控台中無法查看工作負載或節點並收到錯誤解決問題。如果您無法解決問題,您仍然可以在組態索引標籤。

為了確保這些實體仍然可以使用 Amazon EKS 主控台,建立擁有唯一名稱的政策,例如AmazonEKSAdminPolicy。將政策連接到實體。如需詳細資訊,請參閱「」新增許可到使用者中的IAM 使用者指南

重要

下列範例原則可讓您檢視組態索引標籤。若要檢視節點工作負載,您需要額外的 IAM 權限以及 Kubernetes 權限。如需詳細資訊,請參閲 。檢閱 AWS 管理所有叢集的節點和工作負載範例政策。

{ "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 操作的動作就可以了。

檢閱 AWS 管理所有叢集的節點和工作負載

此範例會示範如何建立政策,允許使用者View 節點檢視工作負載適用於所有叢集。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:DescribeCluster", "eks:ListClusters", "eks:AccessKubernetesApi", "ssm:GetParameter", "eks:ListUpdates", "eks:ListFargateProfiles" ], "Resource": "*" } ] }
重要

原則必須附加至對應至 Kubernetes 使用者或群組aws-authConfigMap。使用者或群組必須為subjectrolebindingclusterrolebinding被綁定到一個庫伯內蒂斯roleclusterrole具有檢視 Kubernetes 資源的必要權限。如需新增 IAM 使用者或角色至aws-auth組態對應,請參閱管理叢集的使用者或 IAM 角色。若要建立角色和角色繫結,請參閱使用 RBAC 授權在 Kubernetes 文件中。您可以下載以下示例清單,它們創建一個clusterroleclusterrolebindingrolerolebinding

  • 檢視所有命名空間中的 Kubernetes 資源— 檔案中的群組名稱為eks-console-dashboard-full-access-group,該群組是您的 IAM 使用者或角色需要在aws-authConfigMap。如果需要,您可以在將群組套用至叢集之前變更群組名稱,然後將 IAM 使用者或角色對應至配置映射中的該群組。若要下載檔案,請為您叢集所在的區域選取適當的連結。

  • 檢視特定命名空間中的 Kubernetes 資源— 此檔案中的命名空間為default,因此如果您想指定不同的命名空間,請在將其應用到叢集之前編輯該檔案。檔案中的群組名稱為eks-console-dashboard-restricted-access-group,該群組是您的 IAM 使用者或角色需要在aws-authConfigMap。如果需要,您可以在將群組套用至叢集之前變更群組名稱,然後將 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": "*" } ] }

更新 Kubernetes 叢集

此範例示範如何建立政策,讓使用者在任何區域為帳戶更新 Kubernetes 版本的任何 dev 叢集。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:UpdateClusterVersion", "Resource": "arn:aws:eks:*:<111122223333>:cluster/<dev>" } ] }

所有叢集的清單或描述

此範例示範如何建立政策,授予使用者列出或描述所有叢集的唯讀存取權。帳戶必須能夠使用update-kubeconfigAWS CLI 命令。

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