

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

# データ暗号化
<a name="data-encryption"></a>

このトピックでは、転送中の暗号化と保管中の暗号化に関する Amazon Connect Decisions に固有の情報を提供します。

## 転送時の暗号化
<a name="data-encryption-in-transit"></a>

顧客と Amazon Connect Decisions 間、および Amazon Connect Decisions とそのダウンストリームの依存関係間のすべての通信は、TLS 1.2 以降の接続を使用して保護されます。

## 保管時の暗号化
<a name="data-encryption-at-rest"></a>

保管中のすべてのデータは、サーバー側の暗号化を使用して暗号化されます。暗号化はサービスによって透過的に処理されるため、追加の設定は必要ありません。

デフォルトでは、Amazon Connect Decisions は AWS Key Management Service (AWS KMS) の AWS 所有の暗号化キーを使用してデータを暗号化します。データを暗号化する AWS 所有のキーを保護するためのアクションを実行する必要はありません。詳細については、[AWS Key Management Service デベロッパーガイドの「AWS 所有](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)*AWS Key Management Service*」を参照してください。

必要に応じて、作成、ローテーション、無効化、アクセスポリシー管理など、キーライフサイクルを完全に制御するようにカスタマーマネージド KMS キーを設定できます。

### カスタマーマネージド KMS キーを使用した保管中のデータの暗号化
<a name="data-encryption-customer-managed-kms-keys"></a>

#### Amazon Connect Decisions がカスタマーマネージド KMS キーを使用する方法
<a name="data-encryption-how-uses-cmk"></a>

カスタマーマネージド KMS キーを設定すると、Amazon Connect Decisions はそれを使用して、保管中のインスタンス内のすべてのデータを暗号化します。これには、サービスの基盤となるインフラストラクチャに保存されたデータが含まれます。

サービスは 3 つのメカニズムを通じてキーにアクセスします。
+ **サービスプリンシ**パル — `scn.amazonaws.com`サービスプリンシパルは、暗号化コンテキストと混乱した代理ヘッダーを渡して、暗号化、復号、および GenerateDataKey オペレーションのために KMS を直接呼び出します。
+ **グラン**ト — サービスは、インスタンスを作成するときにキーにグラントを作成します。これらの許可により、依存する AWS のサービスがキーを使用してデータを暗号化および復号できます。許可は、インスタンスが削除されると廃止されます。
+ **FAS 経由のインスタンスロール** — コンソールを操作すると、サービスにリンクされたロールが `scn.<region>.amazonaws.com` ViaService 条件を介してキーにアクセスします。

**暗号化コンテキスト:** すべての直接 KMS オペレーションには、次の暗号化コンテキストが含まれます。

```
{"aws:scn:arn": "arn:aws:scn:<region>:<account-id>:instance/<instance-id>"}
```

**データキーキャッシュ:** Amazon Connect Decisions は、データキーを最大 15 分間キャッシュします。つまり、KMS キーへのアクセスを無効化または取り消した後、オペレーションが失敗し始めるまで、サービスはキャッシュされたデータキーを最大 15 分間引き続き使用できます。

#### カスタマーマネージド KMS キーの設定
<a name="data-encryption-configuring-cmk"></a>

Amazon Connect Decisions は、対称暗号化 KMS キーのみをサポートします。マルチリージョンキーがサポートされています。

##### カスタマーマネージド KMS キーを使用するためのアクセス許可の設定
<a name="data-encryption-configuring-permissions"></a>

カスタマーマネージド KMS キーを使用するには、次の 3 つのステップに従ってキーポリシーを設定します。

1. 以下の基本ポリシーを使用して **KMS キーを作成します**。

1. **Amazon Connect Decisions インスタンスを作成し**、そのキーを選択します。

1. **(オプション、推奨)** インスタンスレベルの制限でキーポリシーを更新します。

##### ステップ 1 — ベースポリシーを使用してキーを作成する
<a name="data-encryption-step1-base-policy"></a>

