翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Auto Scaling グループで Amazon EC2 起動テンプレートの使用を制御する
Amazon EC2 Auto Scaling は、Auto Scaling グループでの Amazon EC2 起動テンプレートの使用をサポートしています。起動テンプレートから Auto Scaling グループを作成することをユーザーに許可することをお勧めします。これにより、ユーザーは Amazon EC2 Auto Scaling と Amazon EC2 の最新機能を使用できるようになります。例えば、ユーザーは混合インスタンスポリシーを使用するための起動テンプレートを指定する必要があります。
AmazonEC2FullAccess
ポリシーを使用して、アカウント内の Amazon EC2 Auto Scaling リソース、起動テンプレート、およびその他の EC2 リソースを操作するための完全なアクセス権をユーザーに付与できます。または、このトピックで説明されているように、独自のカスタム IAM ポリシーを作成して、起動テンプレートを操作するためのきめ細かなアクセス許可をユーザーに付与することもできます。
独自の用途に合わせてカスタマイズできるサンプルポリシー
次に、独自の用途に合わせてカスタマイズできる基本アクセス許可ポリシーの例を表示します。ポリシーは、グループが
タグを使用している場合に限り、すべての Auto Scaling グループを作成、更新、削除することを許可します。その後、すべての purpose=testing
Describe
アクションに許可を与えます。Describe
アクションはリソースレベルの許可をサポートしないため、条件のない別のステートメントで指定する必要があります。
このポリシーを持つIAM ID (ユーザーまたはロール) には、起動テンプレートを使用して Auto Scaling グループを作成または更新するアクセス許可があります。これは、 ec2:RunInstances
アクションを使用するアクセス許可も付与されるためです。
{ "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*", "ec2:RunInstances" ], "Resource": "*" } ] }
Auto Scaling グループを作成または更新するユーザーには、関連する次のような権限が必要になる場合があります。
-
ec2:CreateTags – 作成時にインスタンスとボリュームにタグを追加するには、ユーザーは IAM ポリシーで アクセス
ec2:CreateTags
許可を持っている必要があります。詳細については、「インスタンスおよびボリュームにタグ付けするために必要なアクセス許可」を参照してください。 -
iam:PassRole – インスタンスプロファイル (EC2 ロールのコンテナ) を含む起動テンプレートから IAM インスタンスを起動するには、ユーザーは IAM ポリシーで アクセス
iam:PassRole
許可も持っている必要があります。詳細と IAM ポリシーの例については、「」を参照してくださいAmazon IAM インスタンスで実行されるアプリケーションの EC2 ロール。 -
ssm:GetParameters – AWS Systems Manager パラメータを使用する起動テンプレートから EC2 インスタンスを起動するには、ユーザーは IAM ポリシーで アクセス
ssm:GetParameters
許可も持っている必要があります。詳細については、「起動テンプレートAMIIDsで の代わりに AWS Systems Manager パラメータを使用する」を参照してください。
インスタンス起動時に完了するアクションに対するこれらのアクセス許可は、ユーザーが Auto Scaling グループを操作するときにチェックされます。詳細については、「ec2:RunInstances と iam:PassRole の許可の検証」を参照してください。
次の例は、IAM ユーザーが起動テンプレートを使用して持つアクセスを制御するために使用できるポリシーステートメントを示しています。
トピック
特定のタグを持つ起動テンプレートを要求する
アクセスec2:RunInstances
許可を付与するときは、ユーザーが特定のタグまたは特定の IDs を持つ起動テンプレートのみを使用して、起動テンプレートでインスタンスを起動するときにアクセス許可を制限できるように指定できます。また、起動テンプレートを使用するすべてのユーザーがインスタンスの起動時に参照および使用できる AMI やその他のリソースを制御するには、 RunInstances
呼び出しに対して追加のリソースレベルのアクセス許可を指定します。
次の例では、指定されたリージョンにある起動テンプレートを持ち、タグ
を持つ purpose=testing
ec2:RunInstances
アクションへのアクセス許可を制限します。また、AMIs、インスタンスタイプ、ボリューム、キーペア、ネットワークインターフェイス、セキュリティグループなど、起動テンプレートで指定されたリソースへのアクセス権をユーザーに付与します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:
region
:account-id
:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose
": "testing
" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region
::image/ami-*", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
起動テンプレートでタグベースのポリシーを使用する方法の詳細については、「Amazon EC2 ユーザーガイド」のIAM アクセス許可を使用して起動テンプレートへのアクセスを制御する」を参照してください。
起動テンプレートとバージョン番号を要求する
IAM アクセス許可を使用して、Auto Scaling グループを作成または更新するときに起動テンプレートと起動テンプレートのバージョン番号を指定する必要があるように強制することもできます。
次の例では、起動テンプレートおよび起動テンプレートのバージョン番号が指定されている場合にのみ、ユーザーが Auto Scaling グループを作成および更新できるようにします。このポリシーを持つユーザーが、$Latest
または $Default
の起動テンプレートのバージョンを指定するためのバージョン番号を省略したり、代わりに起動設定を使用しようとしたりすると、アクションは失敗します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }
インスタンスメタデータサービスバージョン 2 (IMDSv2) の使用を要求する
セキュリティを強化するために、IMDSv2 を必要とする起動テンプレートの使用を要求するようにユーザーのアクセス許可を設定できます。詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスメタデータサービスの設定」を参照してください。
次の例では、インスタンスが IMDSv2 ( で示される) の使用を要求するようにオプトインされていない限り、ユーザーが ec2:RunInstances
アクションを呼び出せないことを指定します"ec2:MetadataHttpTokens":"required"
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
ヒント
インスタンスのメタデータオプションが設定された、新しい起動テンプレートまたは新しいバージョンの起動テンプレートを使用している、代替の Auto Scaling インスタンスを強制的に起動することで、インスタンスの更新を開始できます。詳細については、「Auto Scaling インスタンスの更新」を参照してください。
Amazon EC2 リソースへのアクセスを制限する
次の例では、Amazon EC2 リソースへのアクセスを制限することで、ユーザーが起動できるインスタンスの設定を制御します。起動テンプレートで指定されたリソースにリソースレベルのアクセス許可を指定するには、RunInstances
アクションステートメントにそのリソースを含める必要があります
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
:account-id
:launch-template/*", "arn:aws:ec2:region
::image/ami-04d5cc9b88example
", "arn:aws:ec2:region
:account-id
:subnet/subnet-1a2b3c4d
", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/sg-903004f88example
" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region
:account-id
:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } } ] }
この例には、 2 つのステートメントがあります。
-
最初のステートメントでは、ユーザーは特定のセキュリティグループ (
) と特定のAMI () を使用して、特定のサブネット (subnet-1a2b3c4d
) でインスタンスを起動する必要がありますsg-903004f88example
。また、ユーザーは起動テンプレートで指定されているリソース (ネットワークインターフェイス、キーペア、ボリューム) にもアクセスできるようになります。ami-04d5cc9b88example
-
2 番目のステートメントでは、ユーザーは
またはt2.micro
インスタンスタイプのみを使用してインスタンスを起動でき、コストを管理できます。t2.small
ただし、起動テンプレートを使用してインスタンスを起動する権限を持つユーザーが、他のインスタンスタイプを起動するのを完全に防ぐ有効な方法は現在のところありません。これは、起動テンプレートで指定されたインスタンスタイプを上書きして、属性ベースのインスタンスタイプ選択を使用して定義されたインスタンスタイプを使用できるためです。
ユーザーが起動できるインスタンスの設定を制御するために使用できるリソースレベルのアクセス許可の完全なリストについては、「サービス認可リファレンス」の「Amazon EC2 のアクション、リソース、および条件キー」を参照してください。
インスタンスおよびボリュームにタグ付けするために必要なアクセス許可
次の例では、インスタンスとボリュームの作成時に、以下のタグを付けることをユーザーに許可します。このポリシーは、起動テンプレートにタグが指定されている場合に必要です。詳細については、「Amazon EC2 ユーザーガイド」の「作成時にリソースにタグを付けるアクセス許可を付与する」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:
region
:account-id
:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }
起動テンプレートの追加アクセス許可
コンソールユーザーには、ec2:DescribeLaunchTemplates
およびec2:DescribeLaunchTemplateVersions
アクションへのアクセス許可を与える必要があります。これらのアクセス許可なしでは、起動テンプレートとネットワークオプションが Auto Scaling グループウィザードに読み込まれないため、ユーザーはウィザードをステップ実行できず、起動テンプレートを使用してインスタンスを起動することができません。これらの追加のアクションは、IAM ポリシーステートメントの Action
要素で指定できます。
ec2:RunInstances
と iam:PassRole
の許可の検証
ユーザーは、Auto Scaling グループが使用する起動テンプレートのバージョンを指定できます。許可に応じて、これは特定の番号付きバージョン、または起動テンプレートの $Latest
もしくは $Default
バージョンになります。後者の場合は特に注意してください。これにより、制限することを意図していた ec2:RunInstances
および iam:PassRole
の許可がオーバーライドされる可能性があります。
このセクションでは、Auto Scaling グループで最新またはデフォルトバージョンの起動テンプレートを使用するシナリオについて説明します。
ユーザーが CreateAutoScalingGroup
、UpdateAutoScalingGroup
、または StartInstanceRefresh
APIs を呼び出すと、Amazon EC2 Auto Scaling は、リクエストを続行する前に、その時点で最新バージョンまたはデフォルトバージョンの起動テンプレートのバージョンに対してアクセス許可をチェックします。これにより、インスタンスの起動時に完了するアクション(ec2:RunInstances
や iam:PassRole
アクションなど) の許可が検証されます。これを実現するために、Amazon EC2 RunInstancesドライランコールを発行して、ユーザーが実際にリクエストを行うことなく、アクションに必要なアクセス許可を持っているかどうかを検証します。レスポンスが返されると、Amazon EC2 Auto Scaling によって読み取られます。ユーザーのアクセス許可で特定のアクションが許可されていない場合、Amazon EC2 Auto Scaling はリクエストに失敗し、不足しているアクセス許可に関する情報を含むエラーをユーザーに返します。
最初の検証とリクエストが完了すると、Amazon EC2 Auto Scaling は、サービスにリンクされたロールのアクセス許可を使用して、インスタンスが起動されるたびに、変更されても最新バージョンまたはデフォルトバージョンでインスタンスを起動します。つまり、起動テンプレートを使用しているユーザーは、 アクセスiam:PassRole
許可がない場合でも、IAM ロールをインスタンスに渡すように更新できる可能性があります。
$Latest
または $Default
バージョンを使用するようにグループを設定するアクセス許可を持つ人を制限したい場合は、autoscaling:LaunchTemplateVersionSpecified
条件キーを使用します。これにより、Auto Scaling グループは、ユーザーが CreateAutoScalingGroup
および APIs UpdateAutoScalingGroup
を呼び出すときに、特定の番号付きバージョンのみを受け入れるようになります。この条件キーを IAM ポリシーに追加する方法の例については、「」を参照してください起動テンプレートとバージョン番号を要求する。
$Latest
または $Default
起動テンプレートのバージョンを使用するように構成されているAuto Scalingグループについては、デフォルトの起動テンプレートのバージョンをユーザーが指定できる ec2:ModifyLaunchTemplate
アクションを含め、起動テンプレートのバージョンを作成および管理できるユーザーを制限することを検討してください。詳細については、「Amazon EC2 ユーザーガイド」の「バージョニング許可の制御」を参照してください。
関連リソース
起動テンプレートと起動テンプレートのバージョンを表示、作成、削除するアクセス許可の詳細については、「Amazon EC2 ユーザーガイド」のIAM アクセス許可を使用して起動テンプレートへのアクセスを制御する」を参照してください。
RunInstances
呼び出しへのアクセスを制御するために使用できるリソースレベルのアクセス許可の詳細については、「サービス認可リファレンス」の「Amazon EC2 のアクション、リソース、および条件キー」を参照してください。