Amazon EC2 Auto Scaling アイデンティティベースのポリシーの例 - Amazon EC2 Auto Scaling (日本語)

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

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

デフォルトでは、IAM ユーザーおよびロールには、Amazon EC2 Auto Scaling リソースを作成または変更するアクセス許可がありません。また、AWS マネジメントコンソール、AWS CLI、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行するアクセス許可をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらのアクセス権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチします。

JSON ポリシードキュメントのこれらの例を使用して、IAM アイデンティティベースのポリシーを作成する方法については、https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor の「JSON タブでのポリシーの作成IAM ユーザーガイド」を参照してください。

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

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

このサンプルポリシーでは、Auto Scaling グループで environment=test. タグを使用している場合に限り、このグループを作成、変更、削除するアクセス許可をユーザーに付与します。起動設定はタグをサポートしておらず、Describe アクションはリソースレベルのアクセス権限をサポートしていないため、これらは条件なしで別のステートメントで指定する必要があります。IAM ポリシーステートメント内の要素の詳細については、「Amazon EC2 Auto Scaling アイデンティティベースのポリシー.」を参照してください。

ポリシーのベストプラクティス

アイデンティティベースのポリシーは非常に強力です。アカウント内で、Amazon EC2 Auto Scaling リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。アイデンティティベースのポリシーを作成または編集するときは、以下のガイドラインと推奨事項に従います。

  • AWS 管理ポリシーの使用を開始する – Amazon EC2 Auto Scaling の使用をすばやく開始するには、AWS 管理ポリシーを使用して、従業員に必要なアクセス許可を付与します。これらのポリシーはアカウントですでに有効になっており、AWS によって管理および更新されています。詳細については、『IAM ユーザーガイド』の「AWS 管理ポリシーを使用したアクセス許可の使用開始」を参照してください。

  • 最小権限を付与する – カスタムポリシーを作成するときは、タスクの実行に必要なアクセス許可のみを付与します。最小限のアクセス権限から開始し、必要に応じて追加のアクセス権限を付与します。この方法は、寛容なアクセス権限で始め、後でそれらを強化しようとするよりも安全です。詳細については、「最小権限を付与する」 (IAM ユーザーガイド) を参照してください。

  • 機密性の高いオペレーションのために MFA を有効にする – 追加のセキュリティとして、機密性の高いリソースや API オペレーションにアクセスする際に Multi-Factor Authentication (MFA) を使用することを IAM ユーザーに要求します。詳細については、『IAM ユーザーガイド』の「AWS のデバイスに多要素認証 (MFA) を使用」を参照してください。

  • 追加のセキュリティとしてポリシー条件を使用する – 実行可能な範囲内で、アイデンティティベースのポリシーでリソースへのアクセスを許可する条件を定義します。たとえば、要求が発生しなければならない許容 IP アドレスの範囲を指定するための条件を記述できます。指定された日付または時間範囲内でのみリクエストを許可する条件を書くことも、SSL や MFA の使用を要求することもできます。ポリシー要素の詳細については、『IAM ユーザーガイド』の「IAM JSON ポリシー要素: 条件」を参照してください。

注記

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

事前定義の AWS 管理ポリシー

AWS によって作成された管理ポリシーは、一般的ユースケースに必要なアクセス権限を付与します。これらのポリシーは、必要なアクセス権に基づき、IAM ユーザーにアタッチできます。各ポリシーは のすべてまたは一部の API アクションへのアクセスを提供します。Amazon EC2 Auto Scaling.

に対する AWS 管理ポリシーを次に示します。Amazon EC2 Auto Scaling:

  • AutoScalingConsoleFullAccess —Amazon EC2 Auto Scaling を使用して AWS マネジメントコンソール. へのフルアクセスを付与します。

  • AutoScalingConsoleReadOnlyAccess —Amazon EC2 Auto Scaling を使用して AWS マネジメントコンソール. への読み取り専用アクセスを付与します。

  • AutoScalingFullAccess — へのフルアクセスを付与します。Amazon EC2 Auto Scaling

  • AutoScalingReadOnlyAccess — への読み取り専用アクセスを付与します。Amazon EC2 Auto Scaling

AmazonEC2FullAccess ポリシーを使用して、すべての Amazon EC2 リソースと関連サービス (Amazon EC2 Auto Scaling、CloudWatch、Elastic Load Balancing. など) へのフルアクセスを許可することもできます。

