

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

# へのアクセスの確認 AWS KMS keys
<a name="determining-access"></a>

に現在アクセスできるユーザーまたは内容の全範囲を判断するには AWS KMS key、KMS キーのキーポリシー、KMS キーに適用されるすべての[許可](grants.md)、および潜在的にすべての AWS Identity and Access Management (IAM) ポリシーを調べる必要があります。これらを確認することで、潜在的な KMS キーの使用範囲を明らかにしたり、コンプライアンスや監査の要件を満たしたりできます。次のトピックは、現在 KMS キーにアクセスできる AWS プリンシパル (アイデンティティ) の完全なリストを作成するのに役立ちます。

**Topics**
+ [

# キーポリシーを確認する
](determining-access-key-policy.md)
+ [

# IAM ポリシーの確認
](determining-access-iam-policies.md)
+ [

# 許可の確認
](determining-access-grants.md)

# キーポリシーを確認する
<a name="determining-access-key-policy"></a>

[キーポリシー](key-policies.md)は、KMS キーへのアクセスを制御するための主要な方法です。すべての KMS キーには、厳密に 1 つのキーポリシーが必要です。

キーポリシーが[デフォルトのキーポリシー](key-policy-default.md#key-policy-default-allow-root-enable-iam)で設定されるか、含まれている場合、キーポリシーによって、アカウントの IAM 管理者が IAM ポリシーを使用し、KMS キーへのアクセスを制御できるようになります。また、キーポリシーによって KMS キーを使用するアクセス許可が[別の AWS アカウント](key-policy-modifying-external-accounts.md) に付与されている場合、外部アカウントの IAM 管理者は、IAM ポリシーを使用してこれらのアクセス許可を委任できます。KMS キーにアクセスできるプリンシパルの完全なリストを確認するには、[IAM ポリシーを調べます](determining-access-iam-policies.md)。

アカウント[AWS マネージドキー](concepts.md#aws-managed-key)で AWS KMS [カスタマーマネージドキー](concepts.md#customer-mgn-key)または のキーポリシーを表示するには、 AWS KMS API で AWS マネジメントコンソール または [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html) オペレーションを使用します。キーポリシーを表示するには、KMS キーの `kms:GetKeyPolicy` アクセス許可が必要です。KMS キーのキーポリシーを表示する手順については、[キーポリシーを表示する](key-policy-viewing.md) を参照してください。

キーポリシードキュメントを確認し、各ポリシーステートメントの `Principal` 要素で指定されているすべてのプリンシパルを書き留めます。`Allow` 効果のあるポリシーステートメントでは、 `Principal`要素 AWS アカウント の IAM ユーザー、IAM ロール、および がこの KMS キーにアクセスできます。

**注記**  
[条件](policy-conditions.md)を使用してキーポリシーを制限しない限り、アクセス許可を付与するキーポリシーステートメントで、プリンシパルをアスタリスク (\$1) に設定しないでください。アスタリスクは、別のポリシーステートメントが明示的に拒否しない限り、KMS キーを使用するすべての AWS アカウント アクセス許可をすべての ID に付与します。他の のユーザーは AWS アカウント 、自分のアカウントで対応するアクセス許可があるたびに KMS キーを使用できます。

次の例では、[デフォルトのキーポリシー](key-policy-default.md)で見つかったポリシーステートメントを使用してこれを行う方法を示します。

**Example ポリシーステートメント 1**  

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
  "Action": "kms:*",
  "Resource": "*"
}
```
ポリシーステートメント 1 では、 `arn:aws:iam::111122223333:root`は AWS アカウント 111122223333 を参照する[AWS アカウントプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)です。(アカウントのルートユーザーではありません)。デフォルトでは、 を使用して新しい KMS キーを作成するとき AWS マネジメントコンソール、またはプログラムで新しい KMS キーを作成するときに、このようなポリシーステートメントがキーポリシードキュメントに含まれますが、キーポリシーは提供されません。  
へのアクセスを許可するステートメントを含むキーポリシードキュメント AWS アカウント は、[アカウントの IAM ポリシーが KMS キーへのアクセスを許可できるようにします](key-policy-default.md#key-policy-default-allow-root-enable-iam)。つまり、アカウントのユーザーとロールは、キーポリシードキュメントにプリンシパルとして明示的にリストされていない場合でも、KMS キーにアクセスできる可能性があります。プリンシパルとして AWS アカウント リストされているすべての のすべての [IAM ポリシーを調べ](determining-access-iam-policies.md)て、この KMS キーへのアクセスを許可するかどうかを確認してください。

**Example ポリシーステートメント 2**  

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"},
  "Action": [
    "kms:Describe*",
    "kms:Put*",
    "kms:Create*",
    "kms:Update*",
    "kms:Enable*",
    "kms:Revoke*",
    "kms:List*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```
ポリシーステートメント 2 では、 は AWS アカウント 111122223333 の KMSKeyAdmins という名前の IAM ロール`arn:aws:iam::111122223333:role/KMSKeyAdmins`を参照します。このロールを引き受ける権限を持つユーザーは、KMS キーを管理するための管理アクションである、ポリシーステートメントにリストされたアクションを実行できます。

**Example ポリシーステートメント 3**  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```
ポリシーステートメント 3 では、 は EncryptionApp in AWS アカウント 111122223333 という名前の IAM ロール`arn:aws:iam::111122223333:role/EncryptionApp`を参照します。このロールを引き受ける権限を持つプリンシパルは、対称暗号化 KMS キーの[暗号化オペレーション](kms-cryptography.md#cryptographic-operations)を含む、ポリシーステートメントにリストされたアクションを実行できます。

**Example ポリシーステートメント 4**  

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:ListGrants",
    "kms:CreateGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```
ポリシーステートメント 4 では、 は EncryptionApp in AWS アカウント 111122223333 という名前の IAM ロール`arn:aws:iam::111122223333:role/EncryptionApp`を参照します。このロールを引き受ける権限を持つプリンシパルは、ポリシーステートメントにリストされたアクションを実行できます。これらのアクションは、**ポリシーステートメント 3 の例**で許可されたアクションと連動する際に、KMS キーの使用を、[AWS KMSと統合されたほとんどのAWS のサービス](service-integration.md) (特に、[権限](grants.md)を使用するサービス) に委任するために必要なアクションになります。`Condition` 要素の [kms:GrantIsForAWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) 値により、委任は、委任が と統合 AWS KMS され、認可に許可を使用する AWS サービスである場合にのみ許可されます。

キーポリシードキュメントでプリンシパルを指定する各種方法をすべて確認するには、*IAM ユーザーガイド*の[プリンシパルの指定](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal_specifying)を参照してください。

 AWS KMS キーポリシーの詳細については、「」を参照してください[のキーポリシー AWS KMS](key-policies.md)。

# IAM ポリシーの確認
<a name="determining-access-iam-policies"></a>

キーポリシーと許可に加え、[IAM ポリシー](iam-policies.md)を使用して KMS キーへのアクセスを許可することもできます。IAM ポリシーとキーポリシーがどのように連携するかについては、「[アクセス AWS KMS 許可のトラブルシューティング](policy-evaluation.md)」を参照してください。

IAM ポリシーを使用して KMS キーに現在アクセスできるプリンシパルを特定するには、ブラウザベースの [IAM Policy Simulator](https://policysim.aws.amazon.com/) ツールを使用するか、IAM API にリクエストします。

**Contents**
+ [

## IAM ポリシーシミュレーターを使用した IAM ポリシーの確認
](#determining-access-iam-policy-simulator)
+ [

## IAM API を使用した IAM ポリシーの確認
](#determining-access-iam-api)

## IAM ポリシーシミュレーターを使用した IAM ポリシーの確認
<a name="determining-access-iam-policy-simulator"></a>

IAM Policy Simulator は、IAM ポリシーを介して KMS キーにアクセスできるプリンシパルを学習するのに役立ちます。

**IAM Policy Simulator を使用して KMS キーへのアクセスを特定するには**

1. にサインインし AWS マネジメントコンソール 、 で IAM Policy Simulator を開きます[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/)。

1. [**Users, Groups, and Roles**] ペインで、ポリシーをシミュレートするユーザー、グループ、またはロールを選択します。

1. (オプション) シミュレーションから除外するポリシーの横のチェックボックスをオフにします。すべてのポリシーをシミュレートする場合は、すべてのポリシーが選択された状態にします。

1. [**Policy Simulator**] ペインで、以下のオペレーションを行います。

   1. [**Select service**] で、[**Key Management Service**] を選択します。

   1. 特定の AWS KMS アクションをシミュレートするには、**アクションの選択**で、シミュレートするアクションを選択します。すべての AWS KMS アクションをシミュレートするには、**すべて選択**を選択します。

1. (オプション) Policy Simulator が、デフォルトですべての KMS キーへのアクセスをシミュレートします。　 特定の KMS キーへのアクセスをシミュレートするには、[**Simulation Settings**] (シミュレーション設定) を選択し、シミュレートする KMS キーの Amazon リソースネーム (ARN) を入力します。

1. [**Run Simulation (シミュレーションの実行)**] を選択します。

シミュレーションの結果は、[**Results**] セクションに表示されます。 AWS アカウントのすべてのユーザー、グループ、ロールについて、ステップ 2～6 を繰り返します。

## IAM API を使用した IAM ポリシーの確認
<a name="determining-access-iam-api"></a>

IAM API を使用して、IAM ポリシーをプログラムで調べることができます。次のステップは、API でユーザーベースのポリシーを確認する方法の概要を示します。

1. キーポリシーにプリンシパルとして AWS アカウント リストされている各 (つまり、この形式で指定された各[AWS アカウントプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts): `"Principal": {"AWS": "arn:aws:iam::111122223333:root"}`) について、IAM API の [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) および [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) オペレーションを使用して、アカウントのすべてのユーザーとロールを取得します。

1. リスト内の各ユーザーとロールについて、IAM API の [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html) オペレーションを使用し、以下のパラメータを渡します。
   + `PolicySourceArn` について、リストのユーザーやロールから Amazon リソースネーム (ARN) を指定します。`PolicySourceArn` は、各 `SimulatePrincipalPolicy` リクエストで 1 つしか指定できないため、このオペレーションは複数回 (リスト内のユーザーおよびロールごとに 1 回) 呼び出す必要があります。
   + `ActionNames` リストで、シミュレートするすべての AWS KMS API アクションを指定します。すべての AWS KMS API アクションをシミュレートするには、 を使用します`kms:*`。個々の AWS KMS API アクションをテストするには、各 API アクションの前に`kms:`「」など「」を付け`kms:ListKeys`ます。 AWS KMS API アクションの完全なリストについては、「AWS Key Management Service API リファレンス」の「[Actions](https://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html)」を参照してください。
   + (オプション) ユーザーやロールが特定の KMS キーにアクセスできるかどうかを特定するために、`ResourceArns` パラメータを使用して KMS キーの Amazon リソースネーム (ARN) のリストを指定します。ユーザーまたはロールが KMS キーにアクセスできるかどうかを特定するために、`ResourceArns` パラメータを省略してください。

IAM は各 `SimulatePrincipalPolicy` リクエストに対して、、 `allowed`, `explicitDeny`, 、またはの評価決定で応答 `implicitDeny`します。の評価決定を含むレスポンスごとに`allowed`、レスポンスには許可される特定の AWS KMS API オペレーションの名前が含まれます。評価で使用した KMS キーの ARN がある場合は、これも含まれます。

# 許可の確認
<a name="determining-access-grants"></a>

許可は、ユーザーまたは と統合された AWS のサービスが AWS KMS KMS キーを使用する方法とタイミングを指定するために使用できるアクセス許可を指定する高度なメカニズムです。権限は KMS キーにアタッチされ、各権限には KMS キーを使用するためのアクセス許可を受け取るプリンシパルと、許可されるオペレーションのリストが含まれます。許可は、キーポリシーに代わる手段であり、特定のユースケースで役立ちます。詳細については、「[の許可 AWS KMS](grants.md)」を参照してください。

KMS キーの許可のリストを取得するには、 AWS KMS [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) オペレーションを使用します。KMS キーの権限を確認することで、これらの権限で KMS キーを使用するアクセス許可を現在持っているユーザーやアプリケーションを特定できます。例えば、 AWS CLIの [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) コマンドから取得した権限の JSON 表現を次に示します。

```
{"Grants": [{
  "Operations": ["Decrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132",
  "RetiringPrincipal": "arn:aws:iam::123456789012:root",
  "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab",
  "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151834E9,
  "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}
}]}
```

KMS キーにアクセスできるユーザーやアプリケーションを見つけるには、`"GranteePrincipal"` 要素を確認します。前述の例では、被付与者のプリンシパルは、EC2 インスタンス i-5d476fab に関連して割り当てられたロールユーザーです。EC2 インフラストラクチャはこのロールを使用して、暗号化された EBS ボリューム vol-5cccfb4e をインスタンスにアタッチします。この場合、EC2 インフラストラクチャロールは、KMS キーを使用するアクセス許可を持っています。これは、この KMS キーで保護された、暗号化された EBS ボリュームを以前に作成したためです。その後、ボリュームを EC2 インスタンスにアタッチしました。

以下は、 AWS CLIの [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) コマンドから取得した権限の JSON 表現の別の例です。次の例では、被付与者プリンシパルは別のプリンシパルです AWS アカウント。

```
{"Grants": [{
  "Operations": ["Encrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "",
  "GranteePrincipal": "arn:aws:iam::444455556666:root",
  "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151269E9
}]}
```