

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

# Auto Scaling グループで Amazon EC2 起動テンプレートの使用を制御する
<a name="ec2-auto-scaling-launch-template-permissions"></a>

Amazon EC2 Auto Scaling は、Auto Scaling グループでの Amazon EC2 起動テンプレートの使用をサポートしています。起動テンプレートから Auto Scaling グループを作成することをユーザーに許可することをお勧めします。これにより、ユーザーは Amazon EC2 Auto Scaling と Amazon EC2 の最新機能を使用できます。例えば、ユーザーは[混合インスタンスポリシー](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_MixedInstancesPolicy.html)を使用するための起動テンプレートを指定する必要があります。

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

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

次に、独自の用途に合わせてカスタマイズできる基本アクセス許可ポリシーの例を表示します。ポリシーは、グループが `purpose=testing` タグを使用している場合に限り、すべての Auto Scaling グループを作成、更新、削除することを許可します。その後、すべての `Describe` アクションに許可を与えます。`Describe` アクションはリソースレベルの許可をサポートしないため、条件のない別のステートメントで指定する必要があります。

このポリシーを持つ IAM アイデンティティ (ユーザーまたはロール) は、`ec2:RunInstances` アクションを使用する許可も与えられているため、起動テンプレートを使用して Auto Scaling グループを作成または更新する許可があります。

------
#### [ 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*",
                "ec2:RunInstances"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Auto Scaling グループを作成または更新するユーザーには、関連する次のような権限が必要になる場合があります。