お客様が管理するポリシーの例

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

初めてポリシーを作成する場合は、まずアカウントに IAM ユーザーを作成し、このユーザーにポリシーをアタッチすることをお勧めします。コンソールを使用して、ユーザーにポリシーをアタッチしながら各ポリシーの効果を確認できます。

Auto Scaling グループを作成および更新する場合、アクションによっては、他の特定のアクションを実行する必要があります。これらの他のアクションは、Action ポリシーステートメントの IAM 要素で指定できます。たとえば、ユーザーに付与するアクセス権によっては、Elastic Load Balancing、CloudWatch、Amazon SNS の API アクションを追加する必要があります。

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

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=webservercost-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 リソースへのアクセスを制御する

IAM ポリシーにタグ情報を指定し、Auto Scaling 条件キーを使用して autoscaling:ResourceTag グループにアタッチしたタグに基づいてアクセスを制御することもできます。

グループおよびスケーリングポリシーの作成と管理へのアクセスを制御するAuto Scaling

次のポリシーでは、Amazon EC2 Auto Scaling グループにタグ Scaling がある限り、名前に文字列 Auto Scaling を含むすべての purpose=webserver. アクションを使用するアクセス許可をユーザーに付与します。Describe アクションはリソースレベルのアクセス権限をサポートしないため、条件のない別のステートメントでそれらのアクセス権限を指定する必要があります。

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

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

次のポリシーでは、autoscaling:DeletePolicy アクションを使用してスケーリングポリシーを削除することをユーザーに許可します。ただし、処理対象の Auto Scaling グループに environment=production. タグがある場合、そのアクションを拒否します。

{ "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

Amazon EC2 Auto Scaling では、作成できる Auto Scaling グループのサイズを制限できます。次のポリシーでは、最小サイズとして 1 未満または最大サイズとして 10 より大きい値を指定しない限り、Auto Scaling タグを持つすべての allowed=true グループを作成および更新するアクセス許可をユーザーに付与します。

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

どの IAM ロールを渡せるかを制御する (PassRole を使用)

ユーザーがインスタンスプロファイル (Amazon EC2 Auto Scaling ロールのコンテナ) を指定する IAM リソースを作成するには、次の例に示すように、ロールを渡すことをユーザーに許可するステートメントが含まれたポリシーを使用する必要があります。ARN を指定することにより、名前が で始まるロールのみを渡すアクセス許可をポリシーでユーザーに付与できます。qateam-. 詳細については、「」を参照してください。IAM インスタンスで実行されるアプリケーションの Amazon EC2 ロール.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/qateam-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com" ] } } } ] }

グループの容量の変更をユーザーに許可するAuto Scaling

次のポリシーでは、API アクションとして SetDesiredCapacity および TerminateInstanceInAutoScalingGroup を使用するアクセス許可をユーザーに付与します。Resource 要素は、ワイルドカード (*) を使用して、ユーザーが任意の Auto Scaling グループの容量を変更できることを指定します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup" ], "Resource": "*" }] }

Auto Scaling グループへのアクセス制御にタグを使用しない場合は、前のステートメントを調整して、名前が Auto Scaling で始まる devteam-. グループの容量のみを変更するアクセス許可をユーザーに付与できます。ARN 値の指定については、「」を参照してください。Resources.

"Resource": "arn:aws:autoscaling:region:123456789012:autoScalingGroup:*:autoScalingGroupName/devteam-*"

複数の ARN をリストに含めて指定することもできます。UUID を含めることで、特定の Auto Scaling グループに確実にアクセス権が付与されます。新しいグループの UUID は、削除された同じ名前のグループの UUID とは異なります。

"Resource": [ "arn:aws:autoscaling:region:123456789012:autoScalingGroup:7fe02b8e-7442-4c9e-8c8e-85fa99e9b5d9:autoScalingGroupName/devteam-1", "arn:aws:autoscaling:region:123456789012:autoScalingGroup:9d8e8ea4-22e1-44c7-a14d-520f8518c2b9:autoScalingGroupName/devteam-2", "arn:aws:autoscaling:region:123456789012:autoScalingGroup:60d6b363-ae8b-467c-947f-f1d308935521:autoScalingGroupName/devteam-3" ]

起動設定の作成と使用をユーザーに許可する

次のポリシーでは、インスタンスタイプが t2.micro であり、起動設定の名前が qateam-. で始まる場合に限り、起動設定を作成するアクセス許可をユーザーに付与します。ARN 値の指定については、「」を参照してください。Resources. 名前が Auto Scaling で始まる場合にのみ、qateam-. グループの起動設定を指定することができます。

ステートメントの最後の部分では、起動設定を記述し、AWS アカウントの特定の Amazon EC2 リソースにアクセスするためのアクセス許可をユーザーに付与します。これにより、Amazon EC2 Auto Scaling コンソールから起動設定を作成および管理するための最小限のアクセス許可がユーザーに付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:CreateLaunchConfiguration", "Resource": "arn:aws:autoscaling:region:123456789012:launchConfiguration:*:launchConfigurationName/qateam-*", "Condition": { "StringEquals": { "autoscaling:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "autoscaling:LaunchConfigurationName": "qateam-*" } } }, { "Effect": "Allow", "Action": [ "autoscaling:DescribeLaunchConfigurations", "ec2:DescribeImages", "ec2:DescribeVolumes", "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcs", "ec2:DescribeSubnets" ], "Resource": "*" }] }

