为 SAML 配置第三方提供程序 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 SAML 配置第三方提供程序

已使用 Auth0、Microsoft Active Directory 联合身份验证服务(AD FS)和 Okta 对基于 SAML 2.0 的 Amazon EMR 联合身份验证与 Amazon Lake Formation 进行了测试。

本主题提供的信息可帮助您配置经过测试的身份提供商以使用 Amazon Lake Formation 联合身份验证。如果您决定使用其他未经 Amazon Lake Formation 测试的身份提供商(IdP),请参阅您的 IdP 的文档网站以获取更多信息。

Auth0

Auth0 文档网站上的 Auth0 中的Amazon集成页面描述了如何使用Amazon管理控制台设置单点登录(SSO)。它还包含 JavaScript 示例。

要启用对 Lake Formation 的联合身份访问,请在 Auth0 文档中修改以下步骤:

  • 提供应用程序回调 URL 时,请提供临时 URL,如下例中所示。启动集群之后,使用主节点 (master node) 的实际 DNS 名称更新 public-dns

    https://public-dns:8442/gateway/knoxsso/api/v1/websso?pac4jCallback=true&client_name=SAML2Client
  • 配置 SAML 时,将以下 SAML 配置代码粘贴到 Settings (设置) 中。

    { "audience": "urn:amazon:webservices", "mappings": { "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" }, "createUpnClaim": false, "passthroughClaimsWithNoMapping": false, "mapUnknownClaimsAsIs": false, "mapIdentities": false, "nameIdentifierFormat": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", "nameIdentifierProbes": [ "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" ] }
  • 将 Amazon 角色映射到用户时,创建具有以下代码的规则。将 IAM_Role_For_Lake_Formation 替换为您为 Lake Formation 创建的 IAM 角色的名称。使用您为 Auth0 创建的 IAM 身份提供程序的名称替换 IAM_identity_provider_name

    function (user, context, callback) { user.awsRole = 'arn:aws:iam::account-id:role/IAM_Role_For_Lake_Formation,arn:aws:iam::account-id:saml-provider/IAM_identity_provider_name'; // the username must not contain "@" - as it is not a valid Linux username user.userName = user.name.replace(/@.*/, ''); context.samlConfiguration.mappings = { 'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole', 'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'userName', 'https://lakeformation.amazon.com/SAML/Attributes/Username': 'userName' }; callback(null, user, context); }

Microsoft Active Directory 联合身份验证服务 (AD FS)

Amazon federated authentication with Active Directory Federation Services (AD FS)Amazon 安全博客展示了如何配置 AD FS 并启用与Amazon的 SAML 联合身份验证。

要启用对 Lake Formation 的联合身份访问,请在博客文章中修改以下步骤:

  • 要添加信赖方信任,请手动输入信赖方的数据,而不是从现有 URL 导入元数据。选择 Permit all users to access this relying party (允许所有用户访问此信赖方) 选项。对于终端节点信任 URL,请提供临时 URL,如下例中所示。启动集群之后,使用主节点 (master node) 的实际 DNS 名称更新 public-dns

    https://public-dns:8442/gateway/knoxsso/api/v1/websso?pac4jCallback=true&client_name=SAML2Client
  • Edit Claim Issuance Policy (编辑声明发布策略) 上,根据NameId中属性元素的值,自定义三个规则 RoleSessionNameRole配置 IdP 和 Lake Formation 之间的信任关系

Okta

Okta 支持站点上的在 Okta 中设置 SAML 应用程序页面包含有关如何通过提供有关依赖方的元数据来配置 Okta 的说明。

要启用对 Lake Formation 的联合身份访问,请在 Okta 支持网站中修改以下步骤:

  • 配置 SAML 时,对于 Single sign-on URL (单点登录 URL),请使用临时 URL,如下例所示。启动集群之后,使用主节点的实际 DNS 名称更新 public-dns

    https://public-dns:8442/gateway/knoxsso/api/v1/websso?pac4jCallback=true&client_name=SAML2Client
  • 对于 Audience URI (SP Entity ID) (受众 URI (SP 实体 ID)) 框,填写 urn:amazon:webservices

  • Attribute Statements (属性语句) 部分中,添加以下过程中所示的三个属性语句。将 IAM_Role_For_Lake_Formation 替换为您为 Lake Formation 创建的 IAM 角色的名称。使用您在之前步骤中创建的 IAM 身份提供程序的名称替换 IAM_identity_provider_name。使用属性(该属性用于保存在组织中定义的用户名)的名称替换 user_alias

    1. 名称: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

    2. 名称:https://aws.amazon.com/SAML/Attributes/RoleSessionName

      值:user_alias

    3. 名称:https://lakeformation.amazon.com/SAML/Attributes/Username

      值:user_alias