AWS IAM 角色清單

本頁面的表格列出建立預設 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:*:autoScalingGroupName/gke-* 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:*:autoScalingGroupName/gke-* 節點集區執行個體的自動調度群組 建立服務連結角色所需的權限
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:DeleteTags

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 金鑰