

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

# 注册加密的 Amazon S3 位置
<a name="register-encrypted"></a>

Lake Formation 与 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) (AWS KMS) 集成，使您能够更轻松地设置其他集成服务，以加密和解密 Amazon Simple Storage Service (Amazon S3) 位置中的数据。

既由客户管理 AWS KMS keys ，又 AWS 托管式密钥 受支持。目前，只有 encryption/decryption Athena 支持客户端。

在注册 Amazon S3 营业地点时，您必须指定 AWS Identity and Access Management (IAM) 角色。对于加密的 Amazon S3 位置，要么角色必须具有使用加密和解密数据的权限 AWS KMS key，要么是 KMS 密钥策略必须向该角色授予对密钥的权限。

**重要**  
避免注册启用了**请求者付费**的 Amazon S3 存储桶。对于在 Lake Formation 中注册的存储桶，用于注册存储桶的角色始终被视为请求者。如果存储桶被其他 AWS 账户访问，则如果该角色与存储桶拥有者属于同一个账户，则该存储桶拥有者需要支付数据访问费用。

Lake Formation 使用服务相关角色来注册数据位置。但此角色有几项[限制](service-linked-role-limitations.md)。由于这些限制，我们建议改为创建和使用自定义 IAM 角色，以获得更高的灵活性和更强的控制力。您为注册位置而创建的自定义角色必须满足[用于注册位置的角色的要求](registration-role.md)中指定的要求。

**重要**  
如果您使用 AWS 托管式密钥 来加密 Amazon S3 位置，则无法使用 Lake Formation 服务相关角色。您必须使用一个自定义角色，并向该角色添加对密钥的 IAM 权限。本部分后面将提供相关详细信息。

以下过程说明如何注册使用客户自主管理型密钥或 AWS 托管式密钥加密的 Amazon S3 位置。
+ [注册使用客户自主管理型密钥加密的位置](#proc-register-cust-cmk)
+ [注册使用加密的地点 AWS 托管式密钥](#proc-register-aws-cmk)

**开始前的准备工作**  
查看[用于注册位置的角色的要求](registration-role.md)。<a name="proc-register-cust-cmk"></a>

**注册使用客户自主管理型密钥加密的 Amazon S3 位置**
**注意**  
如果 KMS 密钥或 Amazon S3 位置与数据目录不在同一个 AWS 账户中，请[跨 AWS 账户注册加密的 Amazon S3 位置](register-cross-encrypted.md)改为按照中的说明进行操作。

1. 在 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 上打开 AWS KMS 控制台，以 AWS Identity and Access Management (IAM) 管理用户或可以修改用于加密位置的 KMS 密钥策略的用户身份登录。

1. 在导航窗格中，选择**客户自主管理型密钥**，然后选择所需的 KMS 密钥的名称。

1. 在 KMS 密钥详细信息页面上，选择**密钥策略**选项卡，然后执行以下任一操作将您的自定义角色或 Lake Formation 服务相关角色添加为 KMS 密钥用户：
   + **如果显示默认视图（包括 “****密钥管理员**”、“密**钥删除**”、“**密钥用户**” 和 “**其他 AWS 账户**” 部分），则在 “**密钥用户**” 部分下，添加您的自定义角色或 Lake Formation 服务相关角色`AWSServiceRoleForLakeFormationDataAccess`。
   + **如果显示密钥策略 (JSON)** – 编辑策略以将您的自定义角色或 Lake Formation 服务相关角色 `AWSServiceRoleForLakeFormationDataAccess` 添加到“Allow use of the key”对象，如以下示例所示。
**注意**  
如果缺少该对象，请使用示例中显示的权限添加该对象。该示例使用服务相关角色。

     ```
             ...
             {
                 "Sid": "Allow use of the key",
                 "Effect": "Allow",
                 "Principal": {
                     "AWS": [
                         "arn:aws:iam::111122223333:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess",
                         "arn:aws:iam::111122223333:user/keyuser"
                     ]
                 },
                 "Action": [
                     "kms:Encrypt",
                     "kms:Decrypt",
                     "kms:ReEncrypt*",
                     "kms:GenerateDataKey*",
                     "kms:DescribeKey"
                 ],
                 "Resource": "*"
             },
             ...
     ```

1. 打开 AWS Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。以数据湖管理员或具有 `lakeformation:RegisterResource` IAM 权限的用户身份登录。

1. 在导航窗格的**管理**下，选择**数据湖位置**。

1. 选择**注册位置**，然后选择**浏览**以选择 Amazon Simple Storage Service (Amazon S3) 路径。

1. （可选，但强烈推荐）选择**查看位置权限**以查看所选 Amazon S3 位置中所有现有资源及其权限的列表。

   注册所选位置可能会导致 Lake Formation 用户可以访问该位置已有的数据。查看此列表有助于确保现有数据保持安全。

1. 对于 **IAM 角色**，选择 `AWSServiceRoleForLakeFormationDataAccess` 服务相关角色（默认）或符合[用于注册位置的角色的要求](registration-role.md)的自定义角色。

1. 选择**注册位置**。

有关服务相关角色的更多信息，请参阅 [Lake Formation 的服务相关角色权限](service-linked-roles.md#service-linked-role-permissions)。<a name="proc-register-aws-cmk"></a>

**注册使用加密的 Amazon S3 地点 AWS 托管式密钥**
**重要**  
如果 Amazon S3 位置与数据目录不在同一个 AWS 账户中，请[跨 AWS 账户注册加密的 Amazon S3 位置](register-cross-encrypted.md)改为按照中的说明进行操作。

1. 创建用于注册位置的 IAM 角色。确保该角色符合[用于注册位置的角色的要求](registration-role.md)中列出的要求。

1. 将下面的内联策略附加到该角色。该策略会向该角色授予对密钥的权限。`Resource` 规范必须指定 AWS 托管式密钥的 Amazon 资源名称 (ARN)。您可以从控制台获取 ARN。 AWS KMS 要获得正确的 ARN，请确保使用与加密该位置相同的 AWS 账户和区域登录 AWS KMS 控制台。 AWS 托管式密钥 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
         ],
         "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
       }
     ]
   }
   ```

------

   您可以使用 KMS 密钥别名代替密钥 ID - `arn:aws:kms:region:account-id:key/alias/your-key-alias`

   有关更多信息，请参阅《 AWS Key Management Service 开发人员指南》[中的 “别名](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html)” 一 AWS KMS节。

1. 打开 AWS Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。以数据湖管理员或具有 `lakeformation:RegisterResource` IAM 权限的用户身份登录。

1. 在导航窗格的**管理**下，选择**数据湖位置**。

1. 选择**注册位置**，然后选择**浏览**以选择 Amazon S3 路径。

1. （可选，但强烈推荐）选择**查看位置权限**以查看所选 Amazon S3 位置中所有现有资源及其权限的列表。

   注册所选位置可能会导致 Lake Formation 用户可以访问该位置已有的数据。查看此列表有助于确保现有数据保持安全。

1. 对于 **IAM 角色**，选择您在步骤 1 中创建的角色。

1. 选择**注册位置**。