このポリシーに次のような API アクションを追加して、ユーザーに追加のオプションを提供できます。

  • iam:ListInstanceProfiles: インスタンスプロファイルを一覧表示します。

  • ec2:CreateSecurityGroup: 新しいセキュリティグループを作成します。

  • ec2:AuthorizeSecurityGroupIngress: インバウンドルールを追加します。

  • ec2:CreateKeyPair: 新しいキーペアを作成します。

起動テンプレートの作成と使用をユーザーに許可する

エンドポイントポリシーの例については、「」を参照してください。起動テンプレートのサポート.

サービスにリンクされたロールを作成するために必要なアクセス許可

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

この自動ロール作成を成功させるには、ユーザーには 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 グループに渡すことをユーザーが必要とする場合は、必要なアクセスに応じてユーザーまたはロールにポリシーをアタッチします。ユーザーがアクセスする必要のあるサービスにリンクされたロールのみにこのポリシーを制限することをお勧めします。カスタムサフィックス付きのサービスにリンクされたロールの詳細については、「」を参照してください。 のサービスにリンクされたロールAmazon EC2 Auto Scaling.

以下の例は、別のサービスにリンクされたロールに別のキーへのアクセスを許可する場合に、カスタマー管理の CMK のセキュリティを促進するのに役立ちます。必要に応じて、開発チームに 1 つの CMK、QA チームにもう 1 つの CMK、そして財務チームにもう 1 つの CMK を設定できます。まず、必要な CMK へのアクセス権限を持つサービスにリンクされたロールを作成します。たとえば、AWSServiceRoleForAutoScaling_devteamkeyaccess という名前のサービスにリンクされたロールを作成します。次に、このサービスにリンクされたロールを Auto Scaling グループに渡すアクセス権限を付与すために、示されるようにポリシーを IAM ユーザーにアタッチします。

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

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

API に必要なアクセス許可

Amazon EC2 Auto Scaling API から次のアクションを呼び出す場合、ユーザーは、特定のアクションを実行するために Amazon EC2 および IAM からのアクセス許可を持っている必要があります。Action ポリシーステートメントの IAM 要素では、以下のアクションを指定します。

起動設定を使用して Auto Scaling グループを作成する

  • autoscaling:CreateAutoScalingGroup

  • iam:CreateServiceLinkedRole ( 既定のサービスリンクロールを使用していて、そのロールがまだ存在していない場合に必要)

起動テンプレートを使用して Auto Scaling グループを作成する

  • autoscaling:CreateAutoScalingGroup

  • ec2:RunInstances

  • iam:CreateServiceLinkedRole ( 既定のサービスリンクロールを使用していて、そのロールがまだ存在していない場合に必要)

起動テンプレートを使用する Auto Scaling グループを更新する

  • autoscaling:UpdateAutoScalingGroup

  • ec2:RunInstances

起動設定を作成する

  • autoscaling:CreateLaunchConfiguration

  • ec2:DescribeImages

  • ec2:DescribeInstances

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeKeyPairs

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSpotInstanceRequests

  • ec2:DescribeVpcClassicLink