View a markdown version of this page

数据加密 - 亚马逊基岩 AgentCore

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

数据加密

数据加密通常分为两类:静态加密和传输中加密。

静态加密

我们根据行业标准对 AWS 代理注册表中的静态数据进行加密。

默认情况下,我们使用 AWS 自有密钥对您在注册表中的数据进行加密,不收取额外费用。您无法查看、管理或审计此密钥的使用。

创建注册表时,您可以选择使用客户管理的 AWS KMS 密钥对记录描述符进行加密。使用客户管理的密钥可以让你更好地控制加密过程,包括:

  • 创建和管理密钥,包括设置密钥策略

  • 使用 AWS KMS 自动密钥轮替自动轮换密钥

  • 禁用或删除密钥以控制对加密数据的访问

  • 通过以下方式审核密钥使用情况 AWS CloudTrail

有关更多信息,请参阅《密钥管理服务开发人员指南》中的客户管理 AWS 密钥。

注意

AWS 当您使用客户管理的密钥时,会收取 KMS 费用。有关更多信息,请参阅 AWS 密钥管理服务定价。

什么是加密?

当您指定客户管理的密钥时, AWS 代理注册表会对静态记录描述符进行加密。记录描述符是存储在每个注册表记录中的特定资源类型的元数据——这是描述资源是什么以及如何使用资源的详细配置:

  • MCP 服务器记录 — 服务器定义和工具定义(包括输入参数和输出格式)。

  • 代理记录 — 描述能力、技能和通信接口的代理卡。

  • 技能记录 — 软件包或存储库详细信息以及 markdown 文档。

  • 自定义资源记录 -自定义 JSON 元数据结构。

为其提供支持的搜索索引SearchDiscoverableRegistryRecords也使用相同的密钥进行加密。

以下数据未使用您的客户管理密钥加密(仍使用 AWS 自有密钥加密):

  • 注册表名称和描述

  • 记录名称、描述、协议和外部版本

  • 注册和记录标识符(ID、ARN)

注意

ListRegistryRecords返回记录摘要(名称、描述、协议、外部版本),无需进行任何 KMS 调用。即使您的 KMS 密钥不可用,此操作仍有效。

注意事项

为注册表配置加密时,请考虑以下几点:

  • 您只能在创建注册表时指定客户管理的密钥。创建注册表后,您无法添加、更改或删除加密配置。

  • 如果要更改注册表的 KMS 密钥,则必须使用所需的密钥创建一个新的注册表并迁移您的记录。

  • AWS 代理注册表仅支持对称加密 KMS 密钥。您不能使用非对称 KMS 密钥或多区域密钥。

  • KMS 密钥必须与注册表位于同一 AWS 区域。

  • 如果您选择客户托管的密钥,建议您启用 automatic key rotation(自动密钥轮换)。

  • 没有客户管理密钥的注册表继续使用 AWS 自有密钥。现有注册表的行为没有变化。

操作方法 AWS 代理注册表使用补助金 AWS KMS

AWS 代理注册表需要获得授权才能使用您的客户管理密钥。

当您使用客户管理的密钥创建注册表时, AWS 代理注册表通过向 AWS KMS 发送CreateGrant请求来代表您创建授权。使用加密上下文约束将授权范围限定为您的特定注册表。

AWS 代理注册表要求授予权限才能使用您的客户管理密钥进行以下内部操作:

  • 发送GenerateDataKey请求以创建用于加密记录描述符的数据密钥。

  • 发送解密请求以解密加密的数据密钥,以便它们可用于解密您的数据。

  • 发送DescribeKey请求以验证密钥是否有效。

您可以随时撤消对授予的访问权限,或删除该服务对客户管理密钥的访问权限。如果你这样做, AWS Agent Registry 将无法访问由客户管理的密钥加密的任何数据,这会影响读取或写入记录描述符的所有操作。

AWS 删除注册表时,代理注册表会取消授权。

每个 API 操作使用的 KMS 权限

下表显示了 AWS 代理注册表为每个 API 调用的 KMS 操作。对于同步 API 调用 (CreateRegistryRecord、 GetRegistryRecord、 UpdateRegistryRecord、 SearchDiscoverableRegistryRecords),您的证书将通过转发访问会话 (FA AWS S) 转发到 KMS。

API 操作 KMS 操作 注意

CreateRegistry

kms:DescribeKey, kms:CreateGrant

验证密钥并创建授权

CreateRegistryRecord

kms:GenerateDataKey, kms:Decrypt

加密记录描述符

GetRegistryRecord

kms:Decrypt

解密记录描述符

UpdateRegistryRecord

kms:Decrypt, kms:GenerateDataKey

解密现有描述符,加密更新的描述符

ListRegistryRecords

无

没有 KMS 调用 — 使用未加密的摘要属性

SearchDiscoverableRegistryRecords

kms:Decrypt

解密搜索结果的记录描述符

DeleteRegistryRecord

无

不需要 KMS 调用

DeleteRegistry

无

不需要 KMS 调用

加密上下文

加密上下文是一组键值对,其中包含有关数据的其他上下文信息。 AWS KMS 使用加密上下文作为额外的身份验证数据来支持经过身份验证的加密。

AWS 代理注册表在所有 KMS 加密操作中都包含以下加密上下文:

{ "aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" }

您可以在 AWS CloudTrail 日志中使用此加密上下文来确定对哪个注册表执行了 KMS 操作。

密钥不可用时的行为

如果您禁用或删除客户管理的 KMS 密钥,则撤消授权,或者调用方的 IAM 政策不再授予所需的 KMS 权限:

  • CreateRegistryRecord— 失败。该服务无法对记录描述符进行加密。

  • GetRegistryRecord— 失败。该服务无法解密记录描述符。

  • UpdateRegistryRecord— 失败。该服务无法解密或加密记录描述符。

  • ListRegistryRecords— 成功。此操作不进行 KMS 调用。

  • SearchDiscoverableRegistryRecords— 失败。该服务无法解密搜索结果的记录描述符。

  • DeleteRegistry— 成功。删除不需要访问 KMS 密钥。

  • DeleteRegistryRecord— 成功。删除记录不需要 KMS 访问权限。

要恢复访问权限,请重新启用密钥或更新 IAM 策略以授予所需的权限。

传输中加密

AWS 代理注册表使用 TLS(传输层安全)对在您的客户端和服务端点之间传输的所有数据进行加密。对 AWS 代理注册表的所有 API 调用都需要 HTTPS。

密钥管理

AWS 代理注册表支持两种用于静态加密的密钥管理选项:

  • AWS 拥有的密钥(默认)— 我们代表您拥有和管理密钥。您无需创建或管理密钥,也无需额外付费。您无法查看、轮换或审核此密钥。

  • 客户管理的密钥 — 您可以在 KMS 中 AWS 创建和管理对称加密 KMS 密钥。您可以完全控制密钥策略、轮换时间表和密钥删除。您可以通过审计密钥的使用情况 AWS CloudTrail。

创建注册表时,您可以选择密钥管理选项。创建注册表后,您无法更改加密密钥。有关配置步骤,请参阅设置客户管理的密钥政策。