

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

# Amazon Verified Permissions でのリソースの暗号化
<a name="security-data-protection-cmk"></a>

Amazon Verified Permissions は、デフォルトで暗号化を提供し、 AWS 所有の暗号化キーを使用して保管中の機密データを保護します。Amazon Verified Permissions では、追加の保護レイヤーとして AWS Key Management Service 、(AWS KMS) カスタマー管理キー(CMK) を使用してポリシーストアを暗号化できます。この機能により、保管時の暗号化による機密データの保護が保証され、以下に役立ちます。
+ アプリケーション側の運用負担を軽減して機密データを保護する
+ 独自の を介して承認ポリシーの詳細を表示できるユーザーを管理する AWS KMS カスタマー管理キー
+ セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと厳格な規制要件を満たす

以下のセクションでは、新しいポリシーストアの暗号化を設定し、暗号化キーを管理する方法について説明します。

## AWS KMS Amazon Verified Permissions のキータイプ
<a name="kms-key-types"></a>

Amazon Verified Permissions は と統合 AWS KMS して、顧客データの暗号化/復号に使用される暗号化キーを管理します。キーの種類と詳細については、「*AWS KMS デベロッパーガイド*」の「[AWS Key Management Service concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts-intro.html)」を参照してください。新しいポリシーストアを作成するときに、次の AWS KMS キータイプから選択してデータを暗号化できます。

### AWS 所有キー
<a name="aws-owned-key"></a>

デフォルトの暗号化タイプ。Amazon Verified Permissions は、追加料金なしでキーを所有し、作成時に保管中のリソースデータを暗号化します。Verified Permissions が所有するキーを使用してデータを暗号化/復号するために、コードまたはアプリケーションに追加の設定は必要ありません。

