

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

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

Amazon Bedrock は、暗号化を使用して保管中のデータと転送中のデータを保護します。

**転送時の暗号化**

内部では AWS、転送中のすべてのネットワーク間データが TLS 1.2 暗号化をサポートしています。

Amazon Bedrock API とコンソールに対するリクエストには、安全な SSL 接続が使用されます。 AWS Identity and Access Management (IAM) ロールを Amazon Bedrock に渡し、トレーニングとデプロイのためにユーザーに代わって リソースにアクセスするアクセス許可を付与します。

**保管時の暗号化**

Amazon Bedrock は保管中の [カスタムモデルの暗号化](encryption-custom-job.md) を提供します。

## キー管理
<a name="key-management"></a>

 AWS Key Management Service を使用して、 リソースの暗号化に使用するキーを管理します。詳細については、「[AWS Key Management Service の概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)」を参照してください。KMS キーを使用して次のリソースを暗号化できます。
+ Amazon Bedrock の場合
  + モデルカスタマイズジョブとその出力カスタムモデル – コンソールでのジョブの作成中、または [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) API コールで `customModelKmsKeyId` フィールドの指定によって。
  + エージェント – コンソールでのエージェント作成中、または [CreateAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateAgent.html) API コールで `customerEncryptionKeyArn` フィールドの指定によって。
  + ナレッジベースのデータソース取り込みジョブ – コンソールでのナレッジベースの作成中、または [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) または [UpdateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateDataSource.html) API コールで `kmsKeyArn` フィールドの指定によって。
  + Amazon OpenSearch Service のベクトルストア – ベクトルストアの作成中。詳細については、「[Amazon OpenSearch Service コレクションの作成、一覧表示、および削除](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html)」と「[Amazon OpenSearch Service の保管中のデータの暗号化](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html)」を参照してください。
  + モデル評価ジョブ – コンソールでモデル評価ジョブを作成するか、[CreateEvaluationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateEvaluationJob.html) API コールでの ` customerEncryptionKeyId` でキー ARN を指定して、モデル評価ジョブを作成する場合。
+ Amazon S3 経由 – 詳細については、[AWS KMS 「キーによるサーバー側の暗号化の使用 (SSE-KMS)」を参照してください。](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)
  + モデルカスタマイズ用のトレーニング、検証、出力データ
  + ナレッジベースのデータソース
+ 経由 AWS Secrets Manager – 詳細については、「」の[「シークレットの暗号化と復号 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)」を参照してください。
  + サードパーティーモデルのベクトルストア

リソースを暗号化したら、リソースを選択してコンソールで **[詳細]** を表示するか、次の `Get` API コールを使用して KMS キーの ARN を見つけることができます。
+ [GetModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetModelCustomizationJob.html)
+ [GetAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetAgent.html)
+ [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html)

# カスタムモデルの暗号化
<a name="encryption-custom-job"></a>

Amazon Bedrock は、[CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) アクションまたは[コンソール](model-customization-submit.md)でトレーニングデータを使用して、Amazon Bedrock の基盤モデルをファインチューニングしたカスタムモデルを作成します。カスタムモデルは によって管理および保存されますAWS。

Amazon Bedrock では、お客様から提供されたファインチューニングデータを Amazon Bedrock 基盤モデルのファインチューニングにのみ使用します。Amazon Bedrock は、ファインチューニングモデルを他の目的に使用することはありません。トレーニングデータは、Titan の基盤モデルのトレーニングに使用されたり、第三者に配布されたりすることはありません。使用状況のタイムスタンプや記録されたアカウント ID など、サービスによって記録されたその他の使用状況データ・情報も、モデルのトレーニングには使用されません。

ファインチューニングジョブが完了すると、ファインチューニングのために提供されたトレーニングデータまたは検証データは Amazon Bedrock に保存されません。

ファインチューニング済みモデルでは、生成の完了中にファインチューニングデータの一部をリプレイできます。どのような形式でも、アプリによってファインチューニングデータが公開されない場合、まずトレーニングデータから機密データを除外する必要があります。誤って機密データを使用してカスタマイズ済みモデルを既に作成している場合は、そのカスタムモデルを削除し、トレーニングデータから機密情報を除外してから、新しいモデルを作成します。

カスタムモデル (コピーされたモデルを含む) を暗号化するため、Amazon Bedrock には 2 つのオプションがあります。

1. **AWS 所有のキー** – デフォルトでは、Amazon Bedrock はカスタムモデルを で暗号化しますAWS 所有のキー。表示、管理、使用AWS 所有のキー、またはそれらの使用を監査することはできません。ただし、データを暗号化するキーを保護するために何か行動を起こしたり、プログラムを変更したりする必要はありません。詳細については、「*AWS Key Management Service デベロッパーガイド*」の 「[AWS 所有のキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)」を参照してください。

