

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

# 使用客户自主管理型密钥（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)，您可以将其附加到客户自主管理型密钥上，以控制对密钥的访问权限。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。您可以随时修改密钥策略，但在更改在整个 AWS KMS 中可用之前可能会出现短暂的延迟。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[管理对客户托管密钥的访问权限](https://docs.aws.amazon.com//kms/latest/developerguide/control-access-overview.html#managing-access)。

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

要使用您的客户托管密钥对导入的自定义模型进行加密，您必须在密钥策略中包含以下AWS KMS操作：
+ k@@ [ms: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) — 允许 Amazon Bedrock 服务委托人通过授权[操作访问指定的 KMS 密钥，从而为客户托管密钥创建授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)。有关使用授权的更多信息，请参阅《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": "*"
        }
    ]
}
```

------