本頁面的表格列出建立預設 AWS IAM 角色時使用的所有權限。如要使用預設權限建立這些政策,請參閱「建立 AWS IAM 角色」。
- GKE Multi-cloud API 服務代理人角色
- GKE Multi-Cloud API 會使用這個 AWS IAM 角色,透過 AWS API 管理資源。這個角色是由 Google 代管的服務帳戶 (又稱服務代理程式) 使用。
- 控制層 AWS IAM 角色
- 叢集控制層會使用這個角色來控制節點集區。
- 節點集區 AWS IAM 角色
- 控制層會使用這個角色建立節點集區 VM。
您可以根據貴機構的需求,為 GKE on AWS 建立自訂 AWS IAM 政策,以便管理叢集。這些政策將取代預設版本。然後將這些政策套用至 AWS IAM 角色,並在建立叢集時提供這些角色。
如要進一步瞭解各個角色的用途,請參閱「適用於 GKE on AWS 的 AWS IAM 角色」。
如要建立這些政策,請選擇要限制資源的層級。舉例來說,您可以使用 VPC 的 Amazon 資源名稱 (ARN),將政策限制在特定 AWS VPC。詳情請參閱「使用政策控管 AWS 資源存取權」。
GKE Multi-Cloud 服務代理程式的 IAM 政策
資源類型 | ARN | 權限不足 | 目的 | 參考資料 |
---|---|---|---|---|
安全性群組 | arn:aws:ec2:*:*:security-group/sg-* |
ec2:DescribeSecurityGroups (建立、更新、刪除)ec2:CreateSecurityGroup (建立)ec2:CreateTags (建立)ec2:RevokeSecurityGroupEgress (建立)ec2:DeleteSecurityGroup (刪除) |
控制層安全群組 | |
安全性群組 | 節點集區安全群組 | |||
安全性群組規則 | arn:aws:ec2:*:*:security-group-rule/sgr-* |
ec2:AuthorizeSecurityGroupEgress (建立)ec2:RevokeSecurityGroupEgress (刪除)ec2:CreateTags (建立) |
控制層輸出安全性群組規則 | |
安全性群組規則 | ec2:AuthorizeSecurityGroupIngress (建立)ec2:RevokeSecurityGroupIngress (刪除)ec2:CreateTags (建立) |
控制層輸入安全性群組規則 | ||
安全性群組規則 | ec2:AuthorizeSecurityGroupEgress (建立)ec2:RevokeSecurityGroupEgress (刪除)ec2:CreateTags (建立) |
控制層輸出安全性群組規則 | ||
安全性群組規則 | ec2:AuthorizeSecurityGroupIngress (建立)ec2:RevokeSecurityGroupIngress (刪除)ec2:CreateTags (建立) |
控制層輸入安全性群組規則 | ||
網路負載平衡器 | arn:aws:elasticloadbalancing:*:*:loadbalancer/net/gke-* |
elasticloadbalancing:DescribeLoadBalancers (建立、刪除) elasticloadbalancing:CreateLoadBalancer (建立)ec2:CreateSecurityGroup (建立)ec2:DescribeAccountAttributes (建立)ec2:DescribeInternetGateways (建立)ec2:DescribeSecurityGroups (建立)ec2:DescribeSubnets (建立)ec2:DescribeVpcs (建立)iam:CreateServiceLinkedRole (建立)elasticloadbalancing:DeleteLoadBalancer (刪除) |
Kubernetes API 伺服器負載平衡器 | Elastic Load Balancing API 權限 |
目標群組 | arn:aws:elasticloadbalancing:*:*:targetgroup/gke-* |
elasticloadbalancing:DescribeTargetGroups (建立、更新、刪除)elasticloadbalancing:DescribeTargetHealth (建立、更新)elasticloadbalancing:CreateTargetGroup (建立)elasticloadbalancing:ModifyTargetGroupAttributes (建立)ec2:DescribeInternetGateways (建立)ec2:DescribeVpcs (建立)elasticloadbalancing:DeleteTargetGroup (刪除) |
https 的目標群組 | Elastic Load Balancing API 權限 |
目標群組 | 適用於 Konnectivity 代理程式的 HTTPS 目標群組 | |||
事件監聽器 | arn:aws:elasticloadbalancing:*:*:listener/net/gke-* |
elasticloadbalancing:CreateListener (建立)elasticloadbalancing:DeleteListener (刪除)
elasticloadbalancing:DescribeListeners (刪除)elasticloadbalancing:DeleteListener (刪除) |
https 的接聽器 | |
事件監聽器 | konnectivity 代理程式的 https 監聽器 | |||
磁碟區 | arn:aws:ec2:*:*:volume/vol-* |
ec2:CreateVolume (建立)ec2:CreateTags (建立)ec2:DeleteVolume (刪除) |
etcd 磁碟區 | |
網路介面 | arn:aws:ec2:*:*:network-interface/eni-* |
ec2:DescribeNetworkInterfaces 更新ec2:CreateNetworkInterface (建立)ec2:CreateTags (建立)ec2:ModifyNetworkInterfaceAttribute (更新)ec2:DeleteNetworkInterface (刪除) |
etcd NIC | |
啟動範本 | arn:aws:ec2:*:*:launch-template/lt-* |
ec2:CreateLaunchTemplate (建立、更新)ec2:CreateTags (建立、更新)ec2:DeleteLaunchTemplate (刪除) |
控制層執行個體啟動範本 | |
啟動範本 | 節點集區執行個體的啟動範本 | |||
自動調度資源群組 | arn:aws:autoscaling:*:*:autoScalingGroup:*: |
autoscaling:DescribeAutoScalingGroups (建立、更新、刪除)autoscaling:CreateAutoScalingGroup (建立)autoscaling:CreateOrUpdateTags (更新)autoscaling:UpdateAutoScalingGroup (更新、刪除)autoscaling:TerminateInstanceInAutoScalingGroup (更新)autoscaling:DeleteTags 更新、(刪除)autoscaling:DeleteAutoScalingGroup (刪除)iam:CreateServiceLinkedRole (建立)ec2:RunInstances (建立)iam:PassRole (建立) |
控制層執行個體的自動調度群組 | Amazon EC2 Auto Scaling 的必要 API 權限 |
自動調度資源群組 | arn:aws:autoscaling:*:*:autoScalingGroup:*: |
節點集區執行個體的自動調度群組 | 建立服務連結角色所需的權限 | |
EC2 金鑰組 | ec2:DescribeKeyPairs (建立) |
確認用於登入叢集機器的 EC2 金鑰組存在。 | ||
子網路 | ec2:DescribeSubnets (建立) |
存取虛擬私有雲中的其他子網路 | ||
虛擬私有雲 | ec2:DescribeVpcs (建立) |
AWS 虛擬私有雲的相關資訊 | ||
EC2 控制台輸出內容 | ec2:GetConsoleOutput (建立、更新) |
檢查控制台記錄檔是否有錯誤 | ||
KMS 金鑰 | For more information on KMS key policies for GKE on AWS
Creating KMS keys with specific permissions
|
控制層角色的 IAM 政策
目的 | 權限不足 | 參考資料 |
---|---|---|
叢集自動調度器 | autoscaling:DescribeAutoScalingGroups (建立、更新)autoscaling:DescribeAutoScalingInstances (建立、更新)autoscaling:DescribeLaunchConfigurations (建立、更新)autoscaling:DescribeTags (建立、更新)ec2:DescribeInstanceTypes (建立、更新)ec2:DescribeLaunchTemplateVersions (建立、更新)autoscaling:SetDesiredCapacity autoscaling:TerminateInstanceInAutoScalingGroup |
https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md |
cloud-provider-aws | autoscaling:DescribeAutoScalingGroups autoscaling:DescribeLaunchConfigurations autoscaling:DescribeTags (建立)ec2:DescribeInstances (建立)ec2:DescribeRegions ec2:DescribeRouteTables ec2:DescribeSecurityGroups ec2:DescribeSubnets ec2:DescribeVolumes ec2:CreateSecurityGroup ec2:CreateTags ec2:CreateVolume ec2:ModifyInstanceAttribute ec2:ModifyVolume ec2:AttachVolume (建立)ec2:AuthorizeSecurityGroupIngress ec2:CreateRoute ec2:DeleteRoute ec2:DeleteSecurityGroup ec2:DeleteVolume ec2:DetachVolume ec2:RevokeSecurityGroupIngress ec2:DescribeVpcs elasticloadbalancing:AddTags elasticloadbalancing:AttachLoadBalancerToSubnets elasticloadbalancing:ApplySecurityGroupsToLoadBalancer elasticloadbalancing:CreateLoadBalancer elasticloadbalancing:CreateLoadBalancerPolicy elasticloadbalancing:CreateLoadBalancerListeners elasticloadbalancing:ConfigureHealthCheck elasticloadbalancing:DeleteLoadBalancer elasticloadbalancing:DeleteLoadBalancerListeners elasticloadbalancing:DescribeLoadBalancers elasticloadbalancing:DescribeLoadBalancerAttributes elasticloadbalancing:DetachLoadBalancerFromSubnets elasticloadbalancing:DeregisterInstancesFromLoadBalancer elasticloadbalancing:ModifyLoadBalancerAttributes elasticloadbalancing:RegisterInstancesWithLoadBalancer elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer elasticloadbalancing:AddTags elasticloadbalancing:CreateListener elasticloadbalancing:CreateTargetGroup elasticloadbalancing:DeleteListener elasticloadbalancing:DeleteTargetGroup elasticloadbalancing:DescribeListeners elasticloadbalancing:DescribeLoadBalancerPolicies elasticloadbalancing:DescribeTargetGroups elasticloadbalancing:DescribeTargetHealth elasticloadbalancing:ModifyListener elasticloadbalancing:ModifyTargetGroup elasticloadbalancing:RegisterTargets elasticloadbalancing:DeregisterTargets elasticloadbalancing:SetLoadBalancerPoliciesOfListener iam:CreateServiceLinkedRole kms:DescribeKey |
https://github.com/kubernetes/cloud-provider-aws/blob/master/docs/prerequisites.md |
建立負載平衡器 | elasticloadbalancing:CreateLoadBalancer ec2:DescribeAccountAttributes ec2:DescribeInternetGateways ec2:DescribeSecurityGroups ec2:DescribeSubnets ec2:DescribeVpcs |
https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/elb-api-permissions.html |
aws-ebs-csi-driver | ec2:DescribeVolumesModifications
ec2:DescribeAvailabilityZones |
https://github.com/kubernetes-sigs/aws-ebs-csi-driver/tree/master/docs#set-up-driver-permission |
gke-aws-controller-manager | ec2:DescribeDhcpOptions ec2:DescribeInstances ec2:DescribeVpcs |
|
elasticloadbalancing:ModifyTargetGroupAttributes |
||
ec2:DescribeSnapshots ec2:CreateSnapshot ec2:DeleteSnapshot |
CSI 快照工具 | Kubernetes 外部快照器 |
GKE on AWS 節點代理程式 將 NIC 附加至 etcd |
ec2:AttachNetworkInterface (建立、更新) |
|
從 Secrets Manager 讀取 Proxy 設定 | secretsmanager:GetSecretValue (建立、更新) |
|
與 KMS 金鑰互動 | kms:Encrypt (建立、更新)kms:Decrypt (建立、更新)kms:CreateGrant (建立、更新) |
節點集區角色的 IAM 政策
目的 | 權限不足 | 參考資料 |
---|---|---|
從 Secrets Manager 讀取 Proxy 設定 | secretsmanager:GetSecretValue (建立、更新) |
|
用於解密節點集區設定加密的 KMS 金鑰 | kms:Decrypt (建立、更新) |
建立 AWS KMS 金鑰 |