Auto Scaling グループで Amazon EC2 起動テンプレートの使用を制御する - Amazon EC2 Auto Scaling

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

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 ポリシーを作成して、起動テンプレートを操作するためのきめ細かなアクセス許可をユーザーに付与することもできます。

独自の用途に合わせてカスタマイズできるサンプルポリシー

次に、独自の用途に合わせてカスタマイズできる基本アクセス許可ポリシーの例を表示します。ポリシーは、グループが purpose=testing タグを使用している場合に限り、すべての Auto Scaling グループを作成、更新、削除することを許可します。その後、すべての 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 グループを作成または更新するユーザーには、関連する次のような権限が必要になる場合があります。

インスタンス起動時に完了するアクションに対するこれらのアクセス許可は、ユーザーが 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 つのステートメントがあります。

  • 最初のステートメントでは、ユーザーは特定のセキュリティグループ (subnet-1a2b3c4d) と特定のAMI () を使用して、特定のサブネット (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 グループで最新またはデフォルトバージョンの起動テンプレートを使用するシナリオについて説明します。

ユーザーが CreateAutoScalingGroupUpdateAutoScalingGroup、または StartInstanceRefreshAPIs を呼び出すと、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 のアクション、リソース、および条件キー」を参照してください。