[AWS KMS コンソール](https://console.aws.amazon.com/kms)を開き、**キーの作成**を選択し、デフォルトポリシーを以下に置き換えます。`<customer-account-id>` を AWS アカウント ID に、 を AWS リージョン`<region>`に置き換えます。

```
{
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "AllowAccountRootFullAccess",
              "Effect": "Allow",
              "Principal": {
                "AWS": "arn:aws:iam::<customer-account-id>:root"
              },
              "Action": "kms:*",
              "Resource": "*"
            },
            {
              "Sid": "AllowScnRetrievalOfKeyMetadata",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": "kms:DescribeKey",
              "Resource": "*",
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": "<customer-account-id>"
                }
              }
            },
            {
              "Sid": "AllowScnEncryptDecryptWithContext",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey",
                "kms:GenerateDataKeyWithoutPlaintext"
              ],
              "Resource": "*",
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": "<customer-account-id>"
                }
              }
            },
            {
              "Sid": "AllowScnCryptoViaDependencyServices",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
              ],
              "Resource": "*",
              "Condition": {
                "StringEquals": {
                  "kms:ViaService": [
                    "redshift-serverless.<region>.amazonaws.com",
                    "aoss.<region>.amazonaws.com",
                    "dynamodb.<region>.amazonaws.com",
                    "s3.<region>.amazonaws.com"
                  ]
                }
              }
            },
            {
              "Sid": "AllowScnCreateGrantForDependencyServices",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": "kms:CreateGrant",
              "Resource": "*",
              "Condition": {
                "ForAllValues:StringEquals": {
                  "kms:GrantOperations": [
                    "Encrypt",
                    "Decrypt",
                    "GenerateDataKey",
                    "GenerateDataKeyWithoutPlaintext",
                    "DescribeKey",
                    "RetireGrant",
                    "ReEncryptFrom",
                    "ReEncryptTo",
                    "CreateGrant"
                  ]
                },
                "Bool": {
                  "kms:GrantIsForAWSResource": "true"
                }
              }
            },
            {
              "Sid": "AllowInstanceRoleDescribeKey",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": "kms:DescribeKey",
              "Resource": "*",
              "Condition": {
                "ArnLike": {
                  "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*"
                },
                "StringEquals": {
                  "kms:ViaService": "scn.<region>.amazonaws.com"
                }
              }
            },
            {
              "Sid": "AllowInstanceRoleEncryptDecrypt",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
              ],
              "Resource": "*",
              "Condition": {
                "ArnLike": {
                  "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*"
                },
                "StringEquals": {
                  "kms:ViaService": "scn.<region>.amazonaws.com"
                }
              }
            },
            {
              "Sid": "AllowInstanceRoleCreateGrant",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": "kms:CreateGrant",
              "Resource": "*",
              "Condition": {
                "ArnLike": {
                  "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*"
                },
                "StringEquals": {
                  "kms:ViaService": "scn.<region>.amazonaws.com"
                },
                "ForAllValues:StringEquals": {
                  "kms:GrantOperations": [
                    "Encrypt",
                    "Decrypt",
                    "GenerateDataKey",
                    "GenerateDataKeyWithoutPlaintext",
                    "DescribeKey",
                    "CreateGrant"
                  ]
                },
                "Bool": {
                  "kms:GrantIsForAWSResource": "true"
                }
              }
            }
          ]
        }
```

**ポリシーステートメントの説明:**
+ **AllowAccountRootFullAccess** — キー所有者がフルコントロールを保持していることを確認します。キーのロックアウトを防ぐために必要です。
+ **AllowScnRetrievalOfKeyMetadata** — サービスがインスタンスの作成中にキー設定を検証できるようにします。経由でアカウントにスコープされます`aws:SourceAccount`。
+ **AllowScnEncryptDecryptWithContext** — データに対する直接暗号化オペレーションを許可します。ステップ 3 の後、これは暗号化コンテキストを介して特定のインスタンスにさらに限定されます。
+ **AllowScnCryptoViaDependencyServices** — 暗号化コンテキストをサポートしていない依存関係サービスを通じて暗号化オペレーションを許可します。経由で特定のサービスエンドポイント`kms:ViaService`にスコープされます。
+ **AllowScnCreateGrantForDependencyServices** — 依存関係サービスの許可の作成を許可します。リストされたオペレーションのみに制限され、AWS リソースのみに制限されます。
+ **AllowInstanceRoleDescribeKey** — インスタンスのサービスにリンクされたロールが FAS を介してキーを記述できるようにします。
+ **AllowInstanceRoleEncryptDecrypt** — インスタンスロールが FAS を介してデータキーを復号および生成できるようにします。
+ **AllowInstanceRoleCreateGrant** — インスタンスロールがダウンストリーム統合の許可を作成できるようにします。

##### ステップ 2 — Amazon Connect Decisions インスタンスを作成する
<a name="data-encryption-step2-create-instance"></a>

インスタンスの作成時に、暗号化設定で**カスタマーマネージドキー**を選択し、ステップ 1 で作成したキーを選択します。

**重要**  
インスタンスの作成後にこの選択を変更することはできません。今後別のキーを使用する必要がある場合は、新しいインスタンスを作成する必要があります。

##### ステップ 3 (オプション) — インスタンスレベルの制限を追加する
<a name="data-encryption-step3-instance-restrictions"></a>

インスタンスを作成したら、キーポリシーを更新して、そのインスタンスのみへのアクセスを制限します。これにより、同じアカウントの他のインスタンスが キーを使用できなくなります。

`<customer-account-id>`、`<region>`、および `<instance-id>` (Amazon Connect Decisions コンソールに表示される UUID) を置き換えます。

基本ポリシーからの変更は次のとおりです。
+ インスタンス ARN に制限して、サービスプリンシパルステートメントに`aws:SourceArn`条件を追加します。
+ 暗号化オペレーションに`kms:EncryptionContext:aws:scn:arn`条件を追加し、暗号化コンテキストがインスタンスと一致する必要があります。

更新されたポリシー (変更したステートメントのみを表示):

**AllowScnRetrievalOfKeyMetadata** — `ArnLike`条件を追加します。

```
"Condition": {
          "StringEquals": {
            "aws:SourceAccount": "<customer-account-id>"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>"
          }
        }
```

**AllowScnEncryptDecryptWithContext** — `EncryptionContext`および `SourceArn`条件を追加します。

```
"Condition": {
          "StringEquals": {
            "aws:SourceAccount": "<customer-account-id>",
            "kms:EncryptionContext:aws:scn:arn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>"
          }
        }
```

**AllowInstanceRoleEncryptDecrypt** — `EncryptionContext`条件を追加します。

```
"Condition": {
          "ArnLike": {
            "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/scn-instance-role-*"
          },
          "StringEquals": {
            "kms:EncryptionContext:aws:scn:arn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>",
            "kms:ViaService": "scn.<region>.amazonaws.com"
          }
        }
```

##### カスタマーマネージド KMS キーを使用した新しいインスタンスの作成
<a name="data-encryption-creating-instance-with-cmk"></a>

Amazon Connect Decisions コンソールでインスタンスの作成時に KMS キーを選択します。インスタンスの作成の詳細については、[Amazon Connect Decisions インスタンスの作成](https://docs.aws.amazon.com/connect-decisions/latest/adminguide/creating-your-instance.html)」を参照してください。

##### 既存のインスタンスの暗号化設定を変更する
<a name="data-encryption-changing-encryption-config"></a>

Amazon Connect Decisions は、アクティブなインスタンスの KMS キーの変更をサポートしていません。別のキーを使用する必要がある場合は、目的のキーで設定された新しいインスタンスを作成する必要があります。前のキーで暗号化されたデータは、新しいインスタンスには保持されません。

##### カスタマーマネージド KMS キーへのアクセスのスコープダウン
<a name="data-encryption-scoping-down-access"></a>

次のメカニズムを使用して、キーへのアクセスを制限できます。
+ **暗号化コンテキスト** — キーポリシー`kms:EncryptionContext:aws:scn:arn`で を使用して、オペレーションを特定のインスタンスに制限します (ステップ 3 を参照）。
+ **混乱した代理保護** — サービスは KMS 呼び出し`aws:SourceArn`で `aws:SourceAccount`と を渡します。これらの条件を使用して、アカウントとインスタンスのみがキーにアクセスできるようにします。
+ **kms:ViaService** — インスタンスロールは を介してのみキーにアクセスし`scn.<region>.amazonaws.com`、 サービス外での直接使用を防ぎます。
+ **許可の制約** — 許可の範囲は明示的にリストされたオペレーションに限定`kms:GrantIsForAWSResource`されます。

**注記**  
依存関係サービス (Redshift Serverless、OpenSearch Serverless、DynamoDB) は、暗号化コンテキストや混乱した代理ヘッダーをサポートしていません。これらのサービスへのアクセスは、 `kms:ViaService` のみを使用してスコープされます。

### Amazon Connect Decisions と AWS KMS とのやり取りのモニタリング
<a name="data-encryption-monitoring-kms"></a>

AWS CloudTrail を使用して、Amazon Connect Decisions がユーザーに代わって行う KMS リクエストを追跡できます。次の値を持つログエントリを探します。


| フィールド | 想定値 | 
| --- | --- | 
| eventName | `Decrypt`, `GenerateDataKey`, `CreateGrant` | 
| userIdentity.invokedBy | `scn.amazonaws.com` | 
| requestParameters.encryptionContext | `{"aws:scn:arn": "arn:aws:scn:<region>:<account-id>:instance/<instance-id>"}` | 

これらの値を使用して CloudTrail イベントをフィルタリングし、Amazon Connect Decisions が KMS キーにアクセスするタイミングと方法を監査できます。

詳細については、[「AWS CloudTrail を使用した AWS KMS API コールのログ記録](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)」を参照してください。