Amazon EC2 Auto Scaling のアイデンティティベースのポリシーの例 - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 Auto Scaling のアイデンティティベースのポリシーの例

デフォルトでは、 のまったく新しいユーザー AWS アカウント には、何もするアクセス許可がありません。IAM 管理者は、Amazon IAM EC2 Auto Scaling Word アクションを実行するためのアクセス許可を IAM ID (ユーザーやロールなど) に付与する API ポリシーを作成して割り当てる必要があります。

これらの IAM ポリシードキュメントの例を使用して JSON ポリシーを作成する方法については、Word IAMユーザーガイドJSON タブでのポリシーの作成」を参照してください。

以下に示しているのは、アクセス許可ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*", "Resource": "*" }] }

このサンプルポリシーは、グループが purpose=testing タグを使用している場合に限り、Auto Scaling グループを作成、更新、削除する許可を付与します。Describe アクションはリソースレベルの許可をサポートしないため、条件のない別のステートメントで指定する必要があります。起動テンプレートを使用してインスタンスを起動するには、ユーザーに ec2:RunInstances アクセス許可も必要です。詳細については、「Auto Scaling グループで Amazon EC2 起動テンプレートの使用を制御する」を参照してください。

注記

独自のカスタム IAM ポリシーを作成して、IAM ID (ユーザーまたはロール) が Amazon EC2 Auto Scaling アクションを実行するためのアクセス許可を許可または拒否できます。これらのカスタムポリシーは、指定されたアクセス許可を必要とする IAM ID にアタッチできます。次の例では、いくつかの一般的ユースケースの許可を示します。

一部の Amazon EC2 Auto Scaling API アクションでは、アクションによって作成または変更できる特定の Auto Scaling グループをポリシーに含めることができます。個々の Auto Scaling グループ ARNs を指定することで、これらのアクションのターゲットリソースを制限できます。ただし、ベストプラクティスとして、特定のタグを持つ Auto Scaling グループに対するアクションを許可 (または拒否) するタグベースのポリシーを使用することをお勧めします。

作成できる Auto Scaling グループのサイズを制御する

次のポリシーでは、リクエスタが最小サイズとして 1 未満または最大サイズとして 10 より大きい値を指定しない限り、タグ environment=development を持つすべての Auto Scaling グループを作成および更新する許可が付与されます。可能な限りタグを使用して、アカウント内の Auto Scaling グループへのアクセスを制御できるようにします。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "development" }, "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }] }

または、タグを使用して Auto Scaling グループへのアクセスを制御していない場合は、ARNs を使用して、IAM ポリシーが適用される Auto Scaling グループを識別できます。

Auto Scaling グループには、次のARNがあります。

"Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/my-asg"

複数の ARNs をリストに囲んで指定することもできます。Resource 要素で Amazon EC2 Auto Scaling リソースのARNsを指定する方法の詳細については、「」を参照してくださいAmazon EC2 Auto Scaling のポリシーリソース

使用できるタグキーとタグ値を制御する

IAM ポリシーの条件を使用して、Auto Scaling グループに適用できるタグキーとタグ値を制御することもできます。リクエスタが特定のタグを指定する場合に限り、Auto Scaling グループを作成またはタグ付けする許可を付与するには、aws:RequestTag 条件キーを使用します。特定のタグキーのみ許可するには、aws:TagKeys 修飾子とともに ForAllValues 条件キーを使用します。

次のポリシーでは、リクエストでキー environment にタグを指定することをリクエスタに要求されます。"?*" 値は、タグキーに何らかの値を含めることを強制します。ワイルドカードを含める場合は、StringLike 条件演算子を使用する必要があります。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/environment": "?*" } } }] }

次のポリシーでは、リクエスタが Auto Scaling グループにタグ付けできるタグは purpose=webserver および cost-center=cc123 であることを指定し、purpose タグおよび cost-center タグのみが許可されます (他のタグは指定できません)。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "webserver", "aws:RequestTag/cost-center": "cc123" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["purpose", "cost-center"] } } }] }

次のポリシーでは、リクエスタがリクエストで少なくとも 1 つのタグを指定することを要求し、cost-center および owner キーのみ使用できます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["cost-center", "owner"] } } }] }
注記

条件においては、条件キーでは大文字と小文字が区別されず、条件値では大文字と小文字が区別されます。したがって、タグキーの大文字と小文字を区別するには、条件の値としてタグキーが指定される aws:TagKeys 条件キーを使用します。

削除できる Auto Scaling グループを制御する

次のポリシーは、グループにタグ environment=development が付けられている場合にのみ、Auto Scaling グループの削除を許可します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "development" } } }] }

