

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用客户自主管理型密钥（CMK）加密代理资源
<a name="cmk-agent-resources"></a>

您可以随时创建客户自主管理型密钥，使用在构建代理时提供的以下代理信息，来加密您的代理信息。

**注意**  
以下代理资源仅针对 2025 年 1 月 22 日之后创建的代理进行加密。


****  


- **[CreateAgent](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_CreateAgent.html)**
  - **启用 CMK 的字段:** instruction / **说明:** 指示代理应该做什么以及应该如何与用户交互
  - **启用 CMK 的字段:** basePromptTemplate / **说明:** 定义用于替换默认提示模板的提示模板

- **[CreateAgentActionGroup](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_CreateAgentActionGroup.html)**
  - **启用 CMK 的字段:** description / **说明:** 操作组的描述
  - **启用 CMK 的字段:** [apiSchema](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_APISchema.html) / **说明:** 包含代理操作组的 apiSchema 的详细信息，或者包含定义架构的 JSON 或 YAML 格式的有效载荷
  - **启用 CMK 的字段:** [s3](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_APISchema.html) / **说明:** 包含有关 Amazon S3 对象的详细信息，该对象包含代理操作组的 apiSchema
  - **启用 CMK 的字段:** functionSchema / **说明:** 包含代理操作组的函数架构详细信息，或者包含定义架构的 JSON-YAML 格式的有效载荷

- **[AssociateAgentKnowledgeBase](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_AssociateAgentKnowledgeBase.html)**
  - **启用 CMK 的字段:** description
  - **说明:** 描述代理应将知识库用于什么用途

- **[AssociateAgentCollaborator](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_AssociateAgentCollaborator.html)**
  - **启用 CMK 的字段:** collaborationInstruction
  - **说明:** 面向合作代理的说明



要创建客户自主管理型密钥，请使用以下步骤：

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)的步骤进行操作。

**密钥策略** – 密钥策略控制对客户自主管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。有关更多信息，请参阅**《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 密钥加密的加密文字。

创建密钥时会返回密钥的 `Arn`，在创建代理时，您可以将其用作 `customerEncryptionKeyArn`。

## 创建密钥策略并将其附加到客户自主管理型密钥上
<a name="attach-policy-agent"></a>

如果您使用客户自主管理型密钥加密代理资源，则必须设置基于身份的策略和基于资源的策略，以允许 Amazon Bedrock 代表您加密和解密代理资源。

**基于身份的政策**

将以下基于身份的策略附加到有权代表您加密和解密代理资源的代理 APIs 的 IAM 角色或用户。此策略验证发出 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 代理不支持对 AWS 版本控制代理进行重新加密。只有*草稿*资源的数据才会使用新密钥重新加密。

对于有版本控制的代理，如果将其用于提供生产数据，请确保您没有删除或移除该代理的任何密钥的权限。

要查看和验证某个版本正在使用的密钥，请调用[GetAgentVersion](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_GetAgentVersion.html)并在响应`customerEncryptionKeyArn`中查看。