起動テンプレートのサポート - Amazon EC2 Auto Scaling (日本語)

起動テンプレートのサポート

Amazon EC2 Auto Scaling は、Auto Scaling グループでの Amazon EC2 起動テンプレートの使用をサポートしています。起動テンプレートから Auto Scaling グループを作成することをユーザーに許可することをお勧めします。これにより、ユーザーは Amazon EC2 Auto Scaling と Amazon EC2 の最新機能を使用できます。さらに、ユーザーは 混合インスタンスポリシーを使用するための起動テンプレートを指定する必要があります。

AmazonEC2FullAccess ポリシーを使用すると、AWS アカウント内の Amazon EC2 Auto Scaling リソース、起動テンプレート、およびその他の EC2 リソースを使用するための完全なアクセス権をユーザーに付与できます。または、このトピックで説明するように、独自のカスタム IAM ポリシーを作成して、起動テンプレートを使用するきめ細かなアクセス許可をユーザーに付与することもできます。

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

次に、独自の用途に合わせてカスタマイズできるアクセス許可ポリシーの例を示します。ポリシーでは、IAM ユーザーにすべての Auto Scaling グループを作成、変更、削除することを許可します。ただし、グループが environment=test タグを使用している場合に限ります。次に、すべての Describe アクションに対するアクセス許可を付与します。Describe アクションはリソースレベルのアクセス権限をサポートしないため、条件のない別のステートメントでそれらのアクセス権限を指定する必要があります。

このポリシーを持つユーザーには、ec2:RunInstancesアクションを使用するアクセス権限も与えられているので、起動テンプレートを使用して Auto Scaling グループを作成または更新する権限があります。

{ "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:Describe*", "ec2:RunInstances" ], "Resource": "*" } ] }

ec2:RunInstancesは、起動テンプレートを使用して Auto Scaling グループを作成または更新すると、チェックされます。インスタンスの起動に使用するリソースへのアクセスを制限する場合、または IAM ユーザーが実行できる操作を制限する場合は、このポリシーを変更して、これらのアクセス許可をフィルタリングする独自のステートメントを追加する必要があります。

以下の例では、起動テンプレートを使用する場合に、ユーザーが所有するアクセス許可を制御するために使用できるポリシーステートメントを示しています。

特定のタグを持つ起動テンプレートを要求する

次の例では、指定されたリージョンにある起動テンプレートを持ち、タグ environment=test を持つ ec2:RunInstances アクションへの呼び出しアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:123456789012:launch-template/*", "Condition": { "StringEquals": { "ec2:ResourceTag/environment": "test" } } } ] }

起動テンプレートとバージョン番号を要求する

次の例では、ユーザーが起動テンプレートのバージョン番号を指定した場合、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 を必要とする起動テンプレートの使用を要求するようにユーザーのアクセス許可を設定できます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスメタデータサービスの設定」を参照してください。

次のポリシーでは、IMDSv2 の使用を要求するようにインスタンスもオプトインされていない限り("ec2:MetadataHttpTokens":"required" で指定)、ユーザーは ec2:RunInstances アクションを呼び出せないことを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
ヒント

インスタンスのメタデータオプションが設定された新しい起動テンプレートまたは新しいバージョンの起動テンプレートを使用する代替の Auto Scaling インスタンスを強制的に起動することで、グループ内の既存のインスタンスを終了できます。Amazon EC2 Auto Scaling は、直ちに新しいインスタンスの起動を開始し、終了したインスタンスを置き換えます。または、インスタンスの更新を開始して、グループのローリング更新を実行することもできます。詳細については、「インスタンスの更新に基づく Auto Scaling インスタンスの置き換え」を参照してください。

Amazon EC2 リソースへのアクセスを制限する

次の例では、Amazon EC2 リソースへのアクセスを制限してユーザーが起動できるインスタンスの設定を制御します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:123456789012:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:123456789012:security-group/sg-903004f88example", "arn:aws:ec2:region:123456789012:network-interface/*", "arn:aws:ec2:region:123456789012:volume/*", "arn:aws:ec2:region::image/ami-04d5cc9b88example" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": "t2.micro" } } } ] }

この例には、 2 つのステートメントがあります。

  • 1 番目のステートメントは、ユーザーが、特定のセキュリティグループ (sg-903004f88example) と、特定の AMI (ami-04d5cc9b88example) を使用して、特定のサブネット (subnet-1a2b3c4d) でインスタンスを起動することを要求します。また、インスタンスを起動するために必要な追加のリソース (ネットワークインターフェイスとボリューム) へのアクセス権をユーザーに付与します。

  • 2 番目のステートメントは、特定のインスタンスタイプ (t2.micro) のインスタンスのみを起動することをユーザーに許可します。

インスタンスおよびボリュームにタグ付けするために必要なアクセス許可

次の例では、インスタンスとボリュームの作成時に、以下のタグを付けることをユーザーに許可します。このポリシーは、起動テンプレートにタグが指定されている場合に必要です。詳細については、のLinux インスタンス用 Amazon EC2 ユーザーガイドの「リソース作成時にタグ付けするアクセス許可の付与」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:region:123456789012:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }

追加のアクセス権限

これらの追加のアクションは、サポートするシナリオに応じて、IAM ポリシーステートメントの Action 要素で指定できます。

ユーザーが IAM ロールをプロビジョニングされたインスタンスに渡す機能を持つようにするには、そのユーザーがiam:PassRole のアクセス権限を持つ必要があります。起動テンプレートが IAM ロールを持つインスタンスプロファイルを指定している場合、iam:PassRoleポリシーを使用して、Amazon EC2 にロールを渡すことをユーザーに許可 (または拒否) することができます。ポリシーの例については、「どの IAM ロールを渡せるかを制御する (PassRole を使用)」を参照してください。

コンソールユーザーには、ec2:DescribeLaunchTemplatesおよびec2:DescribeLaunchTemplateVersionsアクションへのアクセス許可を与える必要があります。これらのアクセス許可なしでは、起動テンプレートとネットワークオプションが Auto Scaling グループウィザードに読み込まれないため、ユーザーはウィザードをステップ実行できず、起動テンプレートを使用してインスタンスを起動することができません。

ec2:CreateLaunchTemplateおよびec2:CreateLaunchTemplateVersionアクションへのアクセスを制御するには、Linux インスタンス用 Amazon EC2 ユーザーガイド起動テンプレートの使用の管理および例: 起動テンプレートの使用を参照してください。

注記

Latest または Default の起動テンプレートバージョンを使用するように設定したグループの場合、インスタンスの起動時に実行されるアクションのアクセス許可は、起動テンプレートの新しいバージョンの作成時に Amazon EC2 Auto Scaling によってチェックされません。これは、起動テンプレートバージョンを作成および管理できるユーザーのアクセス許可を設定する際の重要な考慮事項です。