

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

# CloudFormation フックの IAM アクセス許可を付与する
<a name="grant-iam-permissions-for-hooks"></a>

デフォルトでは、 の新しいユーザーには、、 AWS Command Line Interface (AWS CLI) AWS マネジメントコンソール、または AWS API を使用してフックを管理するアクセス許可 AWS アカウント がありません。ユーザーに アクセス許可を付与するために、IAM 管理者は IAM ポリシーを作成できます。その後、管理者はロールに IAM ポリシーを追加し、ユーザーはロール引き継ぐことができます。

このトピックのポリシー例を使用して、フックを操作するアクセス許可をユーザーに付与する独自のカスタム IAM ポリシーを作成します。

これらのサンプル JSON ポリシードキュメントを使用して IAM アイデンティティベースのポリシーを作成する方法については、IAM *ユーザーガイドの*[「カスタマー管理ポリシーを使用してカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

このトピックでは、以下を実行するために必要なアクセス許可について説明します。
+ **フックの管理** – アカウントでフックを作成、変更、無効にします。
+ **フックを公開** — カスタムフックを登録、テスト、公開して、CloudFormation レジストリで公開できるようにします。
+ **呼び出し結果の表示** – アカウント内のフック呼び出しの結果にアクセスしてクエリを実行します。
+ **呼び出し結果の詳細を表示する** – アカウント内の特定のフック呼び出し結果の詳細情報と修復ガイダンスにアクセスします。

IAM ポリシーを作成する際、`cloudformation`サービスプレフィックスに関連付けられたすべてのアクション、リソース、および条件キーのドキュメントは、*「サービス認可リファレンス*」の[「アクション、リソース、および条件キー CloudFormation](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html)」セクションにあります。

**Topics**
+ [フックの管理をユーザーに許可する](#iam-permissions-to-manage-hooks)
+ [ユーザーにカスタムフックの公開を許可する](#iam-permissions-for-public-hook-publishing)
+ [フック呼び出し結果の表示をユーザーに許可する](#iam-permissions-to-request-invocation-results)
+ [詳細なフック呼び出し結果の表示をユーザーに許可する](#get-detailed-hook-invocation-results)
+ [AWS KMS キーポリシーと CloudFormation フック結果を保管中に暗号化するためのアクセス許可](hooks-kms-key-policy.md)

## フックの管理をユーザーに許可する
<a name="iam-permissions-to-manage-hooks"></a>

CloudFormation レジストリで公開することなく、フックを含む拡張機能の管理をユーザーに許可する必要がある場合は、次の IAM ポリシーの例を使用できます。

**重要**  
`ActivateType` と `SetTypeConfiguration` API コールは連携して、アカウントにフックを作成します。`SetTypeConfiguration` API を呼び出すアクセス許可をユーザーに付与すると、既存のフックを変更および無効化する機能が自動的に付与されます。リソースレベルのアクセス許可を使用して、この API コールへのアクセスを制限することはできません。したがって、このアクセス許可は、アカウントの承認されたユーザーのみに付与してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:ActivateType",
                "cloudformation:DescribeType",
                "cloudformation:ListTypes",
                "cloudformation:SetTypeConfiguration"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Hooks を管理するユーザーには、次のような関連するアクセス許可が必要になる場合があります。
+ CloudFormation コンソールで Control Catalog からプロアクティブコントロールを表示するには、ユーザーに IAM ポリシーの アクセス`controlcatalog:ListControls`許可が必要です。
+ CloudFormation レジストリにカスタムフックをプライベート拡張機能として登録するには、ユーザーに IAM ポリシーの アクセス`cloudformation:RegisterType`許可が必要です。

## ユーザーにカスタムフックの公開を許可する
<a name="iam-permissions-for-public-hook-publishing"></a>

次の IAM ポリシーの例では、特にパブリッシュ機能に焦点を当てています。CloudFormation レジストリでフックなどの拡張機能を公開することをユーザーに許可する必要がある場合は、このポリシーを使用します。

**重要**  
フックを公開すると、他の が公開できるようになります AWS アカウント。承認されたユーザーのみがこれらのアクセス許可を持ち、公開された拡張機能が組織の品質およびセキュリティ基準を満たしていることを確認します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:DescribePublisher",
                "cloudformation:DescribeTypeRegistration",
                "cloudformation:ListTypes",
                "cloudformation:ListTypeVersions",
                "cloudformation:PublishType",
                "cloudformation:RegisterPublisher",
                "cloudformation:RegisterType",
                "cloudformation:TestType"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## フック呼び出し結果の表示をユーザーに許可する
<a name="iam-permissions-to-request-invocation-results"></a>

フック呼び出し結果の表示に必要な IAM アクセス許可は、リクエストされる情報のタイプによって異なります。

### フック呼び出し結果を一覧表示する
<a name="list-hook-invocation-results"></a>

フック呼び出し結果を一覧表示するには、ユーザーには、実行される API リクエストに応じて異なるアクセス許可が必要です。
+ すべてのフック結果、特定のフックの結果、または特定のフックと呼び出しステータスの結果をリクエストするアクセス許可を付与するには、 `cloudformation:ListAllHookResults`アクションへのアクセスを許可する必要があります。
+ Hook ターゲットを指定して結果をリクエストするアクセス許可を付与するには、 `cloudformation:ListHookResults`アクションへのアクセス権を付与する必要があります。このアクセス許可により、API 呼び出し元は を呼び出すときに `TargetType`および `TargetId`パラメータを指定できます`ListHookResults`。

以下は、フック呼び出し結果を一覧表示するための基本的なアクセス許可ポリシーの例です。このポリシーを持つ IAM ID (ユーザーまたはロール) には、使用可能なすべてのパラメータの組み合わせを使用してすべての呼び出し結果をリクエストするアクセス許可があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListAllHookResults",
                "cloudformation:ListHookResults"
            ],
            "Resource": "*"
        }
    ]
}
```

------

#### 指定できる変更セットを制御する
<a name="control-which-change-sets"></a>

次の IAM ポリシーの例では、フックのターゲットを指定して結果をリクエストするアクセス許可を `cloudformation:ListHookResults` アクションに付与します。ただし、ターゲットが という名前の変更セットである場合、 アクションも拒否されます`example-changeset`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListHookResults"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:ListHookResults"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudformation:ChangeSetName": "example-changeset"
                }
            }
        }
    ]
}
```

------

#### 指定できるフックを制御する
<a name="control-which-hooks"></a>

次の IAM ポリシーの例では、フックの ARN がリクエストで指定されている場合にのみ、呼び出し結果をリクエストするアクセス許可を `cloudformation:ListAllHookResults`アクションに付与します。指定されたフック ARN の アクションを拒否します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListAllHookResults"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:ListAllHookResults"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "cloudformation:TypeArn": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:ListAllHookResults"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "cloudformation:TypeArn": "arn:aws:cloudformation:us-east-1:123456789012:type/hook/MyCompany-MyHook"
                }
            }
        }
    ]
}
```

------

## 詳細なフック呼び出し結果の表示をユーザーに許可する
<a name="get-detailed-hook-invocation-results"></a>

特定のフック呼び出しの詳細な結果を表示するアクセス許可を付与するには、 `cloudformation:GetHookResult`アクションへのアクセス権を付与する必要があります。このアクセス許可により、ユーザーは特定のフック呼び出し結果の詳細情報と修復ガイダンスを取得できます。詳細については、 *AWS CloudFormation API リファレンス*の[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html)」を参照してください。

次の IAM ポリシーの例では、 `cloudformation:GetHookResult`アクションにアクセス許可を付与します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
       "Action": [
         "cloudformation:GetHookResult"
      ],
      "Resource": "*"
    }
  ]
}
```

