注册加密 Amazon S3 位置Amazon账户 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

注册加密 Amazon S3 位置Amazon账户

Amazon Lake Formation已与 集成Amazon Key Management Service(Amazon KMS),以便您更轻松地设置其他集成服务,以加密和解密 Amazon Simple Storage Service (Amazon S3) 位置中的数据。

客户托管密钥和Amazon 托管式密钥支持。不支持客户端加密/解密。

重要

避免注册 Amazon S3 存储桶中的申请方付款已启用. 对于在 Lake Formation 中注册的存储桶,用于注册存储桶的角色始终被视为请求者。如果存储桶被另一个人访问Amazon账户,如果该角色与存储桶拥有者属于同一账户,则该存储桶拥有者需要支付数据访问费用。

本部分介绍了在以下情况下如何注册 Amazon S3 位置:

  • Amazon S3 位置中的数据使用中创建的 KMS 密钥进行加密Amazon KMS.

  • Amazon S3 位置不同的Amazon帐户作为Amazon Glue Data Catalog.

  • KMS 密钥要么是要么不一样Amazon账户为数据目录。

注册Amazon KMS— 加密 Amazon S3 存储桶Amazon账户 B 使用Amazon Identity and Access Management(IAM) 角色Amazon账户 A 需要以下权限:

  • 账户 A 中的角色必须授予账户 B 中存储桶的权限。

  • 账户 B 中的存储桶策略必须向账户 A 中的角色授予访问权限。

  • 如果 KMS 密钥在账户 B 中,则密钥策略必须授予对账户 A 中角色的访问权限,而账户 A 中的角色必须授予对 KMS 密钥的权限。

在以下过程中,您可以在Amazon包含数据目录的帐户(上一讨论中的账户 A)。然后,您可以使用此角色注册该位置。在访问 Amazon S3 中的底层数据时,Lake Formation 担任此角色。代入的角色具有 KMS 密钥所需的权限。因此,您不必将 KMS 密钥的权限授予委托人使用 ETL 作业或集成服务(例如)访问底层数据的委托人Amazon Athena.

重要

您不能使用 Lake Formation 服务相关角色在另一个账户中注册位置。而必须使用户定义的角色。该角色必须满足中的要求注册位置时使用的角色的要求. 有关 service-linked role 服务相关角色的更多信息,请参阅Lake Formation 的服务相关角色权限

开始前的准备工作

查看用于注册位置的角色的要求.

注册 Amazon S3 加密位置Amazon账户

  1. 同样的Amazon帐户作为数据目录,登录Amazon Web Services Management Console在以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/.

  2. 创建新角色或查看符合中要求的现有角色注册位置时使用的角色的要求. 确保角色包括向 Amazon S3 授予对该位置的权限的策略。

  3. 如果 KMS 密钥与数据目录不在同一个账户中,请向角色添加一个内联策略,以授予对 KMS 密钥的所需权限。以下是示例 策略。Replace<cmk-region><cmk-account-id>其中包含 KMS 密钥的地区和账号。Replace<key-id>带密钥 ID。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:<cmk-region>:<cmk-account-id>:key/<key-id>" } ] }
  4. 在 Amazon S3 控制台上,添加一个存储桶策略,向该角色授予所需的 Amazon S3 权限。下面是一个示例存储桶策略。Replace<catalog-account-id>使用Amazon数据目录的账号,<role-name>使用你的角色的名称,和<bucket-name>使用存储桶的名称。

    { "Version": "2012-10-17", "Statement": [ { "Effect":"Allow", "Principal": { "AWS":"arn:aws:iam::<catalog-account-id>:role/<role-name>" }, "Action":"s3:ListBucket", "Resource":"arn:aws:s3:::<bucket-name>" }, { "Effect":"Allow", "Principal": { "AWS":"arn:aws:iam::<catalog-account-id>:role/<role-name>" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource":"arn:aws:s3:::<bucket-name>/*" } ] }
  5. InAmazon KMS中,将角色添加为 KMS 密钥的用户。

    1. 访问 https://console.aws.amazon.com/kms,打开 Amazon KMS 控制台。然后,以 IAM 管理员或可以修改用于加密位置的 KMS 密钥的密钥策略的用户身份登录。

    2. 在导航窗格中,选择客户托管密钥,然后选择 KMS 密钥的名称。

    3. 在 KMS 密钥详细信息页面上的密钥策略选项卡中,如果未显示密钥策略的 JSON 视图,请选择切换到策略视图.

    4. 密钥策略部分,选择编辑将角色的 Amazon 资源名称 (ARN) 添加到Allow use of the key对象,如以下示例所示。

      注意

      如果该对象丢失,请使用示例中显示的权限添加它。

      ... { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<catalog-account-id>:role/<role-name>" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, ...

      有关更多信息,请参阅 。允许其他账户中的用户使用 KMS 密钥中的Amazon Key Management Service开发人员指南.

  6. 打开Amazon Lake Formation控制台https://console.aws.amazon.com/lakeformation/. 登录到数据目录Amazon帐户作为数据湖管理员。

  7. 在导航窗格中的下注册和摄取,选择数据湖位置.

  8. 选择注册位置.

  9. 在存储库的注册位置页面,对于Amazon S3 路径中,输入位置路径为s3://<bucket>/<prefix>. Replace<bucket>和存储桶的名称和<prefix>还有该位置的其余路径。

    注意

    您必须键入路径,因为当您选择时跨账户存储桶不会出现在列表中浏览.

  10. 适用于IAM 角色,从步骤 2 中选择角色。

  11. 选择注册位置.