此功能目前以
公共预览版
提供。
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"
必须通过 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 帐户。
如果要对作业或 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