

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

# Amazon EC2 Auto Scaling アイデンティティベースのポリシーの例
<a name="security_iam_id-based-policy-examples"></a>

デフォルトでは、 のまったく新しいユーザー AWS アカウント には、何もするアクセス許可がありません。IAM 管理者は、IAM アイデンティティ (ユーザーやロールなど) に Amazon EC2 Auto Scaling API アクションを実行する許可を与える IAM ポリシーを作成して割り当てる必要があります。

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

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

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

------

このサンプルポリシーは、グループが `purpose=testing` タグを使用している場合に限り、Auto Scaling グループを作成、更新、削除する許可を付与します。`Describe` アクションはリソースレベルの許可をサポートしないため、条件のない別のステートメントで指定する必要があります。起動テンプレートを使用してインスタンスを起動するには、ユーザーに `ec2:RunInstances` アクセス許可も必要です。詳細については、「[Auto Scaling グループで Amazon EC2 起動テンプレートの使用を制御する](ec2-auto-scaling-launch-template-permissions.md)」を参照してください。

**注記**  
独自のカスタム IAM ポリシーを作成し、IAM アイデンティティ (ユーザーまたはロール) に Amazon EC2 Auto Scaling アクションを実行するための許可または拒否することができます。これらのカスタムポリシーは、指定された許可が必要な IAM アイデンティティにアタッチできます。次の例では、いくつかの一般的ユースケースの許可を示します。  
Amazon EC2 Auto Scaling API アクションの中には、アクションによって作成/変更できるポリシー内に特定の Auto Scaling グループを持つことを許可するものもあります。これらのアクションの対象となるリソースを制限するには、Auto Scaling グループの ARN を個別に指定します。ただし、ベストプラクティスとして、特定のタグを持つ Auto Scaling グループに対するアクションを許可 (または拒否) するタグベースのポリシーを使用することをお勧めします。

**Topics**
+ [作成できる Auto Scaling グループのサイズを制御する](#policy-example-min-max-size)
+ [使用できるタグキーとタグ値を制御する](#policy-example-tags)
+ [削除できる Auto Scaling グループを制御する](#policy-example-delete-auto-scaling-group)
+ [削除できるスケーリングポリシーを制御する](#policy-example-delete-policy)
+ [インスタンスの更新アクションへのアクセスを制御する](#policy-example-instance-refresh-policy)
+ [サービスにリンクされたロールの作成](#ec2-auto-scaling-slr-permissions)
+ [どのサービスにリンクされたロールを渡せるかを制御する (PassRole を使用)](#policy-example-pass-role)

## 作成できる Auto Scaling グループのサイズを制御する
<a name="policy-example-min-max-size"></a>

次のポリシーでは、リクエスタが最小サイズとして **1** 未満または最大サイズとして **10** より大きい値を指定しない限り、タグ `environment=development` を持つすべての Auto Scaling グループを作成および更新する許可が付与されます。可能な限りタグを使用して、アカウント内の Auto Scaling グループへのアクセスを制御できるようにします。

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

****  

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

------

Auto Scaling グループへのアクセス制御にタグを使用していない場合は、ARN を使用して IAM ポリシーが適用される Auto Scaling グループを識別できます。

Auto Scaling グループには、次の ARN があります。

```
"Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/my-asg"
```

複数の ARN をリストに含めて指定することもできます。`Resource` 要素での Amazon EC2 Auto Scaling リソースの ARN の指定の詳細については、「[Amazon EC2 Auto Scaling のポリシーリソース](control-access-using-iam.md#security_iam_service-with-iam-id-based-policies-resources)」を参照してください。

## 使用できるタグキーとタグ値を制御する
<a name="policy-example-tags"></a>

また、IAM ポリシーの条件を使用して、Auto Scaling グループに適用できるタグキーとタグ値を制御することもできます。リクエスタが特定のタグを指定する場合に限り、Auto Scaling グループを作成またはタグ付けする許可を付与するには、`aws:RequestTag` 条件キーを使用します。特定のタグキーのみ許可するには、`aws:TagKeys` 修飾子とともに `ForAllValues` 条件キーを使用します。

次のポリシーでは、リクエストでキー `environment` にタグを指定することをリクエスタに要求されます。`"?*"` 値は、タグキーに何らかの値を含めることを強制します。ワイルドカードを含める場合は、`StringLike` 条件演算子を使用する必要があります。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:CreateOrUpdateTags"
      ],
      "Resource": "*",
      "Condition": {
          "StringLike": { "aws:RequestTag/environment": "?*" }
      }
   }]
}
```

------

次のポリシーでは、リクエスタが Auto Scaling グループにタグ付けできるタグは `purpose=webserver` および `cost-center=cc123` であることを指定し、`purpose` タグおよび `cost-center` タグのみが許可されます (他のタグは指定できません)。

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

****  

```
{
   "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` キーのみ使用できます。

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

****  

```
{
   "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 グループを制御する
<a name="policy-example-delete-auto-scaling-group"></a>

次のポリシーは、グループにタグ `environment=development` が付けられている場合にのみ、Auto Scaling グループの削除を許可します。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "autoscaling:DeleteAutoScalingGroup",
      "Resource": "*",
      "Condition": {
          "StringEquals": { "aws:ResourceTag/environment": "development" }
      }
   }]
}
```

------

次のポリシーでは、 `autoscaling:ForceDelete`条件キーを使用して `DeleteAutoScalingGroup` API アクションへのアクセスを制御します。これにより、特定のユーザーが強制削除オペレーションを使用できなくなり、グループを削除すると Auto Scaling グループ内のすべてのインスタンスが終了します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Action": "autoscaling:DeleteAutoScalingGroup",
        "Resource": "*",
        "Condition": {
            "Bool": {
                "autoscaling:ForceDelete": "true"
            }
        }
    }]
}
```

------

Auto Scaling グループへのアクセス制御で条件キーを使用していない場合は、代わりに `Resource` 要素内のリソースの ARN を指定してアクセスを制御できます。

次のポリシーは、名前が で始まる Auto Scaling グループに対してのみ、 `DeleteAutoScalingGroup` API アクションを使用するアクセス許可をユーザーに付与します`devteam-`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "autoscaling:DeleteAutoScalingGroup",
            "Resource": "arn:aws:autoscaling:us-east-1:111122223333:autoScalingGroup:*:autoScalingGroupName/devteam-*"
        }
    ]
}
```

------

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

```
"Resource": [
    "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-1",
    "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-2",
    "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-3"
]
```

## 削除できるスケーリングポリシーを制御する
<a name="policy-example-delete-policy"></a>

次のポリシーでは、`DeletePolicy` アクションを使用してスケーリングポリシーを削除する許可が付与されます。ただし、処理対象の Auto Scaling グループに `environment=production` タグがある場合、そのアクションを拒否します。可能な限りタグを使用して、アカウント内の Auto Scaling グループへのアクセスを制御できるようにします。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "autoscaling:DeletePolicy",
      "Resource": "*"
   },
   {
      "Effect": "Deny",
      "Action": "autoscaling:DeletePolicy",
      "Resource": "*",
      "Condition": {
          "StringEquals": { "autoscaling:ResourceTag/environment": "production" }
      }
   }]
}
```

------

## インスタンスの更新アクションへのアクセスを制御する
<a name="policy-example-instance-refresh-policy"></a>

次のポリシーは、処理対象の Auto Scaling グループにタグ `environment=testing` が付けられている場合にのみ、インスタンスの更新を開始、ロールバック、キャンセルするアクセス許可を付与します。`Describe` アクションはリソースレベルの許可をサポートしないため、条件のない別のステートメントで指定する必要があります。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:StartInstanceRefresh",
          "autoscaling:CancelInstanceRefresh",
          "autoscaling:RollbackInstanceRefresh"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": { "autoscaling:ResourceTag/environment": "testing" }
      }
   },
   {
      "Effect": "Allow",
      "Action": "autoscaling:DescribeInstanceRefreshes",
      "Resource": "*"
   }]
}
```