------

**注記**  
フックを設定して、クラウドに保存されている詳細な呼び出し結果を独自の AWS KMS キーで暗号化できます。暗号化にカスタマーマネージドキーを使用するときに必要なキーポリシーと IAM アクセス許可を設定する方法については、「」を参照してください[AWS KMS キーポリシーと CloudFormation フック結果を保管中に暗号化するためのアクセス許可](hooks-kms-key-policy.md)。

# AWS KMS キーポリシーと CloudFormation フック結果を保管中に暗号化するためのアクセス許可
<a name="hooks-kms-key-policy"></a>

このトピックでは、[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) API から利用可能な Hooks 注釈データを暗号化するためのカスタマーマネージドキーを指定するときに必要な AWS KMS キーポリシーとアクセス許可を設定する方法について説明します。

**注記**  
CloudFormation フックは、アカウントの注釈データを暗号化するためにデフォルト AWS 所有のキー を使用する追加の認可を必要としません。

**Topics**
+ [概要:](#hooks-kms-overview)
+ [暗号化コンテキストを使用してカスタマーマネージドキーへのアクセスを制御する](#hooks-encryption-context-security)
+ [カスタマーマネージド型 KMS キーのポリシー](#hooks-policy-example-cmk-access)
+ [`SetTypeConfiguration` API の KMS アクセス許可](#hooks-policy-example-settypeconfiguration-permissions)
+ [`GetHookResult` API の KMS アクセス許可](#hooks-policy-example-gethookresult-permissions)

## 概要:
<a name="hooks-kms-overview"></a>

フック注釈データの暗号化には AWS KMS keys 、以下を使用できます。
+ [AWS 所有のキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) – デフォルトでは、CloudFormation は AWS 所有のキー を使用してデータを暗号化します。表示、管理、使用 AWS 所有のキー、またはそれらの使用を監査することはできません。ただし、データの暗号化に使用されるキーを保護するために明示的な設定を実行する必要はありません。 AWS 所有のキー は無料で提供されます (月額料金や使用料金はかかりません）。注釈データを保護する暗号化キーを監査または制御する必要がない限り、 AWS 所有のキー が適しています。
+ [カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) – CloudFormation は、作成、所有、管理する対称カスタマーマネージドキーを使用して、既存の に 2 番目の暗号化レイヤーを追加します AWS 所有のキー。 AWS KMS 料金が適用されます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」を参照してください。キーを管理するには、 [AWS KMS コンソール](https://console.aws.amazon.com/kms)、 AWS Key Management Service 、 AWS CLIまたは AWS KMS API で (AWS KMS) を使用します。詳細については、[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)を参照してください。

フックを作成および更新するときに、カスタマーマネージドキーを設定できます。カスタマーマネージドキーを指定すると、CloudFormation はこのキーを使用して注釈データを暗号化してから保存します。`GetHookResult` API オペレーション中に注釈データが後でアクセスされると、CloudFormation は自動的にデータを復号します。フックの暗号化キーの設定については、「」を参照してください[フック設定スキーマ構文リファレンス](hook-configuration-schema.md)。

**重要**  
カスタマーマネージドキーを指定する`KmsKeyId`オプションは現在、 を使用してフック AWS CLI を設定する場合にのみ使用できます。

## 暗号化コンテキストを使用してカスタマーマネージドキーへのアクセスを制御する
<a name="hooks-encryption-context-security"></a>

CloudFormation フックには、すべての注釈ストレージおよび取得オペレーションで暗号化コンテキストが自動的に含まれます。これにより、キーポリシーで暗号化コンテキスト条件を設定して、キーが特定のフックにのみ使用できることを確認できます。
+ `kms:EncryptionContext:aws:cloudformation:hooks:service` – キーが CloudFormation Hooks サービスでのみ使用されるようにします。
+ `kms:EncryptionContext:aws:cloudformation:account-id` – AWS アカウント ID を一致させることで、クロスアカウントキーの使用を防止します。
+ `kms:EncryptionContext:aws:cloudformation:arn` – ARN パターンを使用して、特定のフックの使用を制限します。

これらの条件は、暗号化されたデータを特定のフックコンテキストに暗号的にバインドすることで、混乱した代理攻撃に対する保護を強化します。

## カスタマーマネージド型 KMS キーのポリシー
<a name="hooks-policy-example-cmk-access"></a>

カスタマーマネージドキーを作成するときは、CloudFormation Hooks サービスが AWS KMS オペレーションを実行できるように、そのキーポリシーを定義する必要があります。次のキーポリシーを使用するには、*プレースホルダー値を*独自の情報に置き換えます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnableIAMUserDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "EnableIAMUserGenerateDataKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    },
    {
      "Sid": "EnableIAMUserDecrypt",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowHooksServiceDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "Service": "hooks.cloudformation.amazonaws.com"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    },
    {
      "Sid": "AllowHooksService",
      "Effect": "Allow",
      "Principal": {
        "Service": "hooks.cloudformation.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012",
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:*:123456789012:hook/*",
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    }
  ]
}
```

------

このポリシーは、IAM ロール (最初の 3 つのステートメント) と CloudFormation Hooks サービス (最後の 2 つのステートメント) の両方にアクセス許可を付与します。`kms:ViaService` 条件キーにより、KMS キーは CloudFormation を介してのみ使用でき、直接 KMS API コールを防ぐことができます。キーオペレーションは次のとおりです。
+ `kms:DescribeKey` – キープロパティとメタデータを検証します。このオペレーションは、暗号化コンテキスト条件では使用できないため、別のステートメントにあります。
+ `kms:GenerateDataKey` – ストレージ前に注釈を暗号化するためのデータ暗号化キーを生成します。このオペレーションには、スコープ付きアクセスコントロールの暗号化コンテキスト条件が含まれます。
+ `kms:Decrypt` – 以前に暗号化された注釈データを復号します。IAM ロールの場合、これには `kms:ViaService`条件が含まれます。サービスプリンシパルの場合、これには暗号化コンテキスト条件が含まれます。

`aws:SourceAccount` および `aws:SourceArn`条件キーは、混乱した代理攻撃に対する主要な保護を提供します。暗号化コンテキスト条件は、追加の検証レイヤーを提供します。詳細については、「 *AWS Key Management Service デベロッパーガイド*」の[「 aws:SourceArnまたは aws:SourceAccount条件キー](https://docs.aws.amazon.com/kms/latest/developerguide/least-privilege.html#least-privilege-source-arn)の使用」を参照してください。

**重要**  
フック実行ロールには AWS KMS アクセス許可は必要ありません。CloudFormation Hooks サービスプリンシパルは、すべての AWS KMS オペレーションを実行します。

## `SetTypeConfiguration` API の KMS アクセス許可
<a name="hooks-policy-example-settypeconfiguration-permissions"></a>

[SetTypeConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html) API コール中、CloudFormation は指定された AWS KMS キーで注釈データを暗号化するためのユーザーアクセス許可を検証します。`SetTypeConfiguration` API を使用して暗号化を設定するユーザーまたはロールに、次の IAM ポリシーを追加します。*プレースホルダー値*を、ユーザー自身の情報に置き換えます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "cloudformation:SetTypeConfiguration",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:DescribeKey",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
    },
    {
      "Effect": "Allow",
      "Action": "kms:GenerateDataKey",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123",
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    }
  ]
}
```

------

## `GetHookResult` API の KMS アクセス許可
<a name="hooks-policy-example-gethookresult-permissions"></a>

カスタマーマネージドキーを使用するフックの [GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) を呼び出すには、ユーザーはそのキーに対する`kms:Decrypt`アクセス許可を持っている必要があります。を呼び出すユーザーまたはロールに次の IAM ポリシーを追加します`GetHookResult`。をカスタマーマネージドキーの ARN `arn:aws:kms:us-east-1:123456789012:key/abc-123`に置き換えます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "cloudformation:GetHookResult",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
    }
  ]
}
```

------