重要
此功能目前以公共预览版提供。
“请求访问”功能允许用户请求 Unity 目录中安全对象的特权。 本页介绍如何将访问请求目标配置为管理员。 这些目标确定当用户请求访问数据对象时发送访问请求的位置。
什么是访问请求目标?
当用户请求访问 Unity 目录中的对象(例如表或视图)时,请求将发送到一个或多个配置的目标。 目标可以是以下任一项:
电子邮件地址
Microsoft Teams 频道
Webhook 端点
重定向 URL(指向您的组织的外部访问请求系统)
每个对象只能配置一个重定向 URL。 如果设置了 URL,则无法设置其他目标,用户将被重定向到该 URL,而不是看到产品内请求表单。
直接在 Azure Databricks 工作界面中请求权限
配置目标后,用户可以通过产品内的多个入口请求权限:目录浏览器、SQL 编辑器和笔记本,以及 AI/BI 仪表板。
目录浏览器
具有 BROWSE 权限的用户可以导航目录树、打开对象的页面,并从那里请求其他特权(例如 SELECT)。 用户还可以将直接 URL 发送到对象的页面,并请求从同一图面进行访问,即使没有 BROWSE。
SQL 编辑器、笔记本和其他创作界面
当查询或命令失败并出现 INSUFFICIENT_PERMISSIONS 错误时,错误消息包含一个请求 访问 选项,该选项使用引用的表预先填充请求。 这在出现该错误的任何位置都适用,包括 SQL 编辑器和笔记本。
人工智能/商业智能仪表板
当仪表板在未使用嵌入式凭据的情况下运行,且某个小组件引用了查看者无权读取的数据集时,该小组件会针对这些缺失的数据集显示一个请求访问模态框。
访问请求目标的工作原理
可以在 Unity 目录中的大多数对象上配置访问请求目标,包括元存储、目录、架构、表、视图、卷、函数、模型、存储凭据、服务凭据、外部位置和连接。
提交请求时,用户可以请求一个或多个主体的访问权限。 这包括自身、服务主体、其他用户或组。 请求被路由到已配置的目标。
如果配置了多个目标,则会将请求发送到所有这些目标。 如果未配置目标,则用户无法请求访问对象。 默认情况下,对象没有配置的目标。 但是,作为元存储管理员和工作区管理员,即使未显式配置目标,也可以 启用默认电子邮件目标 ,以将访问请求传递到相应的所有者。
如果配置了重定向 URL,则用户将转到该 URL,并且看不到访问请求表单。 工作区管理员可以按照 “管理通知目标”中的说明配置外部目标。
目标继承行为
在 Unity 目录对象层次结构的较高级别配置目标时,它还适用于尚未具有目标的所有子对象。 例如,如果在目录中配置目标,则目录下的所有架构和对象都继承此目标,但已具有目标的架构和对象除外。
启用默认电子邮件目标
Databricks 建议启用默认电子邮件目标。 这可确保即使未手动配置目标,也会传递访问请求。 启用后,目录对象的请求将发送到目录所有者的电子邮件地址,并向对象所有者的电子邮件地址发送对目录外部对象(如外部位置)的请求。
小窍门
启用默认电子邮件目标可确保即使未为对象手动配置任何目标,也会传递访问请求。 这是开始接收并响应您的 Unity Catalog 元存储中的请求的最快方式。
若要启用默认目标,必须同时是元存储管理员和工作区管理员。
在工作区右上角,单击个人资料照片,然后选择“设置”。
单击“ 通知”。
在 UC 中启用访问请求的默认电子邮件目标。
在对象上配置访问请求目标
若要在对象上配置访问请求目标,你必须是对象所有者、对对象拥有 MANAGE 权限或元存储管理员。
可以使用目录资源管理器、REST API 或 Terraform 配置目标。
为现有对象配置目标
目录浏览器
在 Azure Databricks 工作区中,单击
目录。
选择安全对象。
单击
菜单并选择“ 管理访问请求目标”。
选择一个或多个电子邮件或外部目标,或配置重定向 URL。
如果选择 URL,则无法添加其他目标类型。
单击“更新” 。
REST API
使用 访问请求目标 API 在安全对象上设置目标。
PATCH 替换可保护对象上的目标;如果之前未设置任何目标,则会创建这些目标。
curl -X PATCH \
https://<workspace-url>/api/3.0/rfa/destinations \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"destinations": [
{ "destination_id": "data-access@example.com", "destination_type": "EMAIL" }
],
"securable": {
"type": "TABLE",
"full_name": "main.sales.orders"
}
}'
Terraform
使用databricks_rfa_access_request_destinations资源。
resource "databricks_rfa_access_request_destinations" "orders" {
destinations = [
{
destination_id = "data-access@example.com"
destination_type = "EMAIL"
}
]
securable = {
type = "TABLE"
full_name = "main.sales.orders"
}
}
创建目录时配置目标
- 在 Azure Databricks 工作区中,单击
目录。
- 单击
加号图标。 然后单击“ 创建目录”。
- 输入目录的名称,然后单击“ 创建目录”。
- 在下一个模式中,单击“ 配置目录”。
- 在 “访问请求 ”部分下,根据需要添加、修改或删除目标。 默认情况下,目录所有者的电子邮件作为目标包含在内。
- 单击“ 下一步”,然后单击“ 保存”。
目标对象在 Unity Catalog 对象层次结构中继承。 在具有访问请求目标的目录中创建架构时, “创建新架构 模式”提到继承的目标:
若要修改架构上的这些目标,请参阅 为现有对象配置目标。
访问请求示例
以下部分显示了发送到不同目标的访问请求的示例。
访问请求电子邮件由 noreply@databricks.com 发送。
Webhook (JSON)
{
"requesterName": "<first-name> <last-name> (<email>)",
"objectName": "<catalog>.<schema>.<table>",
"objectType": "Table",
"privileges": "SELECT",
"principalName": "<group-name>",
"onBehalfOf": "<group-name>",
"onBehalfOfType": "Group",
"comment": "My team needs access to run queries on this table.",
"databricksWorkspaceUrl": "https:/<account>.databricks.com/explore/data/<catalog>/<schema>/<table>?o=<table-id>&activeTab=permissions&showGrantModal=true&requestedPrivileges=SELECT&groupId=<group-id>"
}
有关如何将 Webhook 与常用工具集成的信息,请参阅以下内容:
内置权限验证
- 当用户请求类似权限
USE CATALOG时,系统会自动检查先决条件权限(USE SCHEMA,SELECT) 。 - 缺少前置条件时,会生成额外请求,并将其路由给父对象的审批人。
- 验证也适用于代表另一个用户或组提交的请求。
批准访问请求
若要批准访问请求,请按照发送到访问请求通知的链接进行作。 该链接会在工作区中打开一个模式对话框,其中显示请求者、对象和请求的权限。
接下来,选择以下审批方法之一:
向组添加主体 ,将请求者添加到至少具有一个请求权限的一个或多个现有组。
向主体授予权限 ,使其直接访问对象。 还可以选择特权预设,例如 数据读取器 来向用户授予权限集合。
有关每个访问请求和目标配置的记录,请参阅审核日志参考中的 访问事件请求 。