------

`StartInstanceRefresh` 呼び出しで希望する設定を指定するには、次のような関連するアクセス許可が必要になる場合があります。
+ **ec2:RunInstances** — ユーザーが起動テンプレートを使用して EC2 インスタンスを起動するには、IAM ポリシーの `ec2:RunInstances` アクセス許可が必要です。詳細については、「[Auto Scaling グループで Amazon EC2 起動テンプレートの使用を制御する](ec2-auto-scaling-launch-template-permissions.md)」を参照してください。
+ **ec2:CreateTags** — ユーザーがインスタンスとボリュームの作成時にタグを追加する起動テンプレートから EC2 インスタンスを起動するには、IAM ポリシーの `ec2:CreateTags` アクセス許可が必要です。詳細については、「[インスタンスおよびボリュームにタグ付けするために必要なアクセス許可](ec2-auto-scaling-launch-template-permissions.md#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)」を参照してください。

## サービスにリンクされたロールの作成
<a name="ec2-auto-scaling-slr-permissions"></a>

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

この自動ロール作成を成功させるには、ユーザーには `iam:CreateServiceLinkedRole` アクションへのアクセス許可が必要です。

```
"Action": "iam:CreateServiceLinkedRole"
```

以下は、Amazon EC2 Auto Scaling に対する Amazon EC2 Auto Scaling のサービスにリンクされたロールの作成をユーザーに許可するアクセス許可ポリシーの例です。

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

****  

```
{
   "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 を使用)
<a name="policy-example-pass-role"></a>

Auto Scaling グループを作成または更新し、リクエストでカスタムサフィックスサービスにリンクされたロールを指定するユーザーは、`iam:PassRole` 許可が必要です。

異なるサービスにリンクされたロールに異なるキーへのアクセスを許可する場合は、 アクセス`iam:PassRole`許可を使用して AWS KMS カスタマーマネージドキーのセキュリティを保護できます。組織の必要に応じて、開発チームに 1 つの キー、QA チームにもう 1 つの キー、そして財務チームにもう 1 つの キー を持つことができます。まず、必要なキーにアクセスできるサービスリンクロールを作成します。例えば、**AWSServiceRoleForAutoScaling\$1devteamkeyaccess** という名前のサービスリンクロールを作成します。次に、ポリシーをユーザーまたはロールなどの IAM アイデンティティにアタッチします。

次のポリシーは、名前が `devteam-` で始まる Auto Scaling グループに ****AWSServiceRoleForAutoScaling\$1devteamkeyaccess**** ロールを渡すための許可を付与します。Auto Scaling グループを作成する IAM アイデンティティがサービスにリンクされた別のロールを指定しようとすると、エラーが表示されます。サービスにリンクされたロールを指定しないことを選択した場合は、代わりにデフォルトの **AWSServiceRoleForAutoScaling** ロールが使用されます。

カスタムサフィックス付きのサービスにリンクされたロールの詳細については、「[Amazon EC2 Auto Scaling のサービスにリンクされたロール](autoscaling-service-linked-role.md)」を参照してください。