

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

# カスタマーマネージドキー (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)」を参照してください。