

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

# 使用 Amazon KMS Amazon SageMaker 合作伙伴 AI 应用程序的权限
<a name="partner-apps-kms"></a>

您可以使用 Amazon SageMaker 合作伙伴 AI 应用程序的加密来保护您的静态数据。默认情况下，它使用带有 SageMaker 自有密钥的服务器端加密。 SageMaker 还支持使用客户托管的 KMS 密钥进行服务器端加密的选项。

## Server-side 使用 SageMaker 托管密钥加密（默认）
<a name="partner-apps-managed-key"></a>

默认情况下，Partner AI 应用程序使用 Amazon 托管密钥对您的所有静态数据进行加密。

## Server-side 使用客户管理的 KMS 密钥进行加密（可选）
<a name="partner-apps-customer-managed-key"></a>

Partner AI Apps 支持使用由您创建、 Amazon 拥有和管理的对称客户托管密钥来取代现有的自有加密。由于您可以完全控制这层加密，因此可以执行以下任务：
+ 制定和维护关键策略
+ 建立和维护 IAM 策略和授权
+ 启用和禁用密钥策略
+ 轮换加密材料
+ 添加 标签
+ 创建密钥别名
+ 安排密钥删除

有关更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)。

## 合作伙伴 AI 应用程序如何使用赠款 Amazon KMS
<a name="partner-apps-grants-cmk"></a>

合作伙伴 AI 应用程序需要授权才能使用客户自主管理型密钥。当您创建使用客户托管密钥加密的应用程序时，Partner AI Apps 会通过向发送 CreateGrant 请求来代表您创建授权 Amazon KMS。中的授权 Amazon KMS 用于授予合作伙伴 AI 应用程序访问客户账户中的 KMS 密钥的权限。

您可以随时撤销授予访问权限，或删除服务对客户托管密钥的访问权限。如果您这样做，合作伙伴 AI 应用程序将无法访问由客户自主管理型密钥加密的任何数据，这会影响依赖于该数据的操作。该应用程序将无法正常运行，并且会变得无法恢复。

## 创建客户托管密钥
<a name="partner-apps-create-cmk"></a>

您可以使用 Amazon Web Services 管理控制台 或 Amazon KMS API 创建对称的客户托管密钥。

**创建对称的客户托管密钥**

请按照《Amazon Key Management Service 开发人员指南》**中[创建对称加密 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)的步骤操作。

**密钥策略**

密钥策略控制对客户自主管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管密钥时，可以指定密钥策略。有关更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[确定对 Amazon KMS 密钥的访问](https://docs.amazonaws.cn/kms/latest/developerguide/determining-access.html)。

要将客户自主管理型密钥与合作伙伴 AI 应用程序资源一起使用，密钥策略中必须允许以下 API 操作。这些操作的主体取决于该角色是用于创建应用程序还是使用应用程序。
+ 创建应用程序：
  + `[kms:CreateGrant](https://docs.amazonaws.cn/kms/latest/APIReference/API_CreateGrant.html)`
  + [https://docs.amazonaws.cn/kms/latest/APIReference/API_DescribeKey.html](https://docs.amazonaws.cn/kms/latest/APIReference/API_DescribeKey.html) 
+ 使用应用程序：
  + [https://docs.amazonaws.cn/kms/latest/APIReference/API_Decrypt.html](https://docs.amazonaws.cn/kms/latest/APIReference/API_Decrypt.html) 
  + [https://docs.amazonaws.cn/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.amazonaws.cn/kms/latest/APIReference/API_GenerateDataKey.html)

以下是可根据角色是管理员还是用户为合作伙伴 AI 应用程序添加的策略语句示例。有关在策略中指定权限的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的 [Amazon KMS 权限](https://docs.amazonaws.cn/kms/latest/developerguide/kms-api-permissions-reference.html)。有关问题排查的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[密钥访问问题排查](https://docs.amazonaws.cn/kms/latest/developerguide/policy-evaluation.html)。

**管理员**

以下策略语句适用于正在创建合作伙伴 AI 应用程序的管理员。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-key-policy",
    "Statement": [
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/{{<admin-role>}}"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "sagemaker.{{us-east-1}}.amazonaws.com"
                }
            }
        }
    ]
}
```

------

**User**

以下策略语句适用于合作伙伴 AI 应用程序的用户。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"example-key-policy",
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":{
        "AWS":"arn:aws:iam::{{111122223333}}:role/{{user-role}}"
      },
      "Action":[
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource":"*",
      "Condition":{
        "StringEquals":{
          "kms:ViaService":"sagemaker.{{us-east-1}}.amazonaws.com"
        }
      }
    }
  ]
}
```

------