1. **カスタマーマネージドキー** – 自分で管理するカスタマーマネージドキーを使用してカスタムモデルを暗号化できます。詳細についてはAWS KMS keys、「 *AWS Key Management Serviceデベロッパーガイド*」の[「カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

**注記**  
Amazon Bedrock は、 を使用して保管時の暗号化を無償AWS 所有のキーで自動的に有効にします。カスタマーマネージドキーを使用する場合、AWS KMS料金が適用されます。料金の詳細については、「[AWS Key Management Service の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

詳細についてはAWS KMS、「 [AWS Key Management Serviceデベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)」を参照してください。

**Topics**
+ [Amazon Bedrock が で許可を使用する方法AWS KMS](#encryption-br-grants)
+ [カスタマーマネージドキーを作成する方法と、キーポリシーをアタッチする方法について](#encryption-key-policy)
+ [カスタムモデルとコピーされたモデルのアクセス権とキーポリシー](#encryption-cm-statements)
+ [Amazon Bedrock サービスの暗号化キーをモニタリングする](#encryption-monitor-key)
+ [トレーニング、検証、出力データの暗号化](#encryption-custom-job-data)

## Amazon Bedrock が で許可を使用する方法AWS KMS
<a name="encryption-br-grants"></a>

モデルのカスタマイズまたはモデルのコピージョブのためにカスタムモデルを暗号化するカスタマーマネージドキーを指定すると、Amazon Bedrock は [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを AWS KMS に送信して、カスタムモデルに関連付けられた**プライマリ** KMS [グラント](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)をユーザーに代わって作成します。このグラントにより、Amazon Bedrock はカスタマーマネージドキーにアクセスして使用できます。の許可AWS KMSは、Amazon Bedrock に顧客のアカウントの KMS キーへのアクセスを許可するために使用されます。

このプライマリグラントは、Amazon Bedrock が、以下の内部オペレーションでカスタマーマネージドキーを使用するために必要です。
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) リクエストを に送信AWS KMSして、ジョブの作成時に入力した対称カスタマーマネージド KMS キー ID が有効であることを確認します。
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを に送信AWS KMSして、カスタマーマネージドキーによって暗号化されたデータキーを生成し、暗号化されたデータキーを復号して、モデルアーティファクトの暗号化に使用できます。
+ モデルカスタマイズ`DescribeKey`、モデルコピー、またはプロビジョンドスループット作成の非同期実行のために、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを に送信AWS KMSして、上記のオペレーションのサブセット (`GenerateDataKey`、、`Decrypt`) を使用してスコープダウンされたセカンダリ許可を作成します。
+ Amazon Bedrock は、サービスにより [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) リクエストが送信されるように、グラントの作成中に廃止するプリンシパルを指定する。

カスタマーマネージドAWS KMSキーへのフルアクセスがあります。グラントへのアクセスを取り消すには、[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)の「[Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete)」の手順に従います。または、[キーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)を変更して、いつでもカスタマーマネージドキーへのサービスのアクセスを削除できます。これを行うと、Amazon Bedrock はお客様のキーで暗号化されたカスタムモデルにアクセスできなくなります。

### カスタムモデルのプライマリグラントとセカンダリグラントのライフサイクル
<a name="encryption-primary-secondary-grants"></a>
+ **プライマリグラント**の有効期間は長く、関連するカスタムモデルがまだ使用されている限り、アクティブのままです。カスタムモデルが削除されると、対応するプライマリグラントは自動的に廃止されます。
+ **セカンダリグラント**は、有効期間が短く、Amazon Bedrock が顧客に代わって実行するオペレーションが完了するとすぐに自動的に廃止されます。例えば、モデルコピージョブが完了すると、Amazon Bedrock にコピーされたカスタムモデルを暗号化することを許可したセカンダリグラントは、すぐに廃止されます。

## カスタマーマネージドキーを作成する方法と、キーポリシーをアタッチする方法について
<a name="encryption-key-policy"></a>

作成して管理するキーを使用して AWSリソースを暗号化するには、以下の一般的なステップを実行します。

1. (前提条件) IAM ロールに [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) アクションのアクセス権があることを確認します。

1. [「キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」の手順に従って、 AWS KMSコンソールまたは [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションを使用してカスタマーマネージドキーを作成します。

1. キーの作成は、キーの使用を必要とするオペレーション ([モデルのカスタマイズジョブの送信](model-customization-submit.md)時や[モデルの推論の実行](inference-invoke.md)時など) に使用できるキーに対して `Arn` を返します。

1. 必要なアクセス権を持つキーポリシーを作成してキーにアタッチします。キーポリシーを作成するには、「 AWS Key Management Serviceデベロッパーガイド」の[「キーポリシーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)」の手順に従います。

## カスタムモデルとコピーされたモデルのアクセス権とキーポリシー
<a name="encryption-cm-statements"></a>

KMS キーを作成したら、キーポリシーをアタッチします。キーポリシーとは、カスタマーマネージドキーにアタッチしてアクセスを制御する[リソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)です。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。カスタマーマネージドキーを作成する際に、キーポリシーを指定することができます。キーポリシーはいつでも変更できますが、AWS KMS 全体に変更が反映されるまで、多少時間がかかる場合があります。詳細については、[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)の「[Managing access to customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)」を参照してください。

カスタムモデルとコピーされたモデルを暗号化するキーには、次の KMS [アクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-actions-as-permissions)が使用されます。

1. [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) – 指定された KMS キーへの[グラントオペレーション](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)によるアクセスを Amazon Bedrock サービスプリンシパルに許可して、カスタマーマネージドキーのグラントを作成します。グラントの詳細については、[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)の「[Grants in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)」を参照してください。
**注記**  
また、Amazon Bedrock では廃止プリンシパルを設定し、不要になったグラントを自動的に廃止します。

1. [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) – カスタマーマネージドキーの詳細情報を提供して、Amazon Bedrock にキーの検証を許可します。

1. [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) – カスタマーマネージドキーの詳細情報を提供して、Amazon Bedrock にユーザーアクセスの検証を許可します。Amazon Bedrock は、生成された暗号文をカスタムモデルとともに保存し、カスタムモデルユーザーに対する追加の検証チェックとして使用します。

1. [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – 保存された暗号文を復号して、カスタムモデルを暗号化する KMS キーにロールが適切にアクセスできることを確認します。

ベストプラクティスとして、[kms:ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service) 条件キーを含めて、キーへのアクセスを Amazon Bedrock サービスに制限することをお勧めします。

キーにアタッチできるキーポリシーは 1 つだけですが、ポリシーの `Statement` フィールドのリストにステーメントを追加して、キーポリシーに複数のステートメントをアタッチできます。

次のステートメントは、カスタムモデルとコピーされたモデルの暗号化に関連しています。

### モデルを暗号化する
<a name="encryption-key-policy-encrypt"></a>

カスタマーマネージドキーを使用してカスタムモデルまたはコピーされたモデルを暗号化するには、次のステートメントをキーポリシーに含めて、モデルの暗号化を許可します。`Principal` フィールドで、キーの暗号化と復号を許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。`kms:ViaService` 条件キーを使用する場合、リージョンごとに行を追加するか、*\$1\$1region\$1* の代わりに *\$1* を使用して、Amazon Bedrock をサポートするすべてのリージョンを許可できます。

```
{
    "Sid": "PermissionsEncryptDecryptModel",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::${account-id}:role/${role}"
        ]
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey",
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "kms:ViaService": [
                "bedrock.${region}.amazonaws.com"
            ] 
        }
    }
}
```

### 暗号化されたモデルへのアクセスを許可する
<a name="encryption-key-policy-decrypt"></a>

KMS キーで暗号化されたモデルへのアクセスを許可するには、キーの復号を許可するキーポリシーに次のステートメントを含めます。`Principal` フィールドで、キーの復号を許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。`kms:ViaService` 条件キーを使用する場合、リージョンごとに行を追加するか、*\$1\$1region\$1* の代わりに *\$1* を使用して、Amazon Bedrock をサポートするすべてのリージョンを許可できます。

```
{
    "Sid": "PermissionsDecryptModel",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::${account-id}:role/${role}"
        ]
    },
    "Action": [
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "kms:ViaService": [
                "bedrock.${region}.amazonaws.com"
            ] 
        }
    }
}
```

作成する必要があるキーポリシーについては、ユースケースに対応するセクションを展開してください。

### カスタムモデルを暗号化するためのキーアクセス権を設定する
<a name="encryption-cm"></a>

カスタマイズしたモデルを KMS キーで暗号化する場合、そのキーのキーポリシーはユースケースに依存します。自分のユースケースに対応するセクションを展開してください。

#### モデルをカスタマイズするロールとモデルを呼び出すロールが同じ
<a name="encryption-cm-custom-invoke-same"></a>

カスタムモデルを呼び出すロールが、モデルをカスタマイズするロールと同じ場合は、[モデルを暗号化する](#encryption-key-policy-encrypt) からのステートメントのみが必要です。次のポリシーテンプレートの `Principal` フィールドで、カスタムモデルをカスタマイズして呼び出すことを許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCustomModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCustomModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

#### モデルをカスタマイズするロールとモデルを呼び出すロールが異なる
<a name="encryption-custom-invoke-different"></a>

カスタムモデルを呼び出すロールが、モデルをカスタマイズするロールと異なる場合は、[モデルを暗号化する](#encryption-key-policy-encrypt) と [暗号化されたモデルへのアクセスを許可する](#encryption-key-policy-decrypt) からの両方のステートメントが必要です。次のポリシーテンプレートのステートメントを次のように変更します。

1. 最初のステートメントでは、キーの暗号化と復号を許可します。`Principal` フィールドで、カスタムモデルをカスタマイズするアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

1. 2 番目のステートメントでは、キーの復号のみが許可されます。`Principal` フィールドで、カスタムモデルを呼び出すことのみを許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCustomModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCustomModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "PermissionsDecryptModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

### カスタムモデルをコピーするためのキーアクセス権を設定する
<a name="encryption-copy"></a>

所有しているモデルまたは共有されているモデルをコピーする場合、最大 2 つのキーポリシーを管理する必要がある場合があります。

#### コピーされたモデルを暗号化するキーのキーポリシー
<a name="encryption-copied-model-key-policy"></a>

コピーされたモデルを KMS キーで暗号化する場合、そのキーのキーポリシーはユースケースに依存します。自分のユースケースに対応するセクションを展開してください。

##### モデルをコピーするロールとモデルを呼び出すロールが同じ
<a name="encryption-copied-model-copy-invoke-same"></a>

コピーされたモデルを呼び出すロールが、モデルコピーを作成するロールと同じ場合は、[モデルを暗号化する](#encryption-key-policy-encrypt) からのステートメントのみが必要です。次のポリシーテンプレートの `Principal` フィールドで、コピーしたモデルをコピーして呼び出すことを許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCopiedModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCopiedModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

##### モデルをコピーするロールとモデルを呼び出すロールが異なる
<a name="encryption-copied-model-copy-invoke-different"></a>

コピーされたモデルを呼び出すロールが、モデルコピーを作成するロールと異なる場合は、[モデルを暗号化する](#encryption-key-policy-encrypt) と [暗号化されたモデルへのアクセスを許可する](#encryption-key-policy-decrypt) からの両方のステートメントが必要です。次のポリシーテンプレートのステートメントを次のように変更します。

1. 最初のステートメントでは、キーの暗号化と復号を許可します。`Principal` フィールドで、コピーしたモデルの作成を許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

1. 2 番目のステートメントでは、キーの復号のみが許可されます。`Principal` フィールドで、コピーしたモデルを呼び出すことのみを許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsCopiedModelKey",
    "Statement": [
        {
            "Sid": "PermissionsEncryptCopiedModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "PermissionsDecryptCopiedModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

#### コピーするソースモデルを暗号化するキーのキーポリシー
<a name="encryption-copy-source-model-key-policy"></a>

コピーするソースモデルが KMS キーで暗号化されている場合、[暗号化されたモデルへのアクセスを許可する](#encryption-key-policy-decrypt) からのステートメントを、ソースモデルを暗号化するキーのキーポリシーにアタッチします。このステートメントにより、ソースモデルを暗号化するキーの復号がモデルコピーのロールで許可されます。次のポリシーテンプレートの `Principal` フィールドで、ソースモデルのコピーを許可するアカウントを、`AWS` サブフィールドがマッピングされるリストに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PermissionsSourceModelKey",
    "Statement": [
        {
            "Sid": "PermissionsDecryptModel",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/Role"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## Amazon Bedrock サービスの暗号化キーをモニタリングする
<a name="encryption-monitor-key"></a>

Amazon Bedrock リソースでAWS KMSカスタマーマネージドキーを使用する場合、 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)または [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) を使用して、Amazon Bedrock が送信するリクエストを追跡できますAWS KMS。

以下は、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) が Amazon Bedrock によって呼び出された KMS オペレーションをモニタリングしてプライマリグラントを作成するAWS CloudTrailイベントの例です。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelCopy/SampleUser01",
        "accountId": "111122223333",
        "accessKeyId": "EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/RoleForModelCopy",
                "accountId": "111122223333",
                "userName": "RoleForModelCopy"
            },
            "attributes": {
                "creationDate": "2024-05-07T21:46:28Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "bedrock.amazonaws.com"
    },
    "eventTime": "2024-05-07T21:49:44Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "bedrock.amazonaws.com",
    "userAgent": "bedrock.amazonaws.com",
    "requestParameters": {
        "granteePrincipal": "bedrock.amazonaws.com",
        "retiringPrincipal": "bedrock.amazonaws.com",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "operations": [
            "Decrypt",
            "CreateGrant",
            "GenerateDataKey",
            "DescribeKey"
        ]
    },
    "responseElements": {
        "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

## トレーニング、検証、出力データの暗号化
<a name="encryption-custom-job-data"></a>

Amazon Bedrock を使用してモデルカスタマイズジョブを実行する場合、入力ファイルを Amazon S3 バケットに保存します。ジョブが完了すると、Amazon Bedrock はジョブの作成時に指定した S3 バケットに出力メトリクスファイルを保存し、その結果のカスタムモデルアーティファクトは によって制御される S3 バケットに保存しますAWS。

出力ファイルは、S3 バケットの暗号化設定で暗号化されます。これらは、S3 バケットの設定方法に応じて、[SSE-S3 サーバー側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)または [AWS KMS SSE-KMS 暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)で暗号化されます。

# インポートされたカスタムモデルの暗号化
<a name="encryption-import-model"></a>

Amazon Bedrock では、同じ暗号化アプローチを使用する 2 つの方法によるカスタムモデルの作成がサポートされています。カスタムモデルは、以下によって管理および保存されますAWS。
+ **カスタムモデルのインポートジョブ** — カスタマイズされたオープンソースの基盤モデル (Mistral AI モデルや Llama モデルなど) をインポートする場合。
+ **カスタムモデルの作成** — SageMaker AI でカスタマイズした Amazon Nova モデルをインポートする場合。

カスタムモデルを暗号化するために、Amazon Bedrock には次のオプションが用意されています。
+ **AWS所有キー** – デフォルトでは、Amazon Bedrock はインポートされたカスタムモデルを AWS所有キーで暗号化します。AWS所有キーを表示、管理、使用したり、その使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するために何らかの操作を行ったり、プログラムを変更したりする必要はありません。詳細については、「AWS Key Management Service デベロッパーガイド」の「[AWS 所有キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#aws-owned-cmk)」を参照してください。
+ **カスタマーマネージドキー (CMK)** – カスタマーマネージドキー (CMK) を選択することで、既存のAWS所有の暗号化キーに 2 番目の暗号化レイヤーを追加できます。カスタマーマネージドキーを作成、所有、管理できます。

   この暗号化レイヤーはユーザーが完全に制御できるため、以下のタスクを実行できます: 
  + キーポリシーの確立と維持
  + IAM ポリシーとグラントの確立と維持
  + キーポリシーの有効化と無効化
  + キー暗号化マテリアルのローテーション
  + タグの追加
  + キーエイリアスの作成
  + キー削除のスケジュール

  詳細については、*AWS Key Management Service デベロッパーガイド*の「[Customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

**注記**  
インポートするすべてのカスタムモデルについて、Amazon Bedrock はAWS所有キーを使用して保管時の暗号化を自動的に有効にし、顧客データを無償で保護します。カスタマーマネージドキーを使用する場合、AWS KMS料金が適用されます。料金の詳細については、「[AWS Key Management Service 料金表](https://docs.aws.amazon.com/)」を参照してください。

## Amazon Bedrock が で許可を使用する方法AWS KMS
<a name="import-model-kms-grants"></a>

カスタマーマネージドキーを指定して、インポートされたモデルを暗号化する場合。Amazon Bedrock は、[CreateGrant](https://docs.aws.amazon.com//kms/latest/APIReference/API_CreateGrant.html) [リクエストを送信することで、インポートされたモデル](https://docs.aws.amazon.com/)に関連付けられた**プライマリ**AWS KMSグラントをユーザーに代わって作成しますAWS KMS。このグラントにより、Amazon Bedrock はカスタマーマネージドキーにアクセスして使用できます。の許可AWS KMSは、Amazon Bedrock に顧客のアカウントの KMS キーへのアクセスを許可するために使用されます。

このプライマリグラントは、Amazon Bedrock が、以下の内部オペレーションでカスタマーマネージドキーを使用するために必要です。
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) リクエストを に送信AWS KMSして、ジョブの作成時に入力した対称カスタマーマネージド KMS キー ID が有効であることを確認します。
+ [GenerateDataKey](https://docs.aws.amazon.com//kms/latest/APIReference/API_GenerateDataKey.html) リクエストと [Decrypt](https://docs.aws.amazon.com//kms/latest/APIReference/API_Decrypt.html) リクエストを AWS KMS に送信して、カスタマーマネージドキーによって暗号化されるデータキーを生成し、暗号化されたデータキーを復号してモデルアーティファクトの暗号化に使用する。
+ [CreateGrant](https://docs.aws.amazon.com//kms/latest/APIReference/API_CreateGrant.html) リクエストを に送信AWS KMSして、モデルインポートの非同期実行とオンデマンド推論のために、上記のオペレーションのサブセット (`DescribeKey`、`GenerateDataKey`、`Decrypt`) を使用してスコープダウンされたセカンダリ許可を作成します。
+ Amazon Bedrock は、サービスにより [RetireGrant](https://docs.aws.amazon.com//kms/latest/APIReference/API_RetireGrant.html) リクエストが送信されるように、グラントの作成中に廃止するプリンシパルを指定する。

カスタマーマネージドAWS KMSキーへのフルアクセスがあります。許可へのアクセスを取り消すには、「*AWS デベロッパーガイド*」の「[付与の使用停止と取り消し](https://docs.aws.amazon.com//kms/latest/developerguide/grant-manage.html#grant-delete)」の手順に従います。または、キーポリシーを変更すると、いつでもカスタマーマネージドキーへのサービスのアクセスを削除できます。これを行うと、Amazon Bedrock はキーで暗号化されたインポート済みモデルにアクセスできなくなります。

### インポートされたカスタムモデルのプライマリグラントとセカンダリグラントのライフサイクル
<a name="import-model-kms-grants-lifecycle"></a>
+ **プライマリグラント**の有効期間は長く、関連するカスタムモデルがまだ使用されている限り、アクティブのままです。インポートされたカスタムモデルが削除されると、対応するプライマリグラントは自動的に廃止されます。
+ **セカンダリグラント**は、有効期間が短く、Amazon Bedrock が顧客に代わって実行するオペレーションが完了するとすぐに自動的に廃止されます。例えば、カスタムモデルのインポートジョブが完了すると、Amazon Bedrock がインポートされたカスタムモデルを暗号化することを許可したセカンダリグラントはすぐに廃止されます。

# カスタマーマネージドキー (CMK) を使用する
<a name="import-model-using-cmk"></a>

インポートしたカスタムモデルをカスタマーマネージドキーを使用して暗号化する予定の場合は、次の手順を実行してください。

1. AWS Key Management Service でカスタマーマネージドキーを作成します。

1. インポートしたカスタムモデルを、指定したロールが作成および使用するためのアクセス許可を定めた[リソースベースのポリシー](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_identity-vs-resource.html)をアタッチします。

**カスタマーマネージドキーを作成する**

まず、`CreateKey` のアクセス許可が与えられていることを確認します。次に、[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)の手順に従って、AWS KMSコンソールまたは [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) API オペレーションでカスタマーマネージドキーを作成します。必ず対称暗号化キーを作成してください。

キーを作成すると、そのキーの `Arn` が返されます。これを、カスタムモデルインポート機能でカスタムモデルをインポートするときに、`importedModelKmsKeyId ` として使用できます。

**キーポリシーを作成してカスタマーマネージドキーにアタッチする**

キーポリシーとは、カスタマーマネージドキーにアタッチして、そのキーへのアクセスを制御する[リソースベースのポリシー](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_identity-vs-resource.html)です。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。カスタマーマネージドキーを作成する際に、キーポリシーを指定することができます。キーポリシーはいつでも変更できますが、AWS KMS 全体に変更が反映されるまで、多少時間がかかる場合があります。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[カスタマーマスターキーへのアクセスを制御する](https://docs.aws.amazon.com//kms/latest/developerguide/control-access-overview.html#managing-access)」を参照してください。

**インポートしたカスタムモデルを暗号化する**

カスタマーマネージドキーを使用してインポートされたカスタムモデルを暗号化するには、キーポリシーに次のAWS KMSオペレーションを含める必要があります。
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) – [グラントオペレーション](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)による指定された KMS キーへのアクセスを Amazon Bedrock サービスプリンシパルに許可して、カスタマーマネージドキーのグラントを作成します。グラントの詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[Grants in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)」を参照してください。
**注記**  
また、Amazon Bedrock では廃止プリンシパルを設定し、不要になったグラントを自動的に廃止します。
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) – カスタマーマネージドキーの詳細情報を提供して、Amazon Bedrock にキーの検証を許可します。
+ [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) – カスタマーマネージドキーの詳細情報を提供して、Amazon Bedrock にユーザーアクセスの検証を許可します。Amazon Bedrock は、生成された暗号文を、インポートしたカスタムモデルとともに保存し、インポートしたカスタムモデルのユーザーに対する追加の検証チェックとして使用します。
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – 保存された暗号文を復号して、インポートしたカスタムモデルを暗号化する KMS キーに、ロールが適切にアクセスできることを確認します。

インポートするモデルを暗号化するために使用するロールのキーにアタッチできるポリシーの例は、以下のとおりです。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS key policy for a key to encrypt an imported custom model",
    "Statement": [
        {
            "Sid": "Permissions for model import API invocation role",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/role"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**暗号化したカスタムインポートモデルを復号する**

別のカスタマーマネージドキーで既に暗号化されているカスタムモデルをインポートする場合は、次のポリシーに示すように、同じロールに対して `kms:Decrypt` のアクセス許可を追加する必要があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS key policy for a key that encrypted a custom imported model",
    "Statement": [
        {
            "Sid": "Permissions for model import API invocation role",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/role"
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Amazon Bedrock サービスの暗号化キーを監視する
<a name="import-model-monitor-encryption-keys"></a>

Amazon Bedrock リソースでAWS KMSカスタマーマネージドキーを使用する場合、 [AWS CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-user-guide.html)または [Amazon CloudWatch Logs](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) を使用して、Amazon Bedrock が送信するリクエストを追跡できますAWS KMS。

以下は、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) が Amazon Bedrock によって呼び出されたAWS KMSオペレーションをモニタリングしてプライマリグラントを作成するAWS CloudTrailイベントの例です。

```
{
"eventVersion": "1.09",
    "userIdentity": {
"type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelImport/SampleUser01",
        "accountId": "111122223333",
        "accessKeyId": "EXAMPLE",
        "sessionContext": {
"sessionIssuer": {
"type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/RoleForModelImport",
                "accountId": "111122223333",
                "userName": "RoleForModelImport"
            },
            "attributes": {
"creationDate": "2024-05-07T21:46:28Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "bedrock.amazonaws.com"
    },
    "eventTime": "2024-05-07T21:49:44Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "bedrock.amazonaws.com",
    "userAgent": "bedrock.amazonaws.com",
    "requestParameters": {
"granteePrincipal": "bedrock.amazonaws.com",
        "retiringPrincipal": "bedrock.amazonaws.com",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "operations": [
            "Decrypt",
            "CreateGrant",
            "GenerateDataKey",
            "DescribeKey"
        ]
    },
    "responseElements": {
"grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
        {
"accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

「[ポリシーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-overview.html)」の手順に従って、次のリソースベースのポリシーを KMS キーにアタッチします。このポリシーには、2 つのステートメントが含まれています。

1. ロールがモデルカスタマイズのアーティファクトを暗号化するためのアクセス許可。インポートされたカスタムモデルビルダーロールの ARN を `Principal` フィールドに追加します。

1. インポートされたカスタムモデルをロールが推論で使用するためのアクセス許可。インポートされたカスタムモデルユーザーロールの ARN を `Principal` フィールドに追加します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS Key Policy",
    "Statement": [
        {
            "Sid": "Permissions for imported model builders",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/role"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Permissions for imported model users",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/role"
            },
            "Action": "kms:Decrypt",
            "Resource": "*"
        }
    ]
}
```

------

# Amazon Bedrockデータ自動化での暗号化
<a name="encryption-bda"></a>

 Amazon Bedrockデータ自動化 (BDA) は、暗号化を使用して保管中のデータを保護します。これには、サービスで保存されているブループリント、プロジェクト、抽出されたインサイトが含まれます。BDA には、データを暗号化するためのオプションが 2 つ用意されています。

1. AWS所有キー – デフォルトでは、BDA はAWS所有キーを使用してデータを暗号化します。AWS所有キーを表示、管理、使用したり、その使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するためのアクションの実施やプログラムの変更を行う必要はありません。詳細については、「 Key Management Service デベロッパーガイド」の「 [AWS所有](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)AWSキー」を参照してください。

1.  カスタマーマネージドキー – 自分で管理するカスタマーマネージドキーを使用してデータを暗号化できます。AWS KMSキーの詳細については、[「 Key Management Service デベロッパーガイド」の「カスタマーマネージド](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)AWSキー」を参照してください。BDA は、Amazon Bedrock コンソールで使用するためのカスタマーマネージドキーをサポートしておらず、API オペレーションのみをサポートしています。

Amazon Bedrockデータオートメーションは、AWS所有キーを使用した保管時の暗号化を無償で自動的に有効にします。カスタマーマネージドキーを使用する場合、AWS KMS料金が適用されます。料金の詳細については、AWS KMS[「 の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

## で 許可Amazon Bedrockを使用する方法AWS KMS
<a name="encryption-bda-grants"></a>

 invokeDataAutomationAsync を呼び出すときに BDA の暗号化にカスタマーマネージドキーを指定すると、CreateGrant リクエストを送信することで、サービスがユーザーに代わってリソースに関連付けられた許可を作成しますAWS KMS。この権限により、BDA はカスタマーマネージドキーにアクセスして使用できます。

 BDA では、カスタマーマネージドキーの権限を次の内部オペレーションに使用します。
+ DescribeKey — リクエストを に送信AWS KMSして、指定した対称カスタマーマネージドAWS KMSキー ID が有効であることを確認します。
+ GenerateDataKey と Decrypt — にリクエストを送信AWS KMSして、カスタマーマネージドキーによって暗号化されたデータキーを生成し、暗号化されたデータキーを復号して、リソースの暗号化に使用できます。
+ CreateGrant — オペレーションAWS KMSの非同期実行のために、上記のオペレーションのサブセット (DescribeKey、GenerateDataKey、Decrypt) を使用してスコープダウンされたグラントを作成するリクエストを に送信します。

 カスタマーマネージドAWS KMSキーへのフルアクセスがあります。権限へのアクセスを取り消すには、AWS KMS デベロッパーガイドの「権限の取得と取り消し」のステップを実行します。または、カスタマーマネージドキーへのサービスのアクセスを随時削除するには、キーポリシーを変更します。そうすると、BDA ではキーで暗号化されたリソースにアクセスできなくなります。

権限を取り消した後で新しい invokeDataAutomationAsync 呼び出しを開始すると、BDA によって権限が再作成されます。権限は 30 時間後に BDA によって廃止されます。

## カスタマーマネージドキーの作成とキーポリシーのアタッチ
<a name="encryption-bda-creating-keys"></a>

 作成および管理するキーを使用して BDA リソースを暗号化するには、次の一般的なステップを実行します。

1.  (前提条件) IAM ロールに CreateKey アクションのアクセス権があることを確認します。

1.  [ 「キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」の手順に従って、 AWS KMSコンソールまたは CreateKey オペレーションを使用してカスタマーマネージドキーを作成します。

1.  キーを作成すると、invokeDataAutomationAsync オペレーションなど、キーを使用する必要があるオペレーション (例: BDA でプロジェクトまたはブループリントを作成する場合) に使用できる ARN が返されます。

1.  必要なアクセス権を持つキーポリシーを作成してキーにアタッチします。キーポリシーを作成するには、「 AWS KMSデベロッパーガイド」の[「キーポリシーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-create.html)」の手順に従います。

## Amazon BedrockData Automation リソースのアクセス許可とキーポリシー
<a name="encryption-bda-key-policies.title"></a>

 AWS KMSキーを作成したら、キーポリシーをアタッチします。BDA リソースを暗号化するキーには、次の AWS KMS アクションが使用されます。

1.  kms:CreateGrant – InvokeDataAutomationAsync に必要なグラントオペレーションを通じて指定されたキーへの BDA サービスアクセスを許可することで、カスタマーマネージドAWS KMSキーのグラントを作成します。

1.  kms:DescribeKey – カスタマーマネージドキーの詳細を提供し、BDA がキーを検証できるようにします。

1.  kms:GenerateDataKey – カスタマーマネージドキーの詳細情報を提供して、BDA にユーザーアクセスの検証を許可します。

1.  kms:Decrypt – 保存された暗号文を復号して、ロールが BDA リソースを暗号化するAWS KMSキーに適切にアクセスできることを確認します。

Amazon Bedrock Data Automation のキーポリシー

 カスタマーマネージドキーを使用して BDA リソースを暗号化するには、キーポリシーに次のステートメントを含め、`${account-id}`、`${region}`、`${key-id}` を特定の値に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "KMS key policy for a key to encrypt data for BDA resource",
    "Statement": [
        {
            "Sid": "Permissions for encryption of data for BDA resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/Role"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

**IAM ロールのアクセス許可**

BDA とやり取りするために使用される IAM ロールには、次のアクセス許可AWS KMSが必要です。`${region}`、`${account-id}`、および を特定の値`${key-id}`に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "bedrock.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## Amazon Bedrock オートメーションの暗号化コンテキスト
<a name="encryption-bda-context"></a>

BDA は、すべての暗号化オペレーションで同じAWS KMS暗号化コンテキストを使用します。キーは で、`aws:bedrock:data-automation-customer-account-id`値はAWSアカウント ID です。暗号化コンテキストの例を以下に示します。

```
"encryptionContext": {
     "bedrock:data-automation-customer-account-id": "account id"
}
```

**暗号化コンテキストによるモニタリングに暗号化コンテキストを使用する**  
対称カスタマーマネージドキーを使用してデータを暗号化する場合は、監査レコードとログで暗号化コンテキストを使用して、カスタマーマネージドキーがどのように使用されているかを特定することもできます。暗号化コンテキストは、 AWS CloudTrailまたは Amazon CloudWatch Logs によって生成されたログにも表示されます。

**暗号化コンテキストを使用して顧客マネージドキーへのアクセスを制御する**  
対称カスタマーマネージドキー (CMK) へのアクセスを制御するための条件として、キーポリシーと IAM ポリシー内の暗号化コンテキストを使用することもできます。付与する際に、暗号化コンテキストの制約を使用することもできます。BDA は、権限に関わる暗号化コンテキスト制約を使用して、アカウントまたはリージョン内のカスタマーマネージドキーへのアクセスを制御します。グラントの制約では、指定された暗号化コンテキストの使用をグラントが許可するオペレーションが必要です。

次に、特定の暗号化コンテキストのカスタマーマネージドキーへのアクセスを付与するキーポリシーステートメントの例を示します。このポリシーステートメントの条件では、暗号化コンテキストを指定する暗号化コンテキスト制約がグラントに必要です。

```
[
    {
        "Sid": "Enable DescribeKey, Decrypt, GenerateDataKey",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
        },
        "Action": ["kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKey"],
        "Resource": "*"
    },
    {
        "Sid": "Enable CreateGrant",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
        },
        "Action": "kms:CreateGrant",
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws:bedrock:data-automation-customer-account-id": "111122223333"
            },
            "StringEquals": {
                "kms:GrantOperations": ["Decrypt", "DescribeKey", "GenerateDataKey"]
            }
        }
    }
]
```

## Amazon Bedrockデータ自動化の暗号化キーのモニタリング
<a name="encryption-bda-monitoring"></a>

 Amazon BedrockData Automation リソースでAWS KMSカスタマーマネージドキーを使用する場合、 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)または [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) を使用してAmazon Bedrock、Data Automation が送信するリクエストを追跡できますAWS KMS。以下は、[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) が Amazon BedrockData Automation によって呼び出されるAWS KMSオペレーションをモニタリングしてプライマリグラントを作成するAWS CloudTrailイベントの例です。

```
{
    "eventVersion": "1.09",
        "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/RoleForDataAutomation/SampleUser01",
        "accountId": "111122223333",
        "accessKeyId": "EXAMPLE",
        "sessionContext": {
        "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAIGDTESTANDEXAMPLE",
        "arn": "arn:aws:iam::111122223333:role/RoleForDataAutomation",
        "accountId": "111122223333",
        "userName": "RoleForDataAutomation"
        },
        "attributes": {
        "creationDate": "2024-05-07T21:46:28Z",
        "mfaAuthenticated": "false"
    }
    },
    "invokedBy": "bedrock.amazonaws.com"
    },
    "eventTime": "2024-05-07T21:49:44Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "bedrock.amazonaws.com",
    "userAgent": "bedrock.amazonaws.com",
    "requestParameters": {
    "granteePrincipal": "bedrock.amazonaws.com",
    "retiringPrincipal": "bedrock.amazonaws.com",
    "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
     "constraints": {
            "encryptionContextSubset": {
                "aws:bedrock:data-automation-customer-account-id": "000000000000"
            }
        },
    "operations": [
    "Decrypt",
    "CreateGrant",
    "GenerateDataKey",
    "DescribeKey"
    ]
    },
    "responseElements": {
    "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE",
    "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
    {
    "accountId": "111122223333",
    "type": "AWS::KMS::Key",
    "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

# エージェントリソースの暗号化
<a name="encryption-agents-new"></a>

デフォルトでは、保管中のデータを暗号化することで、機密データの保護に伴う運用のオーバーヘッドと複雑な作業を軽減できます。同時に、セキュリティを重視したアプリケーションを構築することで、暗号化のコンプライアンスと規制の厳格な要件を満たすことができます。

Amazon Bedrock は、デフォルトの AWS が所有するキーを使用して、エージェントの情報を自動的に暗号化します。これには、コントロールプレーンデータとセッションデータが含まれます。AWS 所有のキーの使用を表示、管理、監査することはできません。詳細については、「[AWS owned keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)」を参照してください。

この暗号化レイヤーは無効にはできませんが、AWS 所有のキーの代わりにカスタマーマネージドキーを使用してエージェントの情報を暗号化することもできます。Amazon Bedrock は、デフォルトの AWS 所有の暗号化の代わりに、お客様が作成、所有、管理できる対称カスタマーマネージドキー (CMK) の使用をサポートしています。詳細については、「[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

**重要**  
Amazon Bedrock は、AWS 所有のキーを使用してエージェントのセッション情報を無料で自動的に暗号化します。
カスタマーマネージドキーを使用する場合、AWS KMS 料金が適用されます。料金の詳細については、「[AWS Key Management Service の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。
2025 年 1 月 22 日より*前に*作成したエージェントについて、エージェントリソースの暗号化にカスタマーマネージドキーを使用する場合は、「[2025 年 1 月 22 日より前に作成されたエージェントのエージェントリソースの暗号化](encryption-agents.md)」の手順に従います。

# カスタマーマネージドキー (CMK) を使用したエージェントリソースの暗号化
<a name="cmk-agent-resources"></a>

エージェントの構築時に指定された次のエージェント情報を使用し、いつでもカスタマーマネージドキーを作成してエージェントの情報を暗号化できます。

**注記**  
次のエージェントリソースは、2025 年 1 月 22 日以降に作成されたエージェントに対してのみ暗号化されます。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/cmk-agent-resources.html)

カスタマーマネージドキーを使用するには、以下のステップを実行します。

1.  AWS Key Management Serviceでカスタマーマネージドキーを作成します。

1. キーポリシーを作成してカスタマーマネージドキーにアタッチする

## カスタマーマネージドキーを作成する
<a name="create-cmk-agent"></a>

対称カスタマーマネージドキーは、 AWS マネジメントコンソールまたは AWS Key Management Service APIs を使用して作成できます。

 まず、`CreateKey` アクセス許可があることを確認し、「*AWS Key Management Service デベロッパーガイド*」の「[対称カスタマーマネージドキーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」のステップに従います。

**キーポリシー** - キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[カスタマーマネージドキーへのアクセスを管理する](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)」を参照してください。

2025 年 1 月 22 日以降にエージェントを作成し、カスタマーマネージドキーを使用してエージェントの情報を暗号化する場合は、エージェント API オペレーションを呼び出すユーザーまたはロールに、キーポリシーで次のアクセス許可が付与されていることを確認してください。
+ [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) - AWS KMS の外部で使用する一意の対称データキーを返します。
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – KMS キーによって暗号化された暗号文を復号します。

キーの作成は、エージェントの作成時に `customerEncryptionKeyArn` として使用できるキーの `Arn` を返します。

## キーポリシーを作成してカスタマーマネージドキーにアタッチする
<a name="attach-policy-agent"></a>

カスタマーマネージドキーを使用してエージェントリソースを暗号化する場合、Amazon Bedrock がユーザーに代わってエージェントリソースを暗号化および復号できるように、ID ベースのポリシーとリソースベースのポリシーを設定する必要があります。

**ID ベースのポリシー**

ユーザーに代わってエージェントリソースを暗号化および復号するエージェント API を呼び出すアクセス許可を持つ IAM ロールまたはユーザーに、次の ID ベースのポリシーをアタッチします。このポリシーは、API コールを行うユーザーが AWS KMS アクセス許可を持っていることを検証します。`${region}`、`${account-id}`、`${agent-id}`、`${key-id}` を適切な値に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EncryptAgents",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

**リソースベースのポリシー**

Amazon S3 のスキーマが暗号化されているアクショングループを作成する*場合にのみ*、次のリソースベースのポリシーを AWS KMS キーにアタッチします。他のユースケースでは、リソースベースのポリシーをアタッチする必要はありません。

次のリソースベースのポリシーをアタッチするには、必要に応じてアクセス許可の範囲を変更し、`${region}`、`${account-id}`、`${agent-id}`、`${key-id}` を適切な値に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow account root to modify the KMS key, not used by Amazon Bedrock.",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}"
        },
        {
            "Sid": "Allow Amazon Bedrock to encrypt and decrypt Agent resources on behalf of authorized users",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

## カスタマーマネージドキーの変更
<a name="change-cmk"></a>

Amazon Bedrock エージェントは、*DRAFT* エージェントに関連付けられたカスタマーマネージドキーが変更された場合、またはカスタマーマネージドキーから AWS 所有キーに移行した場合、バージョニングされたエージェントの再暗号化をサポートしていません。*DRAFT* リソースのデータのみが新しいキーで再暗号化されます。

バージョニングされたエージェントのキーを使用して本番データを処理する場合、そのキーのアクセス許可を削除しないでください。

バージョンで使用されているキーを表示および確認するには、[GetAgentVersion](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_GetAgentVersion.html) を呼び出し、レスポンスで `customerEncryptionKeyArn` を確認します。

# カスタマーマネージドキー (CMK) を使用してエージェントセッションを暗号化する
<a name="ltm-permissions"></a>

エージェントのメモリを有効にしていて、カスタマーマネージドキーを使用してエージェントセッションを暗号化する場合は、次のキーポリシーと呼び出し元 ID IAM アクセス許可を設定して、カスタマーマネージドキーを設定する必要があります。

**カスタマーマネージドキーポリシー**

Amazon Bedrock は、これらのアクセス許可を使用して暗号化されたデータキーを生成し、生成されたキーを使用してエージェントメモリを暗号化します。Amazon Bedrock には、生成されたデータキーを異なる暗号化コンテキストで再暗号化するためのアクセス許可も必要です。再暗号化アクセス許可は、カスタマーマネージドキーが別のカスタマーマネージドキーまたはサービス所有キー間で移行する場合にも使用されます。詳細については、「[Hierarchical Keyring](https://docs.aws.amazon.com//database-encryption-sdk/latest/devguide/use-hierarchical-keyring.html)」を参照してください。

`$region`、`account-id` および `${caller-identity-role}` を適切な値に置き換えます。

```
{
    "Version": "2012-10-17",		 	 	 
    {
        "Sid": "Allow access for bedrock to enable long term memory",
        "Effect": "Allow",
        "Principal": {
            "Service": [
                "bedrock.amazonaws.com",
            ],
        },
        "Action": [
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:ReEncrypt*"
        ],
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "$account-id"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:bedrock:$region:$account-id:agent-alias/*"
            }
        }
        "Resource": "*"
    },
    {
        "Sid": "Allow the caller identity control plane permissions for long term memory",
        "Effect": "Allow", 
        "Principal": {
            "AWS": "arn:aws:iam::${account-id}:role/${caller-identity-role}"
        },
        "Action": [
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:ReEncrypt*"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:${region}:${account-id}:agent-alias/*"
            }
        }
    },
    {
        "Sid": "Allow the caller identity data plane permissions to decrypt long term memory",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::${account-id}:role/${caller-identity-role}"
        },
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:${region}:${account-id}:agent-alias/*",
                "kms:ViaService": "bedrock.$region.amazonaws.com" 
            }
        }
    }
}
```

**エージェントメモリを暗号化および復号化するための IAM アクセス許可**

メモリが有効になっているエージェントの KMS キーを設定するには、identity calling Agents API に次の IAM アクセス許可が必要です。Amazon Bedrock エージェントは、これらのアクセス許可を使用して、API がモデルを管理、トレーニング、デプロイするための上記のキーポリシーに記載されているアクセス許可を発信者 ID に付与されているかを確認します。エージェントを呼び出す API の場合、Amazon Bedrock エージェントは発信者 ID の `kms:Decrypt` アクセス許可を使用してメモリを復号します。

`$region`、`account-id` および `${key-id}` を適切な値に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AgentsControlPlaneLongTermMemory",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKeyWithoutPlaintext", 
                "kms:ReEncrypt*"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/*"
                }
            }
        },
        {
            "Sid": "AgentsDataPlaneLongTermMemory",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/*"
                }
            }
        }
    ]
}
```

------

# エージェントの予防的セキュリティのベストプラクティス
<a name="security-best-practice-agents"></a>

Amazon Bedrock サービスに関する以下のベストプラクティスは、セキュリティインシデントの防止に役立ちます。

**安全な接続を使用**

`https://` で始まる接続など、転送時に機密情報を安全に保つには、常に暗号化された接続を使用してください。

**リソースへの最小権限のアクセスを実装する**

Amazon Bedrock リソースのカスタムポリシーを作成する際は、タスクの実行に必要なアクセス許可のみを付与します。最小限の許可セットから開始し、必要に応じて追加許可を付与することをお勧めします。最小特権アクセスの実装は、エラーや悪意のある攻撃から生じる可能性のあるリスクと影響を軽減するために不可欠です。詳細については、「[Amazon Bedrock のためのアイデンティティとアクセス管理](security-iam.md)」を参照してください。

**顧客データを含むエージェントリソースには、PII を含めません。**

エージェントリソースを作成、更新、削除する際に ([CreateAgent](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_CreateAgent.html) を使用する場合など)、アクショングループ名やナレッジベース名などのカスタマーマネージドキーの使用をサポートしていないフィールドには、個人を特定できる情報 (PII) を含め内でください。カスタマーマネージドキーの使用をサポートするフィールドのリストについては、「[カスタマーマネージドキー (CMK) を使用したエージェントリソースの暗号化](cmk-agent-resources.md)」を参照してください。

# 2025 年 1 月 22 日より前に作成されたエージェントのエージェントリソースの暗号化
<a name="encryption-agents"></a>

**重要**  
2025 年 1 月 22 日*以降*にエージェントを作成した場合は、「[エージェントリソースの暗号化](encryption-agents-new.md)」の手順に従います。

Amazon Bedrock はエージェントのセッション情報を暗号化します。デフォルトでは、Amazon Bedrock は AWSマネージドキーを使用してこのデータを暗号化します。オプションで、カスタマーマネージドキーを使用して、エージェントアーティファクトを暗号化することもできます。

詳細についてはAWS KMS keys、「 *AWS Key Management Serviceデベロッパーガイド*」の[「カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

カスタム KMS キーを使用してエージェントとのセッションを暗号化する場合、Amazon Bedrock がユーザーに代わってエージェントリソースを暗号化および復号できるように、次の ID ベースのポリシーとリソースベースのポリシーを設定する必要があります。

1. `InvokeAgent` 呼び出しを行うアクセス許可を持つ IAM ロールまたはユーザーに次の ID ベースのポリシーをアタッチします。このポリシーは、`InvokeAgent` 呼び出しを行うユーザーに KMS アクセス許可があることを確認します。*\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1agent-id\$1*、\$1\$1*key-id\$1* を適切な値に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EncryptDecryptAgents",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/agent-id"
                   }
               }
           }
       ]
   }
   ```

------

1. 次のリソースベースのポリシーを KMS キーにアタッチします。必要に応じてアクセス許可の範囲を変更します。*\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1agent-id\$1*、\$1\$1*key-id\$1* を適切な値に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowRootModifyKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:root"
               },
               "Action": "kms:*",
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
           },
           {
               "Sid": "AllowBedrockEncryptAgent",
               "Effect": "Allow",
               "Principal": {
                   "Service": "bedrock.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/AgentId"
                   }
               }
           },
           {
               "Sid": "AllowRoleEncryptAgent",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/Role"
               },
               "Action": [
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
           },
           {
               "Sid": "AllowAttachmentPersistentResources",
               "Effect": "Allow",
               "Principal": {
                   "Service": "bedrock.amazonaws.com"
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": "true"
                   }
               }
           }
       ]
   }
   ```

------

# Amazon Bedrock Flows リソースの暗号化
<a name="encryption-flows"></a>

Amazon Bedrock は、保管中のデータを暗号化します。デフォルトでは、Amazon Bedrock はこのデータを暗号化するのに AWS マネージドキーを使用します。必要に応じて、カスタマーマネージドキーを使用して、データを暗号化することもできます。

詳細についてはAWS KMS keys、「 *AWS Key Management Serviceデベロッパーガイド*」の[「カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

カスタム KMS キーを使用してデータを暗号化する場合は、Amazon Bedrock がユーザーに代わってデータを暗号化および復号化できるように、次のアイデンティティベースポリシーとリソースベースポリシーを設定する必要があります。

1. Amazon Bedrock Flows API コールを実行するアクセス許可がある IAM ロールまたはユーザーに、次のアイデンティティベースポリシーをアタッチします。このポリシーは、Amazon Bedrock Flows コールを実行するユーザーに KMS アクセス許可が付与されていることを検証します。*\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1flow-id\$1*、*\$1\$1key-id\$1* を適切な値に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EncryptFlow",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock-flows:arn": "arn:aws:bedrock:us-east-1:123456789012:flow/${flow-id}",
                       "kms:ViaService": "bedrock.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. 次のリソースベースのポリシーを KMS キーにアタッチします。必要に応じてアクセス許可の範囲を変更します。*\$1IAM-USER/ROLE-ARN\$1*、*\$1\$1region\$1*、*\$1\$1account-id\$1*、*\$1\$1flow-id\$1*、*\$1\$1key-id\$1* を適切な値に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowRootModifyKMSId",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:root"
               },
               "Action": "kms:*",
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId"
           },
           {
               "Sid": "AllowRoleUseKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/RoleName"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock-flows:arn": "arn:aws:bedrock:us-east-1:123456789012:flow/FlowId",
                       "kms:ViaService": "bedrock.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. [フローの実行](flows-create-async.md)には、[フローを作成および管理するためのアクセス許可を持つサービスロール](flows-permissions.md)に、次のアイデンティティベースのポリシーをアタッチします。このポリシーは、サービスロールに AWS KMSアクセス許可があることを検証します。*region*、*account-id*、*flow-id*、*key-id* を適切な値に置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EncryptionFlows",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:aws:bedrock-flows:arn": "arn:aws:bedrock:us-east-1:123456789012:flow/flow-id",
                       "kms:ViaService": "bedrock.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

# ナレッジベースリソースの暗号化
<a name="encryption-kb"></a>

Amazon Bedrock はナレッジベースに関連するリソースを暗号化します。デフォルトでは、Amazon Bedrock は AWS所有のキーを使用してこのデータを暗号化します。オプションで、カスタマーマネージドキーを使用して、モデルアーティファクトを暗号化することもできます。

KMS キーによる暗号化は、以下のプロセスで行うことができます。
+ データソースの取り込み中の一時的なデータストレージ
+ Amazon Bedrock にベクトルデータベースをセットアップさせた場合の情報の OpenSearch サービスへの提供
+ ナレッジベースへのクエリの実行

ナレッジベースが使用する以下のリソースは KMS キーで暗号化できます。暗号化する場合は、KMS キーを復号するためのアクセス許可を追加する必要があります。
+ Amazon S3 バケットに保存されているデータソース
+ サードパーティーのベクトルストア

詳細については AWS KMS keys、「 *AWS Key Management Service デベロッパーガイド*」の[「カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

**注記**  
Amazon Bedrock ナレッジベースは、転送中の TLS 暗号化をプロバイダーが許可およびサポートするサードパーティーのデータソースコネクタおよびベクトルストアとの通信に TLS 暗号化を使用します。

**Topics**
+ [データインジェスト時の一時データストレージの暗号化](#encryption-kb-ingestion)
+ [Amazon OpenSearch Service に渡される情報の暗号化](#encryption-kb-oss)
+ [Amazon S3 Vectors に渡される情報の暗号化](#encryption-kb-s3-vector)
+ [ナレッジベース取得の暗号化](#encryption-kb-runtime)
+ [Amazon S3 のデータソースの AWS KMS キーを復号するアクセス許可](#encryption-kb-ds)
+ [ナレッジベースを含むベクトルストアのシー AWS Secrets Manager クレットを復号するアクセス許可](#encryption-kb-3p)
+ [AWS KMS 暗号化を使用した Bedrock Data Automation (BDA) のアクセス許可](#encryption-kb-bda)

## データインジェスト時の一時データストレージの暗号化
<a name="encryption-kb-ingestion"></a>

ナレッジベースのデータインジェストジョブを設定すると、カスタム KMS キーでジョブを暗号化できます。

データソースの取り込みプロセスで一時データストレージの AWS KMS キーを作成できるようにするには、Amazon Bedrock サービスロールに次のポリシーをアタッチします。サンプル値を独自の AWS リージョン、アカウント ID、および AWS KMS キー ID に置き換えます。

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

****  

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

------

## Amazon OpenSearch Service に渡される情報の暗号化
<a name="encryption-kb-oss"></a>

Amazon Bedrock にナレッジベース用のベクトルストアを Amazon OpenSearch Service 内に作成させることを選択した場合、Amazon Bedrock はユーザーが選択した KMS キーを Amazon OpenSearch Service に渡して暗号化することができます。Amazon OpenSearch Service での暗号化の詳細については、「[Amazon OpenSearch Service での暗号化](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html)」を参照してください。

## Amazon S3 Vectors に渡される情報の暗号化
<a name="encryption-kb-s3-vector"></a>

Amazon Bedrock にナレッジベース用の S3 ベクトルバケットとベクトルストアを Amazon S3 Vectors 内に作成させることを選択した場合、Amazon Bedrock はユーザーが選択した KMS キーを Amazon S3 Vectors に渡して暗号化することができます。Amazon S3 Vectors での暗号化の詳細については、「[Amazon S3 Vectors による暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bucket-encryption.html)」を参照してください。

## ナレッジベース取得の暗号化
<a name="encryption-kb-runtime"></a>

ナレッジベースに KMS キーでクエリを実行することにより、レスポンスを生成するセッションを暗号化することができます。そのためには、[RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに KMS キーの ARN を `kmsKeyArn` フィールドに入力します。次のポリシーをアタッチし、サンプル値を独自の AWS リージョン、アカウント ID、 AWS KMS キー ID に置き換えて、Amazon Bedrock がセッションコンテキストを暗号化できるようにします。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
        }
    ]
}
```

------

## Amazon S3 のデータソースの AWS KMS キーを復号するアクセス許可
<a name="encryption-kb-ds"></a>

ナレッジベースのデータソースを Amazon S3 バケットに保存します。これらのドキュメントを保存中に暗号化するには、Amazon S3 SSE-S3 サーバーサイド暗号化オプションを使用できます。このオプションでは、オブジェクトは Amazon S3 サービスによって管理されるサービスキーで暗号化されます。

詳細については、**「Amazon Simple Storage Service ユーザーガイド」の「[Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)」を参照してください。

Amazon S3 のデータソースをカスタム AWS KMS キーで暗号化した場合は、Amazon Bedrock サービスロールに次のポリシーをアタッチして、Amazon Bedrock がキーを復号できるようにします。サンプル値を独自の AWS リージョン、アカウント ID、および AWS KMS キー ID に置き換えます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "KMS:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:123456789012:key/key-id"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": [
                        "s3.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## ナレッジベースを含むベクトルストアのシー AWS Secrets Manager クレットを復号するアクセス許可
<a name="encryption-kb-3p"></a>

ナレッジベースを含むベクトルストアが AWS Secrets Manager シークレットで設定されている場合は、「シークレットの暗号化と復号」の手順に従って、カスタム AWS KMS キーでシークレットを暗号化できます。 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)

そうする場合、Amazon Bedrock サービスロールに次のポリシーをアタッチして、サービスロールがキーを復号化できるようにします。サンプル値を独自の AWS リージョン、アカウント ID、および AWS KMS キー ID に置き換えます。

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

****  

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

------

## AWS KMS 暗号化を使用した Bedrock Data Automation (BDA) のアクセス許可
<a name="encryption-kb-bda"></a>

BDA を使用してカスタマーマネージド AWS KMS キーでマルチモーダルコンテンツを処理する場合、標準のアクセス許可を超えて追加の AWS KMS アクセス許可が必要です。

Amazon Bedrock サービスロールに次のポリシーをアタッチして、暗号化されたマルチメディアファイルを BDA が操作できるようにします。サンプル値を独自の AWS リージョン、アカウント ID、および AWS KMS キー ID に置き換えます。

```
{
    "Sid": "KmsPermissionStatementForBDA",
    "Effect": "Allow",
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:CreateGrant"
    ],
    "Resource": "arn:aws:kms:region:account-id:key/key-id",
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": "account-id",
            "kms:ViaService": "bedrock.region.amazonaws.com"
        }
    }
}
```

BDA 固有のアクセス許可には、暗号化されたオーディオ、ビデオ、イメージファイルを BDA が処理するために必要な `kms:DescribeKey`アクションと `kms:CreateGrant`アクションが含まれます。