+ **ec2:CreateTags** — ユーザーがインスタンスとボリュームの作成時にタグを追加するには、IAM ポリシーの `ec2:CreateTags` アクセス許可が必要です。詳細については、「[インスタンスおよびボリュームにタグ付けするために必要なアクセス許可](#policy-example-launch-template-createtags)」を参照してください。
+ **iam:PassRole** — ユーザーがインスタンスプロファイル (IAM ロールのコンテナ) を含む起動テンプレートから EC2 インスタンスを起動するには、IAM ポリシーの `iam:PassRole` アクセス許可も必要です。詳細および IAM ポリシーの例については、「[Amazon EC2 インスタンスで実行中のアプリケーション用の IAM ロール](us-iam-role.md)」を参照してください。
+ **ssm:GetParameters** – AWS Systems Manager パラメータを使用する起動テンプレートから EC2 インスタンスを起動するには、ユーザーに IAM ポリシーの アクセス`ssm:GetParameters`許可も必要です。詳細については、「[起動テンプレートで AMI IDs の代わりに AWS Systems Manager パラメータを使用する](using-systems-manager-parameters.md)」を参照してください。

インスタンス起動時に完了するアクションに対するこれらのアクセス許可は、ユーザーが Auto Scaling グループを操作するときにチェックされます。詳細については、「[`ec2:RunInstances` と `iam:PassRole` の許可の検証](#runinstances-permissions-validation)」を参照してください。

次の例では、IAM ユーザーが起動テンプレートを使用するためのアクセスを制御できる、ポリシーステートメントを示しています。

**Topics**
+ [特定のタグを持つ起動テンプレートを要求する](#policy-example-launch-template-ex1)
+ [起動テンプレートとバージョン番号を要求する](#policy-example-launch-template-ex2)
+ [インスタンスメタデータサービスバージョン 2 (IMDSv2) の使用を要求する](#instance-metadata-requireIMDSv2)
+ [Amazon EC2 リソースへのアクセスを制限する](#policy-example-launch-template-ex4)
+ [インスタンスおよびボリュームにタグ付けするために必要なアクセス許可](#policy-example-launch-template-createtags)
+ [起動テンプレートの追加アクセス許可](#policy-launch-template-additional-permissions)
+ [`ec2:RunInstances` と `iam:PassRole` の許可の検証](#runinstances-permissions-validation)
+ [関連リソース](#launch-template-permissions-related-resources)

## 特定のタグを持つ起動テンプレートを要求する
<a name="policy-example-launch-template-ex1"></a>

`ec2:RunInstances` アクセス許可を付与する場合、ユーザーが特定のタグまたは特定の ID を持つ起動テンプレートのみを使用できるように指定すると、起動テンプレートを使用してインスタンスを起動する際にアクセス許可を制限できます。また、`RunInstances` 呼び出しに対するリソースレベルの追加のアクセス許可を指定することで、起動テンプレートを使用するすべてのユーザーがインスタンスの起動時に参照および使用できる AMI やその他のリソースを制御できます。

次の例では、指定されたリージョンにある起動テンプレートを持ち、タグ `purpose=testing` を持つ `ec2:RunInstances` アクションへのアクセス許可を制限します。また、ユーザーは起動テンプレートで指定されているリソース (AMI、インスタンスタイプ、ボリューム、キーペア、ネットワークインターフェイス、セキュリティグループ) にもアクセスできるようになります。

起動テンプレートでタグベースのポリシーを使用する方法について、詳しくは「*Amazon EC2 ユーザーガイド*」の「[IAM アクセス許可を使用して起動テンプレートへのアクセスを制御する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/permissions-for-launch-templates.html)」を参照してください。

## 起動テンプレートとバージョン番号を要求する
<a name="policy-example-launch-template-ex2"></a>

IAM のアクセス許可を使用して、Auto Scaling グループを作成または更新するときに、起動テンプレートと、起動テンプレートのバージョン番号を指定するように強制することもできます。

次の例では、起動テンプレートおよび起動テンプレートのバージョン番号が指定されている場合にのみ、ユーザーが Auto Scaling グループを作成および更新できるようにします。このポリシーを持つユーザーが、`$Latest` または `$Default` の起動テンプレートのバージョンを指定するためのバージョン番号を省略したり、代わりに起動設定を使用しようとしたりすると、アクションは失敗します。

------
#### [ JSON ]

****  

```
{
    "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) の使用を要求する
<a name="instance-metadata-requireIMDSv2"></a>

セキュリティを強化するために、IMDSv2 を必要とする起動テンプレートの使用を要求するようにユーザーのアクセス許可を設定できます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスメタデータサービスの設定](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)」を参照してください。

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

------
#### [ JSON ]

****  

```
{
    "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 インスタンスの更新](update-auto-scaling-group.md#update-auto-scaling-instances)」を参照してください。

## Amazon EC2 リソースへのアクセスを制限する
<a name="policy-example-launch-template-ex4"></a>

次の例は、リソースレベルのアクセス許可とタグ付きリソースを使用して、Amazon EC2 リソースへのアクセスを制限する方法を示しています。

**例 1: Amazon EC2 インスタンスの起動を特定のリソースとインスタンスタイプに制限する**  
次の例では、Amazon EC2 リソースへのアクセスを制限してユーザーが起動できるインスタンスの設定を制御します。起動テンプレートで指定されたリソースにリソースレベルのアクセス許可を指定するには、`RunInstances` アクションステートメントにそのリソースを含める必要があります

この例には、 2 つのステートメントがあります。
+ 1 番目のステートメントは、ユーザーが、特定のセキュリティグループ (`sg-903004f88example`) と、特定の AMI (`ami-04d5cc9b88example`) を使用して、特定のサブネット (`subnet-1a2b3c4d`) でインスタンスを起動することを要求します。また、ユーザーは起動テンプレートで指定されているリソース (ネットワークインターフェイス、キーペア、ボリューム) にもアクセスできるようになります。
+ 2 番目のステートメントでは、ユーザーは `t2.micro` または `t2.small` インスタンスタイプのみを使用してインスタンスを起動でき、コストを管理できます。

  ただし、起動テンプレートを使用してインスタンスを起動する権限を持つユーザーが、他のインスタンスタイプを起動するのを完全に防ぐ有効な方法は現在のところありません。これは、起動テンプレートで指定されたインスタンスタイプを上書きして、属性ベースのインスタンスタイプ選択を使用して定義されたインスタンスタイプを使用できるためです。

ユーザーが起動するインスタンスの設定の制御に使用できるリソースレベルのアクセス許可の完全なリストについては、「*サービス認可リファレンス*」の「[Actions, resources, and condition keys for Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)」を参照してください。

**例 2: Amazon EC2 インスタンスの起動にタグを要求し、リソースアクセスを制限する**  
次のポリシー例では、アイデンティティベースのポリシーの条件を使用して、タグに基づいて Amazon EC2 リソースへのアクセスを制御する方法について説明します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "InstanceTags",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/owner": "dev"
                }
            }
        },
        {
            "Sid": "InstanceBoundaries",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:{{us-east-1}}::image/*",
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:subnet/*",
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:network-interface/*"
            ]
        },
        {
            "Sid": "InstanceResourceTags",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:key-pair/*",
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:security-group/*",
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:launch-template/*",
                "arn:aws:ec2:{{us-east-1}}:{{555555555555}}:volume/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/purpose": "testing"
                }
            }
        }
    ]
}
```

------

この例には、次の 3 つのステートメントがあります。
+ 最初のステートメントでは、`owner=dev` のタグがリクエストで使用されている場合にのみ、ユーザーは指定されたリージョンでインスタンスを起動できます。
+ 2 番目のステートメントでは、指定されたリージョンの AMI、サブネット、ネットワークインターフェイスへのアクセスをユーザーに許可します。
+ 3 番目のステートメントでは、ユーザーは、既存のキーペア、セキュリティグループ、起動テンプレート、および `purpose=testing` のタグを持つボリュームを使用して、指定されたリージョンでインスタンスを起動できます。

詳細については、*IAM ユーザーガイド*の[「タグを使用した AWS リソースへのアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)」を参照してください。

## インスタンスおよびボリュームにタグ付けするために必要なアクセス許可
<a name="policy-example-launch-template-createtags"></a>

次の例では、インスタンスとボリュームの作成時に、以下のタグを付けることをユーザーに許可します。このポリシーは、起動テンプレートにタグが指定されている場合に必要です。詳細については、「*Amazon EC2 ユーザーガイド*」の「[リソース作成時にタグ付けする許可の付与](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/supported-iam-actions-tagging.html)」を参照してください。

## 起動テンプレートの追加アクセス許可
<a name="policy-launch-template-additional-permissions"></a>

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

## `ec2:RunInstances` と `iam:PassRole` の許可の検証
<a name="runinstances-permissions-validation"></a>

ユーザーは、Auto Scaling グループが使用する起動テンプレートのバージョンを指定できます。許可に応じて、これは特定の番号付きバージョン、または起動テンプレートの `$Latest` もしくは `$Default` バージョンになります。後者の場合は特に注意してください。これにより、制限することを意図していた `ec2:RunInstances` および `iam:PassRole` の許可がオーバーライドされる可能性があります。

このセクションでは、Auto Scaling グループで最新またはデフォルトバージョンの起動テンプレートを使用するシナリオについて説明します。

ユーザーが `CreateAutoScalingGroup`、`UpdateAutoScalingGroup`、または `StartInstanceRefresh` API を呼び出すと、Amazon EC2 Auto Scaling は、リクエストを続行する前に、その時点での最新またはデフォルトのバージョンである起動テンプレートのバージョンに照らしてユーザーの許可をチェックします。これにより、インスタンスの起動時に完了するアクション(`ec2:RunInstances` や `iam:PassRole` アクションなど) の許可が検証されます。これを実現するために、実際にリクエストを実行することなく、Amazon EC2 [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) ドライラン呼び出しを発行して、ユーザーがアクションに必要な許可を持っているかどうかを検証します。レスポンスが返されると、Amazon EC2 Auto Scaling がそのレスポンスを読み取ります。ユーザーの許可が所定のアクションが許可しない場合、Amazon EC2 Auto Scaling はリクエストを失敗させ、欠落している許可に関する情報が含まれたエラーをユーザーに返します。

初期検証とリクエストが完了すると、インスタンスが起動するたびに、Amazon EC2 Auto Scaling は、[サービスにリンクされたロール](autoscaling-service-linked-role.md#service-linked-role-permissions)の許可を使用して、変更されている場合でも最新またはデフォルトのバージョンを使用してインスタンスを起動します。つまり、起動テンプレートを使用しているユーザは、`iam:PassRole` アクセス許可を持っていなくても、インスタンスに IAM ロールを渡すように更新できる可能性があります。

`$Latest` または `$Default` バージョンを使用するようにグループを設定するアクセス許可を持つ人を制限したい場合は、`autoscaling:LaunchTemplateVersionSpecified` 条件キーを使用します。これにより、ユーザーが `CreateAutoScalingGroup` および `UpdateAutoScalingGroup` API を呼び出す際に、Auto Scaling グループが特定の番号付きバージョンのみを受け入れることが保証されます。この条件キーを IAM ポリシーに追加する方法を示す例については、「[起動テンプレートとバージョン番号を要求する](#policy-example-launch-template-ex2)」を参照してください。

`$Latest` または `$Default` 起動テンプレートのバージョンを使用するように構成されているAuto Scalingグループについては、デフォルトの起動テンプレートのバージョンをユーザーが指定できる `ec2:ModifyLaunchTemplate` アクションを含め、起動テンプレートのバージョンを作成および管理できるユーザーを制限することを検討してください。詳細については、「*Amazon EC2 ユーザーガイド*」の「[バージョニングアクセス許可の制御](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/permissions-for-launch-templates.html#permissions-for-launch-template-versions)」を参照してください。

## 関連リソース
<a name="launch-template-permissions-related-resources"></a>

起動テンプレートおよび起動テンプレートのバージョンを表示、作成、削除するためのアクセス許可の詳細については、「*Amazon EC2 ユーザーガイド*」の「[IAM アクセス許可を使用して起動テンプレートへのアクセスを制御する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/permissions-for-launch-templates.html)」を参照してください。

`RunInstances` 呼び出しへのアクセスを制御するために使用できるリソースレベルのアクセス許可の詳細については、「*サービス認可リファレンス*」の「[Actions, resources, and condition keys for Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)」を参照してください。