配置 IdP 和 Lake Formation 之间的信任关系 - Amazon EMR

配置 IdP 和 Lake Formation 之间的信任关系

要在组织的身份提供商(IdP)与AWS之间建立信任关系,您必须执行以下操作:

  • 将 AWS 作为服务提供程序告知您的 IdP。

  • 通过在 AWS Identity and Access Management 中为 SAML 访问创建 IAM 身份提供商和角色,向AWS告知您的外部 IdP 的情况。

此过程称为添加信赖方信任。有关信赖方信任的更多信息,请参阅 AWS Identity and Access Management 用户指南中的使用信赖方信任配置您的 SAML 2.0 IdP 并添加声明。

配置 IdP 和 Lake Formation 之间的信赖方信任

  1. 将 AWS 注册到您的 IdP。将 AWS 注册到您的 IdP 的过程取决于您使用的 IdP。有关如何为 Auth0、Microsoft Active Directory 联合身份验证服务 (AD FS) 和 Okta 执行此操作的更多信息,请参阅 为 SAML 配置第三方提供程序

  2. 使用 IdP,生成可以将您的 IdP 描述为AWS中的 IAM 身份提供商的元数据 XML 文件。您的 IdP 元数据 XML 文件必须包含以下项:

    • 发布者名称。

    • 创建日期

    • 到期日期

    • AWS 将用于验证来自您组织的身份验证响应(断言)的密钥。

    每个 IdP 有一个特定的方式来直接导出此元数据。有关更多信息,请参阅您的 IdP 文档。

    将元数据 XML 文件上载到 Amazon S3 存储桶。启动与 Lake Formation 集成的集群时,您需要指定 S3 存储桶的路径。

  3. 创建 SAML 身份提供商

    1. 登录AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

    2. 在导航窗格中,选择身份提供程序创建

    3. 对于提供程序类型,依次选择选择提供程序类型SAML

    4. 输入身份提供程序的名称。

    5. 对于元数据文档,单击选择文件,指定您在之前步骤中从 IdP 下载的 SAML 元数据文档,然后选择打开

    6. 验证您提供的信息,然后单击 Create (创建)

  4. 为 Lake Formation 创建 IAM 角色。

    1. 登录AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

    2. 在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。

    3. 选择 SAML 2.0 federation 角色类型。

    4. 对于 SAML 提供商,请为您的角色选择提供商。

    5. 选择允许编程访问和AWS管理控制台访问以创建可以使用编程方式代入以及从控制台代入的角色。

    6. 复查您的 SAML 2.0 信任信息,然后选择下一步:权限

    7. 基于下方的示例,为角色创建权限策略。有关权限策略的更多信息,请参阅Lake Formation 的 IAM 角色

      { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetUnfiltered*", "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions" ], "Resource": "*" } }
      注意

      请勿向此角色授予访问由 AWS Glue 管理的任意 Amazon S3 存储桶的权限。联合身份用户应使用 Spark SQL 通过 Lake Formation 访问数据,不应直接通过 Amazon S3 访问数据。

    8. 请选择下一步:标签

    9. 请选择下一步:审核

    10. 对于角色名称,键入角色名称。角色名称在您的 AWS 账户内必须是唯一的。

    11. 检查角色,然后选择 Create role

    12. 单击“角色”选项卡,搜索上一步中创建的角色名称。

    13. 选择信任关系,然后选择编辑信任关系

    14. 使用下面指定的 Lake Formation 信任策略的 IAM 角色覆盖现有策略文档。有关该信任策略的更多信息,请参阅Lake Formation 的 IAM 角色

      account-id 替换为您的AWS账户 ID。使用您 IAM 身份提供商的名称替换 IAM_identity_provider_name

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:saml-provider/IAM_identity_provider_name" }, "Action": "sts:AssumeRoleWithSAML" } ] }
    15. 选择 Update Trust Relationship (更新信任关系)

  5. 为其它AWS服务创建 IAM 角色。有关更多信息,请参阅用于非 Lake Formation AWS服务的 IAM 角色

  6. 在组织的 IdP 中,您必须配置 SAML 断言,将组织中的用户映射到 IdP 和刚刚创建的 Lake Formation 的 IAM 角色。通过配置在下表中所示的三个属性元素来完成此操作。

    • account-id 替换为您的AWS账户 ID。

    • IAM_Role_For_Lake_Formation 替换为您为 Lake Formation 创建的 IAM 角色的名称。

    • 使用您在之前步骤中创建的 IAM 身份提供商的名称替换 IAM_identity_provider_name

    • 使用属性(该属性用于保存在组织中定义的用户名)的名称替换 user_alias

    属性元素

    https://aws.amazon.com/SAML/Attributes/Role arn:aws:iam::account-id:role/IAM_Role_For_Lake_Formation,arn:aws:iam::account-id:saml-provider/IAM_identity_provider_name
    https://aws.amazon.com/SAML/Attributes/RoleSessionName user_alias
    https://lakeformation.amazon.com/SAML/Attributes/Username user_alias

    执行映射的确切步骤取决于您使用的 IdP。有关如何映射 IdP 的说明,请参阅为 SAML 配置第三方提供程序

    有关更多信息,请参阅为身份验证响应配置 SAML 断言

注意

用户可以获得他们所属的所有组的 Lake Formation 权限。用户所属的组列表可以在特定于 Lake Formation 的自定义 SAML 属性中发送,如以下示例所示。

<AttributeStatement> <Attribute Name="https://lakeformation.amazon.com/SAML/Attributes/Groups"> <AttributeValue>group1</AttributeValue> <AttributeValue>group2</AttributeValue> </Attribute> </AttributeStatement>