### カスタマーマネージドキー
<a name="customer-managed-key"></a>

 AWS アカウントでキーを作成、所有、管理します。 AWS KMS キーを完全に制御できます。 カスタマー管理キーには AWS KMS 料金が適用されます。詳細については、[AWS KMS 料金表](https://aws.amazon.com/kms/pricing/)ページを参照してください。キータイプの詳細については、「 *AWS KMS デベロッパーガイド*」の[「カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key)」を参照してください。

最上位リソース (ポリシーストア) カスタマー管理キー の暗号化に を指定すると、Verified Permissions はそのキーを使用してリソースとその子リソースを暗号化します。を使用してポリシーストアを暗号化するには カスタマー管理キー、キーポリシーで Verified Permissions へのアクセスを許可する必要があります。キーポリシーは、アクセスを制御する カスタマー管理キー ために にアタッチする[リソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)です。詳細については、「[Amazon Verified Permissions の AWS KMS キーの使用を許可する](#authorizing-kms-key-use)」を参照してください。

さらに、 を使用して暗号化されたポリシーストアを作成したり カスタマー管理キー、 によって暗号化されたポリシーストアに API コールを行うには カスタマー管理キー、呼び出しを行う IAM ユーザーまたはロールもキーにアクセスできる必要があります。Verified Permissions がキーにアクセスできない場合、そのキーによって暗号化されたリソースを含む承認の決定は古くなったり不正確になったりする可能性があります。キーにアクセスできない場合、そのキーによって暗号化されたリソースのread/update/deleteはできず、暗号化にキーを使用するための作成呼び出しは失敗します。

**注記**  
Verified Permissions 保管時の暗号化は、Verified Permissions が利用可能なすべての AWS リージョンで使用できます。

**重要**  
 カスタマー管理キー を使用してポリシーストアを暗号化すると、暗号化に別のキーを使用するようにリソースを更新したり、そのポリシーストアからキーを削除したりすることはできません。

## Amazon Verified Permissions での AWS KMS および データキーの使用
<a name="using-kms-data-keys"></a>

Amazon Verified Permissions の保管時の暗号化機能では、 AWS KMS キーとデータキーの階層を使用してリソースデータを保護します。

**注記**  
Amazon Verified Permissions は対称 AWS KMS キーのみをサポートします。非対称 AWS KMS キーを使用して Amazon Verified Permissions リソースを暗号化することはできません。

### AWS 所有キーの使用
<a name="using-aws-owned-keys"></a>

Amazon Verified Permissions は、デフォルトですべてのリソースを AWS 所有キーで暗号化します。これらのキーは、アカウントリソースを保護するために無料で使用でき、毎年ローテーションします。キーを表示、管理、使用、または監査する必要がないため、データ保護のためのアクションは必要ありません。 AWS 所有キーの詳細については、「 *AWS KMS デベロッパーガイド*」の[AWS 「 所有キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key)」を参照してください。

### カスタマーマネージドキーの使用
<a name="using-customer-managed-keys"></a>

暗号化 カスタマー管理キー 用の を選択すると、次の利点があります。
+  AWS KMS キーの作成と管理には、キーポリシーとキーへのアクセスを制御する IAM ポリシーの設定が含まれます AWS KMS 。 AWS KMS キーを有効または無効にしたり、自動キーローテーションを有効または無効にしたり、使用されなくなったときに AWS KMS キーを削除したりできます。
+ インポートされたキーマテリアル カスタマー管理キー で を使用するか、所有および管理しているカスタムキーストア カスタマー管理キー で を使用できます。
+  AWS KMS AWS CloudTrail ログで への Amazon Verified Permissions API コールを調べることで、Verified Permissions リソースの暗号化と復号化を監査できます。

Amazon Verified Permissions が暗号化/復号に カスタマー管理キーを使用するには、特定のキーポリシーを追加して、Amazon Verified Permissions がユーザーに代わってリソースを暗号化/復号できるようにする必要があります。

## Amazon Verified Permissions の AWS KMS キーの使用を許可する
<a name="authorizing-kms-key-use"></a>

少なくとも、Amazon Verified Permissions には、 に対する次のアクセス許可が必要です カスタマー管理キー。
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:DescribeKey`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`
+ `kms:Decrypt`

キーポリシーの例を以下に示します。

```
{  
    "Sid": "Enable AVP to use the KMS key for encrypting project J.A.K. policy resources",
    "Effect": "Allow",  
    "Principal": {  
        "Service": "verifiedpermissions.amazonaws.com"  
    },  
    "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKeyWithoutPlaintext",  
        "kms:Encrypt",  
        "kms:ReEncryptFrom",  
        "kms:ReEncryptTo",  
        "kms:DescribeKey"  
    ],  
    "Resource": "*"  
}
```

### ソースコンテキストについて
<a name="understanding-source-context"></a>

ソースコンテキストは、特定のキーに対して AWS KMS アクションを実行しようとするソース発信者に関する情報を提供します。これにより、コンテキストをデータのソースにバインドすることで、暗号化されたデータの混乱や誤用を防ぐことができます。

お客様は、次のキーポリシーステートメントなど、キーポリシーの追加条件としてソースコンテキストを使用できます。

```
{  
    "Version": "2012-10-17", 		 	 	 
    "Statement": [  
        {  
            "Sid": "Enable this account full access to this key",  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "arn:aws:iam::111122223333:root"  
            },  
            "Action": "kms:*",  
            "Resource": "*"  
        },  
        {  
            "Sid": "Enable AVP to retrieve this key's metadata",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "verifiedpermissions.amazonaws.com"  
            },  
            "Action": "kms:DescribeKey",  
            "Resource": "*",  
            "Condition": {  
                "StringEquals": {  
                    "aws:SourceAccount": "111122223333"  
                },  
                "StringLike": {  
                    "aws:SourceArn": "arn:aws:verifiedpermissions::111122223333:policy-store/*"  
                }  
            }  
        },  
        {  
            "Sid": "Enable AVP to encrypt/decrypt resources utilizing this key",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "verifiedpermissions.amazonaws.com"  
            },  
            "Action": [  
                "kms:Decrypt",  
                "kms:ReEncryptTo",  
                "kms:ReEncryptFrom",  
                "kms:GenerateDataKeyWithoutPlaintext",  
                "kms:Encrypt"  
            ],  
            "Resource": "*",  
            "Condition": {  
                "StringEquals": {  
                    "aws:SourceAccount": "111122223333"  
                },  
                "StringLike": {  
                    "aws:SourceArn": "arn:aws:verifiedpermissions::111122223333:policy-store/*"  
                }  
            }  
        }  
    ]  
}
```

このキーポリシーは、ソースアカウントがこの AWS KMS キーが存在するアカウントと同じ場合、Verified Permissions がユーザーに代わって AWS KMS 呼び出しを行うことを許可します。これらの値は、CMK キーの AWS CloudTrail 監査ログを確認するときに検証可能である必要があります。グローバル AWS 条件キーの詳細については、[「 `aws:SourceArn`または `aws:SourceAccount`条件キー](https://docs.aws.amazon.com/kms/latest/developerguide/least-privilege.html#key-policy-least-privilege)の使用」を参照してください。

### 暗号化コンテキストについて
<a name="understanding-encryption-context"></a>

暗号化コンテキストは、暗号化整合性チェックのための追加の認証済みデータを含むキーと値のペアのセットです。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS 暗号化バインドします。データを復号するには、同じ暗号化コンテキストを渡す必要があります。

Amazon Verified Permissions は、すべての AWS KMS 暗号化オペレーションで同じ暗号化コンテキストを使用し、Verified Permissions が暗号化/復号プロセスのためにユーザーに代わって AWS KMS 呼び出しを行うときにログ内で AWS CloudTrail 検証できます。デフォルトでは、Verified Permissions は、リソースを暗号化するときに次の暗号化コンテキストのキーと値のペアを使用します。

```
{  
    "aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/PSt123456789012"  
}
```

Amazon Verified Permissions では、暗号化/復号プロセス中に含めたい追加のメタデータの一部としてカスタム暗号化コンテキストを追加することもできます。つまり、キーポリシーは、以下の例のようなアクセス許可をよりきめ細かく付与できます。

```
{  
    "Version": "2012-10-17", 		 	 	 
    "Statement": [  
        {  
            "Sid": "Enable this account full access to this key",  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "arn:aws:iam::111122223333:root"  
            },  
            "Action": "kms:*",  
            "Resource": "*"  
        },  
        {  
            "Sid": "Enable AVP to retrieve this key's metadata",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "verifiedpermissions.amazonaws.com"  
            },  
            "Action": "kms:DescribeKey",  
            "Resource": "*"  
        },  
        {  
            "Sid": "Enable AVP to encrypt/decrypt resources utilizing this key",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "verifiedpermissions.amazonaws.com"  
            },  
            "Action": [  
                "kms:Decrypt",  
                "kms:ReEncryptTo",  
                "kms:ReEncryptFrom",  
                "kms:GenerateDataKeyWithoutPlaintext",  
                "kms:Encrypt"  
            ],  
            "Resource": "*",  
            "Condition": {  
                "StringLike": {  
                    "kms:EncryptionContext:aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/*",  
                    "kms:EncryptionContext:policy_owner": "Tim"  
                }  
            }  
        }  
    ]  
}
```

このキーポリシーは、暗号化コンテキストマップにキー が含まれ、その値が の形式に従い、キー`arn:aws:verifiedpermissions::111122223333:policy-store/*`と値のペア が含まれている場合`aws:verifiedpermissions:policy-store-arn`、Verified Permissions がユーザーに代わって AWS KMS 呼び出しを行うことを許可します`"policy_owner": "Tim"`。カスタム暗号化コンテキストを設定する方法については、[暗号化ポリシーストアの作成](#creating-encrypted-policy-store)「」を参照してください。

**注記**  
暗号化コンテキストに基づく条件を持つキーポリシーでは、各キーと値のペアをチェックするのではなく、暗号化コンテキストマップのサブセットにすることをお勧めします。サービスとその依存関係のアップストリームでは、表示されないキーと値のペアが追加される場合があり、キーポリシーで暗号化コンテキストマップの**正確な**外観に基づいて条件付きで が許可されていると、Verified Permissions のキーアクセスに影響する可能性があります。

### kms:ViaService について
<a name="understanding-kms-viaservice"></a>

`kms:ViaService` 条件キーは、 AWS KMS キーの使用を、指定された AWS サービスからのリクエストに制限します。この条件キーは、[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) (FAS) にのみ適用されます。の詳細については`kms:ViaService`、 *AWS KMS デベロッパーガイド*[のkms:ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service)」を参照してください。

たとえば、次のキーポリシーステートメントでは、 `kms:ViaService`条件キーを使用して、リクエスト[カスタマー管理キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key)が に代わって米国東部 (バージニア北部) リージョンの Amazon Verified Permissions から送信された場合にのみ、指定されたアクションに を使用することを許可します`BrentRole`。

```
{  
    "Sid": "Enable AVP to encrypt/decrypt resources using credentials of BrentRole",  
    "Effect": "Allow",  
    "Principal": {  
        "AWS": "arn:aws:iam::111122223333:role/BrentRole"  
    },  
    "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKeyWithoutPlaintext",  
        "kms:Encrypt",  
        "kms:ReEncryptFrom",  
        "kms:ReEncryptTo",  
        "kms:DescribeKey"  
    ],  
    "Resource": "*",  
    "Condition": {  
        "StringEquals": {  
            "kms:ViaService": [  
                "verifiedpermissions.us-east-1.amazonaws.com"  
            ]  
        }  
    }  
}
```

これは、Verified Permissions が AWS KMS ユーザーに代わって暗号化/復号を にリクエストするときに、Verified Permissions が ID、アクセス許可、およびセッション属性を渡すために必要です。FAS リクエストの詳細については、*IAM 「 ユーザーガイド*」の「[Forward Access Sessions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)」を参照してください。

### AWS KMS キーポリシーを完了する
<a name="complete-kms-key-policy"></a>

前のセクションの概念に基づいて、Amazon Verified Permissions が暗号化/復号化に CMK を使用できるようにするキーポリシーの例を次に示します。

```
{  
    "Version": "2012-10-17", 		 	 	 
    "Statement": [  
        {  
            "Sid": "Enable this account full access to this key",  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "arn:aws:iam::111122223333:root"  
            },  
            "Action": "kms:*",  
            "Resource": "*"  
        },  
        {  
            "Sid": "Enable AVP to retrieve this key's metadata",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "verifiedpermissions.amazonaws.com"  
            },  
            "Action": "kms:DescribeKey",  
            "Resource": "*",  
            "Condition": {  
                "StringEquals": {  
                    "aws:SourceAccount": "111122223333"  
                },  
                "StringLike": {  
                    "aws:SourceArn": "arn:aws:verifiedpermissions::111122223333:policy-store/*"  
                }  
            }  
        },  
        {  
            "Sid": "Enable AVP to encrypt/decrypt resources utilizing this key",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "verifiedpermissions.amazonaws.com"  
            },  
            "Action": [  
                "kms:Decrypt",  
                "kms:ReEncryptTo",  
                "kms:ReEncryptFrom",  
                "kms:Encrypt",  
                "kms:GenerateDataKeyWithoutPlaintext"  
            ],  
            "Resource": "*",  
            "Condition": {  
                "StringLike": {  
                    "kms:EncryptionContext:aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/*",  
                    "kms:EncryptionContext:policy_owner": "Tim",  
                    "aws:SourceArn": "arn:aws:verifiedpermissions::111122223333:policy-store/*"  
                },  
                "StringEquals": {  
                    "aws:SourceAccount": "111122223333"  
                }  
            }  
        },  
        {  
            "Sid": "Enable AVP to encrypt/decrypt resources using credentials of BrentRole",  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "arn:aws:iam::111122223333:role/BrentRole"  
            },  
            "Action": [  
                "kms:Decrypt",  
                "kms:GenerateDataKeyWithoutPlaintext",  
                "kms:Encrypt",  
                "kms:ReEncryptFrom",  
                "kms:ReEncryptTo",  
                "kms:DescribeKey"  
            ],  
            "Resource": "*",  
            "Condition": {  
                "StringEquals": {  
                    "kms:ViaService": [  
                        "verifiedpermissions.us-east-1.amazonaws.com"  
                    ]  
                },  
                "StringLike": {  
                    "kms:EncryptionContext:aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/*",  
                    "kms:EncryptionContext:policy_owner": "Tim"  
                }  
            }  
        }  
    ]  
}
```

**警告**  
Amazon Verified Permissions で既に使用されている AWS KMS キーのキーポリシーを変更するときは注意が必要です。Verified Permissions は、最上位のリソース作成時に最初に AWS KMS キーを設定するときに暗号化と復号のアクセス許可を検証しますが、後続のポリシー変更をオンデマンドで検証することはできません。必要なアクセス許可を不注意で削除すると、認可の決定と定期的な Verified Permissions サービスフローが中断される可能性があります。Amazon Verified Permissions の カスタマー管理キーに関連する一般的なエラーのトラブルシューティングのガイダンスについては、「」を参照してください[Amazon Verified Permissions のカスタマーマネージドキーのトラブルシューティング](#troubleshoot-cmk)。

### 暗号化されたリソースに必要な IAM ポリシー
<a name="iam-policy-for-encrypted-resources"></a>

アカウント内の IAM ロールを介して Verified Permissions を呼び出すお客様は、対応する IAM ポリシーに、リソースの暗号化と復号 カスタマー管理キー のために を利用するための適切なアクセス許可があることを確認する必要があります。

によって暗号化されたポリシーストアを作成する場合 カスタマー管理キー、次の IAM ポリシーは、必要な最低限のアクション AWS KMS と、それを実行するための Verified Permissions アクションを示しています。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Action": "verifiedpermissions:CreatePolicyStore",
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:DescribeKey",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

**注記**  
(Get\* および List\* オペレーション) を取得し、 によって暗号化されたポリシーストアを削除するには カスタマー管理キー、追加のアクセス許可は必要ありません。

で暗号化されたポリシーストアの更新 カスタマー管理キー、 (Get\* および List\* オペレーション) の取得、 で暗号化されたポリシーストアの子リソースの更新および削除を行う場合 カスタマー管理キー、次の IAM ポリシーは、必要最小限のポリシー AWS KMS と Verified Permissions アクションを示しています。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Action": "verifiedpermissions:*",
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

単一の IAM ポリシーとして、お客様は IAM ロールポリシーに以下を追加するだけです。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Action": "verifiedpermissions:*",
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:DescribeKey",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

## 暗号化されたポリシーストアの管理
<a name="managing-encrypted-policy-stores"></a>

ポリシーストアは、関連するすべてのポリシーリソースを含むエントリレベルのコンテナです。ポリシーストアと子リソースの階層の詳細については、[「Amazon Verified Permissions ユーザーガイド」の「Amazon Verified Permissions ポリシーストア](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/policy-stores.html)」を参照してください。 **

Verified Permissions でポリシーストアを作成すると、 AWS KMS キーを使用して保管時の暗号化を有効にできます。これにより、以下が保証されます。
+ ポリシーストアとその子リソースに対するすべての読み取り、更新、削除オペレーションは、復号プロセス カスタマー管理キー に提供された を利用します。
+ 認可決定呼び出し (IsAuthorized、BatchIsAuthorized、IsAuthorizedWithToken など) では、復号プロセス カスタマー管理キー に提供された が使用されます。

### 暗号化ポリシーストアの作成
<a name="creating-encrypted-policy-store"></a>

暗号化されたポリシーストアを作成する前に、 カスタマー管理キー 使用している に、Amazon Verified Permissions がキーを暗号化/復号化に使用するための適切なキーポリシーステートメントが設定されていることを確認してください。必要なアクセス許可[Amazon Verified Permissions の AWS KMS キーの使用を許可する](#authorizing-kms-key-use)については、「」を参照してください。

の使用 AWS CLI:

```
aws verifiedpermissions create-policy-store --region us-east-1 --encryption-settings file://encrypted.json --validation-settings "{\"mode\": \"OFF\"}"
```

`encrypted.json` は次のようになります。

```
{  
    "kmsEncryptionSettings": {  
        "key": "{{arn:aws:kms:us-east-1:111122223333:key/12345678-90ab-cdef-ghij-klmnopqrstuv}}",  
        "encryptionContext": {  
            "{{<ENCRYPTION_CONTEXT_KEY_1>}}": "{{<ENCRYPTION_CONTEXT_VALUE_1>}}",  
            "{{<ENCRYPTION_CONTEXT_KEY_2>}}": "{{<ENCRYPTION_CONTEXT_VALUE_2>}}",  
            ...  
        }  
    }  
}
```

を カスタマー管理キー ARN `key`に置き換え、 `<ENCRYPTION_CONTEXT_KEY>`と `<ENCRYPTION_CONTEXT_VALUE>`ペアを目的の`encryptionContext`キーと値のペアに置き換えます。キーと値のペアを追加しない場合は、 を完全に省略`encryptionContext`できます。

**重要**  
`aws:verifiedpermissions:policy-store-arn` カスタム暗号化コンテキストにキーと値のペアを含めないでください。これは自動的に追加され、渡されたカスタム暗号化コンテキストのキーと値のペアの一部である場合、検証エラーが発生します。

ポリシーストアの子リソースで使用可能な APIs「Amazon Verified Permissions API リファレンスガイド」の[「アクション](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_Operations.html)」を参照してください。 **

**注記**  
Amazon Verified Permissions リソースで AWS KMS カスタマー管理キー 使用されている が、 AWS KMS キーポリシーが正しくないために削除、無効化、またはアクセスできない場合、リソースの復号は失敗するため、承認の決定が古くなります。アクセスの喪失は、状況に応じて、一時的 (キーポリシーを修正できる) または永続的 (削除されたキーを復元できない) にすることができます。 AWS KMS キーの削除や無効化など、重要なオペレーション[へのアクセスを制限する](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-adding-permission.html)ことをお勧めします。また、Amazon Verified Permissions にアクセスできない AWS 万一、特権ユーザーがアクセスできるように、ブレーク[AWS グラスアクセス手順](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/ag.sad.5-implement-break-glass-procedures.html)を設定することをお勧めします。

## を使用した Amazon Verified Permissions インタラクションのモニタリング AWS KMS
<a name="monitoring-kms-interaction"></a>

Amazon Verified Permissions による の使用 カスタマー管理キー 状況をモニタリングできます AWS CloudTrail。Verified Permissions AWS KMS を介した への各リクエストには、リクエストパラメータで使用されている暗号化コンテキストとキー ARN ( カスタマー管理キー) が含まれます。

の AWS CloudTrail ログエントリの例`GenerateDataKeyWithoutPlaintext`:

```
{  
    "eventVersion": "1.11",  
    "userIdentity": {  
        "type": "AWSService",  
        "invokedBy": "verifiedpermissions.amazonaws.com"  
    },  
    "eventTime": "2025-09-28T16:51:04Z",  
    "eventSource": "kms.amazonaws.com",  
    "eventName": "GenerateDataKeyWithoutPlaintext",  
    "awsRegion": "us-east-1",  
    "sourceIPAddress": "verifiedpermissions.amazonaws.com",  
    "userAgent": "verifiedpermissions.amazonaws.com",  
    "requestParameters": {  
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/abcdefgh-0123-ijkl-4567-mnopqrstuvwx",  
        "encryptionContext": {  
            "aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/PSt123456789012",  
            "policy_store_editor": "Janus"  
        },  
        ...  
    },  
    ...  
}
```

の AWS CloudTrail ログエントリの例`Decrypt`:

```
{  
    "eventVersion": "1.11",  
    "userIdentity": {  
        "type": "AWSService",  
        "invokedBy": "verifiedpermissions.amazonaws.com"  
    },  
    "eventTime": "2025-09-28T16:53:21Z",  
    "eventSource": "kms.amazonaws.com",  
    "eventName": "Decrypt",  
    "awsRegion": "us-east-1",  
    "sourceIPAddress": "verifiedpermissions.amazonaws.com",  
    "userAgent": "verifiedpermissions.amazonaws.com",  
    "requestParameters": {  
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",  
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/abcdefgh-0123-ijkl-4567-mnopqrstuvwx",  
        "encryptionContext": {  
            "aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/PSt123456789012",  
            "policy_store_owner": "Elias"  
        }  
    },  
    ...  
}
```

の AWS CloudTrail ログエントリの例`ReEncrypt`:

```
{  
    "eventVersion": "1.11",  
    "userIdentity": {  
        "type": "AWSService",  
        "invokedBy": "verifiedpermissions.amazonaws.com"  
    },  
    "eventTime": "2025-09-28T16:51:04Z",  
    "eventSource": "kms.amazonaws.com",  
    "eventName": "ReEncrypt",  
    "awsRegion": "us-east-1",  
    "sourceIPAddress": "verifiedpermissions.amazonaws.com",  
    "userAgent": "verifiedpermissions.amazonaws.com",  
    "requestParameters": {  
        "sourceKeyId": "arn:aws:kms:us-east-1:111122223333:key/abcdefgh-0123-ijkl-4567-mnopqrstuvwx",  
        "destinationEncryptionContext": {  
            "aws:verifiedpermissions:policy-store-arn": "arn:aws:verifiedpermissions::111122223333:policy-store/PSt123456789012"  
        },  
        "sourceEncryptionAlgorithm": "SYMMETRIC_DEFAULT",  
        "destinationKeyId": "arn:aws:kms:us-east-1:111122223333:key/abcdefgh-0123-ijkl-4567-mnopqrstuvwx",  
        "sourceEncryptionContext": {  
            "aws:verifiedpermissions:policy_store_arn": "arn:aws:verifiedpermissions::111122223333:policy-store/PSt123456789012"  
        },  
        "destinationEncryptionAlgorithm": "SYMMETRIC_DEFAULT",  
        ...  
    },  
    ...  
}
```

ログエントリには、Amazon Verified Permissions のプリンシパルの`invokedBy`参照と、`requestParameters`マップ`encryptionContext/sourceEncryptionContext/destinationEncryptionContext`に含まれていることに注意してください。

の AWS CloudTrail ログエントリの例`DescribeKey`:

```
{  
    "eventVersion": "1.11",  
    "userIdentity": {  
        "type": "AWSService",  
        "invokedBy": "verifiedpermissions.amazonaws.com"  
    },  
    "eventTime": "2025-09-28T16:51:02Z",  
    "eventSource": "kms.amazonaws.com",  
    "eventName": "DescribeKey",  
    "awsRegion": "us-east-1",  
    "sourceIPAddress": "verifiedpermissions.amazonaws.com",  
    "userAgent": "verifiedpermissions.amazonaws.com",  
    "requestParameters": {  
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/abcdefgh-0123-ijkl-4567-mnopqrstuvwx"  
    },  
    ...  
}
```

ログエントリには Amazon Verified Permissions のプリンシパルの`invokedBy`参照が含まれていることに注意してください。

 AWS CloudTrail ログエントリの詳細については、*AWS CloudTrail 「 ユーザーガイド*」の[AWS CloudTrail 「イベントについて](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-events.html)」を参照してください。

## 制限事項
<a name="limitations"></a>

このトピックでは、Verified Permissions の現在の制限と、リソースの暗号化のための カスタマー管理キーの使用について説明します。
+ 一度有効にすると、ポリシーストアの暗号化を無効にすることはできません
+ 暗号化なしでポリシーストアを作成した後、 によって暗号化されるようにポリシーストアを更新することはできません。 カスタマー管理キー
+ 既存の暗号化されたポリシーストア カスタマー管理キー の への Verified Permissions アクセスを取り消すと、認可の決定が古くなる可能性があります。
+ を使用してポリシーストアを作成した後は カスタマー管理キー、カスタム暗号化コンテキスト値を変更することはできません。これらは、暗号化されたポリシーストアの作成時に設定された静的値です。

## Amazon Verified Permissions のカスタマーマネージドキーのトラブルシューティング
<a name="troubleshoot-cmk"></a>

このトピックでは、Amazon Verified Permissions を使用する際に発生する可能性がある一般的な カスタマー管理キー 関連エラーと、それらを解決するためのトラブルシューティング手順について説明します。

### アクセス拒否: AWS KMS アクセス許可の問題
<a name="access-denied-kms-permission"></a>

**エラー:** 「リソースがこのリージョンに存在しないか、リソースベースのポリシーがアクセスを許可していないか、リソースベースのポリシーが明示的にアクセスを拒否しているため、サービスまたは呼び出し元は指定された AWS KMS キーを使用する権限がありません」

これは、サービスまたは呼び出し元が IAM ポリシー/AWS KMS キーポリシーに必要な`kms:*`アクション (複数可) アクセス許可を持っていないか、参照されているキーが存在しないか、存在しなくなったことを意味します。

#### を使用したトラブルシューティング AWS CloudTrail:
<a name="troubleshooting-cloudtrail"></a>
+ で`kms.amazonaws.com`イベントを検索する AWS CloudTrail
+ 許可されていないと特定された AWS KMS オペレーションのイベント名を検索します (例: `Decrypt`、`ReEncrypt``GenerateDataKeyWithoutPlaintext`、、 `DescribeKey`など）。
+ `errorCode` フィールドと `errorMessage`フィールドを確認する
+ どのプリンシパルがオペレーションを試みたか `userIdentity` を確認する

この問題を解決するには、ポリシーと AWS KMS キー IAM ポリシーで適切な AWS KMS オペレーションアクセス許可をユーザーまたは IAM プリンシパルに付与します。詳細については、「[AWS KMS キーポリシーを完了する](#complete-kms-key-policy)」を参照してください。

### 検証例外: AWS KMS キー設定
<a name="validation-exception-kms-config"></a>

**エラー:**「設定済み AWS KMS キーに有効な設定がありません」

つまり、参照されているキーは、現在の設定のため カスタマー管理キー 、暗号化のためにサービスで使用することはできません。理由には、キーが無効になっている、キーがサポートされていない EncryptionAlgorithm、またはキーがサポートされていない KeyUsage タイプが含まれる場合があります。

### スロットリング例外: AWS KMS レート制限
<a name="throttling-exception-kms-rate"></a>

**エラー:**「呼び出すことができるレートを超えました AWS KMS」

このエラーは、キーの暗号化オペレーション AWS KMS の制限を超過したことを意味します: [https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html](https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html)。

## 関連情報
<a name="related-information"></a>
+ [Verified Permissions Policy ストアの管理](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/policy-stores.html)
+ [AWS KMS ベストプラクティス](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html)
+ [AWS KMS 暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)
+ [AWS CloudTrail Integration](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/logging-monitoring.html)
+ [AWS CloudTrail ログエントリの例](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-log-file-examples.html)