このページの表には、デフォルトの 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 Resource Name(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-server ロードバランサ | 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 自動スケーリングに必要な API 権限 |
| 自動スケーリング グループ | arn:aws:autoscaling:*:*:autoScalingGroup:*: |
ノードプール インスタンスの自動スケーリング グループ | サービスリンク ロールの作成に必要な権限 | |
| EC2 鍵ペア | ec2:DescribeKeyPairs(作成) |
クラスタマシンへのログインに使用される EC2 認証鍵ペアが存在することを確認する。 | ||
| サブネット | ec2:DescribeSubnets(作成) |
VPC で追加のサブネットにアクセスする | ||
| VPC | ec2:DescribeVpcs(作成) |
AWS VPC に関する情報 | ||
| 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:SetDesiredCapacityautoscaling:TerminateInstanceInAutoScalingGroup |
https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md |
| cloud-provider-aws | autoscaling:DescribeAutoScalingGroupsautoscaling:DescribeLaunchConfigurationsautoscaling:DescribeTags(作成)ec2:DescribeInstances(作成)ec2:DescribeRegionsec2:DescribeRouteTablesec2:DescribeSecurityGroupsec2:DescribeSubnetsec2:DescribeVolumesec2:CreateSecurityGroupec2:CreateTagsec2:CreateVolumeec2:ModifyInstanceAttributeec2:ModifyVolumeec2:AttachVolume(作成)ec2:AuthorizeSecurityGroupIngressec2:CreateRouteec2:DeleteRouteec2:DeleteSecurityGroupec2:DeleteVolumeec2:DetachVolumeec2:RevokeSecurityGroupIngressec2:DescribeVpcselasticloadbalancing:AddTagselasticloadbalancing:AttachLoadBalancerToSubnetselasticloadbalancing:ApplySecurityGroupsToLoadBalancerelasticloadbalancing:CreateLoadBalancerelasticloadbalancing:CreateLoadBalancerPolicyelasticloadbalancing:CreateLoadBalancerListenerselasticloadbalancing:ConfigureHealthCheckelasticloadbalancing:DeleteLoadBalancerelasticloadbalancing:DeleteLoadBalancerListenerselasticloadbalancing:DescribeLoadBalancerselasticloadbalancing:DescribeLoadBalancerAttributeselasticloadbalancing:DetachLoadBalancerFromSubnetselasticloadbalancing:DeregisterInstancesFromLoadBalancerelasticloadbalancing:ModifyLoadBalancerAttributeselasticloadbalancing:RegisterInstancesWithLoadBalancerelasticloadbalancing:SetLoadBalancerPoliciesForBackendServerelasticloadbalancing:AddTagselasticloadbalancing:CreateListenerelasticloadbalancing:CreateTargetGroupelasticloadbalancing:DeleteListenerelasticloadbalancing:DeleteTargetGroupelasticloadbalancing:DescribeListenerselasticloadbalancing:DescribeLoadBalancerPolicieselasticloadbalancing:DescribeTargetGroupselasticloadbalancing:DescribeTargetHealthelasticloadbalancing:ModifyListenerelasticloadbalancing:ModifyTargetGroupelasticloadbalancing:RegisterTargetselasticloadbalancing:DeregisterTargetselasticloadbalancing:SetLoadBalancerPoliciesOfListeneriam:CreateServiceLinkedRolekms:DescribeKey |
https://github.com/kubernetes/cloud-provider-aws/blob/master/docs/prerequisites.md |
| ロードバランサを作成する | elasticloadbalancing:CreateLoadBalancerec2:DescribeAccountAttributesec2:DescribeInternetGatewaysec2:DescribeSecurityGroupsec2:DescribeSubnetsec2: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:DescribeDhcpOptionsec2:DescribeInstancesec2:DescribeVpcs |
|
elasticloadbalancing:ModifyTargetGroupAttributes |
||
ec2:DescribeSnapshotsec2:CreateSnapshotec2:DeleteSnapshot |
csi-snapshotter | Kubernetes external-snapshotter |
| GKE on AWS のノード エージェント etcd に NIC を接続する |
ec2:AttachNetworkInterface(作成、更新) |
|
| Secret Manager からプロキシ構成を読み取る | secretsmanager:GetSecretValue(作成、更新) |
|
| KMS 鍵を操作する | kms:Encrypt(作成、更新)kms:Decrypt(作成、更新)kms:CreateGrant(作成、更新) |
ノードプール ロールの IAM ポリシー
| 目的 | 必要な権限 | リファレンス |
|---|---|---|
| Secret Manager からプロキシ構成を読み取る | secretsmanager:GetSecretValue(作成、更新) |
|
| ノードプール構成の復号に使用する KMS 鍵 | kms:Decrypt(作成、更新) |
AWS KMS 鍵を作成する |