または、条件キーを使用して Auto Scaling グループへのアクセスを制御していない場合は、代わりに Resource要素でリソースのARNsを指定してアクセスを制御できます。

次のポリシーは、APIが DeleteAutoScalingGroup で始まる Auto Scaling グループに対してのみ、Word アクションを使用するアクセス許可をユーザーに付与しますdevteam-

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/devteam-*" }] }

複数の ARNs をリストに囲んで指定することもできます。UUID を含めると、特定の Auto Scaling グループへのアクセスが許可されます。新しいグループの UUID は、同じ名前の削除されたグループの UUID とは異なります。

"Resource": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-1", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-2", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-3" ]

削除できるスケーリングポリシーを制御する

次のポリシーでは、DeletePolicy アクションを使用してスケーリングポリシーを削除する許可が付与されます。ただし、処理対象の Auto Scaling グループに environment=production タグがある場合、そのアクションを拒否します。可能な限りタグを使用して、アカウント内の Auto Scaling グループへのアクセスを制御できるようにします。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeletePolicy", "Resource": "*" }, { "Effect": "Deny", "Action": "autoscaling:DeletePolicy", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "production" } } }] }

インスタンスの更新アクションへのアクセスを制御する

次のポリシーは、処理対象の Auto Scaling グループにタグ environment=testing が付けられている場合にのみ、インスタンスの更新を開始、ロールバック、キャンセルするアクセス許可を付与します。Describe アクションはリソースレベルの許可をサポートしないため、条件のない別のステートメントで指定する必要があります。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:StartInstanceRefresh", "autoscaling:CancelInstanceRefresh", "autoscaling:RollbackInstanceRefresh" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "testing" } } }, { "Effect": "Allow", "Action": "autoscaling:DescribeInstanceRefreshes", "Resource": "*" }] }

StartInstanceRefresh 呼び出しで希望する設定を指定するには、次のような関連するアクセス許可が必要になる場合があります。

サービスにリンクされたロールの作成

Amazon EC2 Auto Scaling では、 のユーザーが Amazon EC2 Auto Scaling API アクションを初めて AWS アカウント 呼び出すときに、サービスにリンクされたロールを作成するためのアクセス許可が必要です。サービスにリンクされたロールがまだ存在しない場合、Amazon EC2 Auto Scaling はそれをアカウントに作成します。サービスにリンクされたロールは、Amazon EC2 Auto Scaling が AWS のサービス ユーザーに代わって他の を呼び出すことができるように、アクセス許可を付与します。

この自動ロール作成を成功させるには、ユーザーには iam:CreateServiceLinkedRole アクションへのアクセス許可が必要です。

"Action": "iam:CreateServiceLinkedRole"

以下は、ユーザーが Amazon EC2 Auto Scaling のサービスにリンクされたロールを Amazon EC2 Auto Scaling 用に作成できるようにするアクセス許可ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling", "Condition": { "StringLike": { "iam:AWSServiceName":"autoscaling.amazonaws.com" } } }] }

渡すことができるサービスにリンクされたロールを制御する ( PassRole を使用)

Auto Scaling グループを作成または更新し、リクエストでカスタムサフィックスサービスにリンクされたロールを指定するユーザーは、iam:PassRole 許可が必要です。

異なるサービスにリンクされたロールに異なるキーへのアクセスを許可する場合は、 アクセスiam:PassRole許可を使用して AWS KMS カスタマーマネージドキーのセキュリティを保護できます。組織の必要に応じて、開発チームに 1 つの キー、QA チームにもう 1 つの キー、そして財務チームにもう 1 つの キー を持つことができます。まず、AWSServiceRoleForAutoScaling_devteamkeyaccess という名前のサービスにリンクされたロールなど、必要なキーにアクセスできるサービスにリンクされたロールを作成します。次に、ユーザーやロールなどの IAM ID にポリシーをアタッチします。

次のポリシーは、名前が devteam- で始まる Auto Scaling グループに AWSServiceRoleForAutoScaling_devteamkeyaccess ロールを渡すための許可を付与します。Auto Scaling グループを作成する IAM ID が別のサービスにリンクされたロールを指定しようとすると、エラーが発生します。サービスにリンクされたロールを指定しない場合、代わりにデフォルトの AWSServiceRoleForAutoScaling ロールが使用されます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling_devteamkeyaccess", "Condition": { "StringEquals": { "iam:PassedToService": [ "autoscaling.amazonaws.com" ] }, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/devteam-*" ] } } }] }

カスタムサフィックス付きのサービスにリンクされたロールの詳細については、「Amazon EC2 Auto Scaling のサービスにリンクされたロール」を参照してください。