相关文章推荐
卖萌的松树  ·  PrestoSQL(trino)和Hive ...·  1 年前    · 
满身肌肉的人字拖  ·  ​ ...·  1 年前    · 
微笑的香烟  ·  nodejs xml转json-掘金·  1 年前    · 

此功能目前以 公共预览版 提供。

AWS 支持 SAML 2.0 标识联合 ,以允许单一登录到 AWS 管理控制台和 AWS API。 配置了 单一登录 的 Databricks 工作区可以使用 AWS IAM 联合通过 SCIM 来保留用户到其标识提供者 (IdP) 中(而不是 Databricks 中)的 IAM 角色的映射。 这样,你便可以在 IdP 中集中管理数据访问,并将这些权利直接传递给 Databricks 群集。

下图演示了联合工作流:

  • 在 IdP 和 AWS 帐户之间配置信任关系,使 IdP 可以控制用户能够充当哪些角色。
  • 用户通过 SAML SSO 登录到 Databricks,角色权利由 IdP 传递。
  • Databricks 调用 AWS 安全令牌服务 (STS),并通过传递 SAML 响应和获取临时令牌来充当用户的角色。
  • 当用户从 Databricks 群集访问 S3 时,Databricks Runtime 将使用该用户的临时令牌自动安全地执行访问。
  • 启用“ 允许 IAM 角色权利自动同步 ”时,IAM 凭据直通身份验证的联合始终会将角色映射到 SAML 中的用户。 它将覆盖以前通过 SCIM API 设置的任何角色。

  • 高级计划
  • 在 Databricks 工作区中配置的 SAML 单一登录
  • 对以下对象的 AWS 管理员访问权限:
    • Databricks 部署的 AWS 帐户中的 IAM 角色和策略。
    • S3 存储桶的 AWS 帐户。
    • 标识提供者 (IdP) 管理员,此角色可以配置 IdP 以将 AWS 角色传递给 Databricks。
    • Databricks 管理员,此角色可以将 AWS 角色包含在 SAML 断言中。
    • 步骤 1:获取 Databricks SAML URL

    • 转到 管理控制台

    • 单击 “单一登录” 选项卡。

    • 复制“Databricks SAML URL”。

    • 在“属性”中,选择“SAML:aud”。
    • 在“值”中,粘贴在步骤 1 中复制的 Databricks SAML URL。
    • 单击“下一步: 权限”、“下一步: 标记”和“下一步: 查看”。
    • 在“角色名称”字段中键入一个角色名称。
    • 单击“创建角色”。 将显示角色列表。
    • 将内联策略添加到该角色。 此策略授予对 S3 存储桶的访问权限。

    • 在“权限”选项卡中,单击“”。

    • 单击“JSON”选项卡。复制此策略并将 <s3-bucket-name> 设置为你的存储桶名称。

      "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "s3:ListBucket" "Resource": [ "arn:aws:s3:::<s3-bucket-name>" "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl" "Resource": [ "arn:aws:s3:::<s3-bucket-name>/*"
    • 单击“查看策略”

    • 在“名称”字段中键入一个策略名称。

    • 单击“创建策略”。

    • 在“受信任关系”选项卡中,应该可以看到如下所示的内容:

      "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<accountID>:saml-provider/<IdP-name>" "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "SAML:aud": "https://xxxxxx.cloud.databricks.com/saml/consume"

      步骤 5:配置标识提供者以将属性传递给 Databricks

      必须通过 SSO 在 SAML 响应中将以下属性传递给 Databricks,以便 Databricks 将角色传递给群集:

    • https://aws.amazon.com/SAML/Attributes/Role
    • https://aws.amazon.com/SAML/Attributes/RoleSessionName
    • 这些属性是角色 ARN 列表以及与单一登录登录名匹配的用户名。 当用户登录到 Databricks 工作区时,将刷新角色映射。

      如果 IAM 角色的用户权利基于 AD/LDAP 组成员身份,则必须根据 IdP 配置该组到角色的映射。

      每个标识提供者在添加属性以完成 SAML 直通身份验证的方式上有所不同。 以下部分演示了一个 Okta 示例。 有关标识提供者的示例,请参阅 将第三方 SAML 解决方案提供者与 AWS 集成

      Okta 示例

    • 在 Okta 管理控制台中的“应用程序”下,选择你的 Databricks 单一登录应用程序。

    • 在“SAML 设置”下单击“编辑”,然后单击“下一步”进入“配置 SAML”选项卡。

    • 在“属性语句”中添加以下属性:

    • 名称: https://aws.amazon.com/SAML/Attributes/RoleSessionName ,名称格式:URI 引用,值: user.login
    • 若要使用组轻松管理角色,请创建与 IAM 角色对应的组(例如 GroupA GroupB ),并将用户添加到这些组。

    • 可以使用 Okta 表达式按以下方式匹配组和角色:

    • 名称: https://aws.amazon.com/SAML/Attributes/Role ,名称格式: URI Reference ,值:

      Arrays.flatten(isMemberOfGroupName("GroupA") ? "arn:aws:iam::xxx:role/role-a,arn:aws:iam::xxx:saml-provider/okta-databricks" : {}, isMemberOfGroupName("GroupB") ? "arn:aws:iam::xxx:role/role-b,arn:aws:iam::xxx:saml-provider/okta-databricks" : {})
      

      它看起来应该如下所示:

      只有特定组中的用户有权使用对应的 IAM 角色。

    • 使用“管理人员”将用户添加到组。

    • 使用“管理应用”将组分配到 SSO 应用程序,以允许用户登录到 Databricks。

      若要添加其他角色,请按照上述步骤将 Okta 组映射到联合角色。 若要在不同的 AWS 帐户中使用角色,请将 SSO 应用程序作为新的 IAM 标识提供者添加到其他每个具有 Databricks 联合角色的 AWS 帐户。

      步骤 6:(可选)配置 Databricks 以同步 SAML 到 SCIM 的角色映射

      如果要对作业JDBC 使用 IAM 凭据直通身份验证,请执行此步骤。 否则,必须使用 SCIM API 2.0 设置 IAM 角色映射。

    • 转到管理控制台

    • 单击“单一登录”选项卡。

    • 选择“允许 IAM 角色权利自动同步”。

      为获得最佳体验,建议将 IAM 角色的最长会话持续时间设置为 4 到 8 小时。 这是为了避免用户必须反复重新进行身份验证才能提取新令牌,或者长时间运行的查询由于令牌过期而失败。 若要设置持续时间,请执行以下操作:

    • 在 AWS 控制台中,单击在步骤 4:为联合配置 IAM 角色中配置的 IAM 角色。

    • 在“最长 CLI/API 会话持续时间”属性中,单击“编辑”。

      将 IAM 凭据直通身份验证与联合配合使用

      按照启动 IAM 凭据直通身份验证群集中的说明操作,但不要添加实例配置文件。 若要将 IAM 直通身份验证与联合配合用于作业或 JDBC 连接,请按照设置元实例配置文件中的说明进行操作。

      可以安全地与其他用户共享高并发 IAM 凭据直通身份验证群集。 你和其他用户彼此独立,无法读取或使用彼此的凭据。

      配置不当是设置凭据直通身份验证时出错的常见原因。 X-Databricks-PassThrough-Error 头与登录响应头一起返回,以帮助识别这些错误的原因。 可能的值包括:

    • ValidationError:标识提供者中的角色配置无法满足 AWS 服务指定的约束。 此错误的常见原因是角色名称和标识提供者名称的顺序错误。
    • InvalidIdentityToken:提交的标识提供者无效。 此错误的常见原因是未在 AWS IAM 服务中正确设置标识提供者的元数据。
    • AccessDenied:角色验证失败。 此错误的常见原因是尚未在 AWS IAM 服务中将标识提供者添加到角色的“受信任关系”。
    • 角色名称属性格式错误:标识提供者中的角色配置格式错误。
    • 有关访问响应头的说明,请查阅 Web 浏览器文档。

      已知的限制

      IAM 联合不支持以下功能:

    • %fs(请改用等效的 %fs 命令)。
    • 表访问控制
    • SparkContext (sc) 和 SparkSession (spark) 对象上的以下方法:
      • 已弃用的方法。
      • 允许非管理员用户调用 Scala 代码的方法,例如 addFile()addJar()
      • 访问除 S3 以外的文件系统的任何方法。
      • 旧的 Hadoop API(hadoopFile()hadoopRDD())。
      • 流式处理 API,因为直通凭据会在流仍在运行时过期。
      • DBFS 装载 (/dbfs) 仅在 Databricks Runtime 7.3 LTS 及更高版本中可用。 此路径不支持配置了凭据直通身份验证的装入点。
      • 需要群集实例配置文件下载权限的群集范围库。 仅支持具有 DBFS 路径的库。
      • 高并发群集上的 Databricks Connect 仅在 Databricks Runtime 7.3 LTS 和更高版本中可用。
      • MLflow
  •