使用客户管理的密钥 (CMK) - Amazon Bedrock

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

使用客户管理的密钥 (CMK)

如果您计划使用客户托管密钥来加密您的自定义导入模型,请完成以下步骤:

  1. 使用创建客户托管密钥 AWS Key Management Service。

  2. 附加一个基于资源的策略,允许指定角色创建和使用自定义导入的模型。

创建客户管理的密钥

首先,请确保您拥有CreateKey权限。然后按照创建密钥中的步骤在 AWS KMS 控制台或CreateKeyAPI操作中创建客户托管密钥。确保创建对称加密密钥。

创建密钥时会返回密钥Arn的值,在使用自定义模型导入功能导入自定义模型importedModelKmsKeyId 时,您可以使用该密钥作为密钥。

创建密钥策略并将其附加到客户管理的密钥上

密钥策略是基于资源的策略,您可以将其附加到客户托管密钥上,以控制对密钥的访问权限。每个客户托管式密钥必须只有一个密钥政策,其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时,可以指定密钥策略。您可以随时修改密钥策略,但更改可能要经过一段短暂的延迟才能生效 AWS KMS。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的管理对客户托管密钥的访问权限

对生成的导入自定义模型进行加密

要使用您的客户托管密钥对导入的自定义模型进行加密,您必须在密钥策略中包含以下 AWS KMS 操作:

  • kms: CreateGrant — 允许 Amazon Bedrock 服务委托人通过授权操作访问指定KMS密钥,从而为客户托管密钥创建授权。有关授权的更多信息,请参阅《AWS 密钥管理服务开发者指南AWS KMS中的授权

    注意

    Amazon Bedrock 还设置了退休本金,并在不再需要补助金后自动退出补助金。

  • kms: DescribeKey — 提供客户托管的密钥详细信息以允许 Amazon Bedrock 验证密钥。

  • kms: GenerateDataKey — 提供客户托管的密钥详细信息以允许 Amazon Bedrock 验证用户访问权限。Amazon Bedrock 将生成的密文与导入的自定义模型一起存储,用作对导入的自定义模型用户的额外验证检查

  • kms: decrypt — 解密存储的密文以验证角色是否可以正确访问加密导入的自定义模型的密钥。KMS

以下是一个策略示例,您可以将其附加到角色的密钥上,该密钥将用于加密导入的自定义模型:

{ "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::${account-id}:user/role" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*" } ] }

解密已加密的导入自定义模型

如果您要导入的自定义模型已被其他客户托管密钥加密,则必须为同一角色添加kms:Decrypt权限,如以下策略所示:

{ "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::${account-id}:user/role" }, "Action": [ "kms:Decrypt" ], "Resource": "*" } ] }