管理访问请求

重要

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

访问请求(RFA)功能允许用户请求 Unity 目录中安全对象的特权。 本页介绍如何将访问请求目标配置为管理员。 这些目标确定当用户请求访问数据对象时发送访问请求的位置。

什么是访问请求目标?

当用户请求访问 Unity 目录中的对象(例如表或视图)时,请求将发送到一个或多个配置的目标。 目标可以是以下任一项:

  • 电子邮件地址

  • Microsoft Teams 频道

  • Webhook 端点

  • 重定向 URL(指向您的组织的外部访问请求系统)

    每个对象只能配置一个重定向 URL。 如果设置了 URL,则无法设置其他目标,用户将被重定向到该 URL,而不是看到产品内请求表单。

直接在 Azure Databricks 工作界面中请求权限

配置目标后,用户可以通过产品内的多个入口请求权限:目录浏览器、SQL 编辑器和笔记本,以及 AI/BI 仪表板。

目录浏览器

具有 BROWSE 权限的用户可以导航目录树、打开对象的页面,并从那里请求其他特权(例如 SELECT)。 用户还可以将直接 URL 发送到对象的页面,并请求从同一图面进行访问,即使没有 BROWSE

带有“请求访问”入口的目录浏览器对象页。

SQL 编辑器、笔记本和其他创作界面

当查询或命令失败并出现 INSUFFICIENT_PERMISSIONS 错误时,错误消息包含一个请求 访问 选项,该选项使用引用的表预先填充请求。 这在出现该错误的任何位置都适用,包括 SQL 编辑器和笔记本。

SQL 查询失败,出现 INSUFFICIENT_PERMISSIONS 错误,并显示“请求访问”选项。

人工智能/商业智能仪表板

当仪表板在未使用嵌入式凭据的情况下运行,且某个小组件引用了查看者无权读取的数据集时,该小组件会针对这些缺失的数据集显示一个请求访问模态框。

AI/BI 仪表板小组件,提示查看者请求访问缺失的数据集。

访问请求目标的工作原理

可以在 Unity 目录中的大多数对象上配置访问请求目标,包括元存储、目录、架构、表、视图、卷、函数、模型、存储凭据、服务凭据、外部位置和连接。 如果用户拥有 BROWSE 权限或该对象的直接 URL,则可以请求访问该对象。

提交请求时,用户可以请求一个或多个主体的访问权限。 这包括自身、服务主体、其他用户或组。 请求被路由到已配置的目标。 如果在对象上配置了多个目标,则会向所有目标发送请求。

如果配置了重定向 URL,则用户将转到该 URL,并且看不到访问请求表单。 工作区管理员可以按照 “管理通知目标”中的说明配置外部目标。

Azure Databricks 会根据是否在元存储级别或工作区级别启用了访问请求 (RFA),来确定将访问请求路由到何处。

访问请求目标解析的高级概述

目标解析逻辑

启用元存储级访问请求后,Azure Databricks按以下顺序解析给定请求的目标:

  1. 对象级显式目标:如果对象具有显式目标集,则会向该位置发送请求。
  2. 对象所有者的电子邮件:如果对象所有者是单个用户,则会将请求发送到其电子邮件地址。
  3. 父对象目标:如果对象所有者是组或服务主体,Azure Databricks遍历对象层次结构并使用找到的第一个显式目标。
  4. 元存储级目标:如果在对象层次结构中找不到目标,则请求会回退到元存储级别目标。 如果未设置元存储级别目标,则用户无法请求访问该对象。 请参阅 在整个元存储中启用访问请求

下面的流程图演示了以下顺序:

启用元存储级 RFA 时的目标解析逻辑

目标继承行为

在 Unity 目录对象层次结构的较高级别配置目标时,它还适用于尚未具有目标的所有子对象。 例如,如果在目录中配置目标,则目录下的所有架构和对象都继承此目标,但已具有目标的架构和对象除外。

访问请求目标继承示例

启用针对整个元存储的访问请求

Databricks 建议在元存储级别启用访问请求。 这可确保即使未手动配置目标,也会传递访问请求。 启用后,目录对象的请求将发送到目录所有者的电子邮件地址,并向对象所有者的电子邮件地址发送对目录外部对象(如外部位置)的请求。

若要跨元存储配置访问请求,你必须是元存储管理员。

  1. 在 Azure Databricks 工作区中,单击 “数据”图标。目录

  2. “目录 ”窗格顶部,单击 齿轮图标。齿轮图标 并选择 元存储

  3. 在“ 详细信息 ”选项卡上,单击 Access 请求旁边的编辑图标。

    在目录资源管理器中编辑元存储上的访问请求。

  4. 配置以下选项:

    • 元存储访问请求设置:启用此选项可将所有者的电子邮件地址自动配置为每个对象的目标。 这仅适用于没有显式配置的目标的对象。 可以手动更改任何已配置的目标。
    • 元存储级目标:可以将任何电子邮件地址、Webhook 或重定向 URL 设置为元存储级目标。 此目标由未显式配置目标的所有子对象(目录、架构、表和其他安全对象)继承。

注释

先前在中提供的>设置现已弃用,并由上述元存储级配置取代。 启用了工作区级别默认设置的客户不会发生任何行为更改。

在对象上配置访问请求目标

若要在对象上配置访问请求目标,你必须是对象所有者、对对象拥有 MANAGE 权限或元存储管理员。

可以使用目录资源管理器、REST API 或 Terraform 配置目标。

为现有对象配置目标

目录浏览器

  1. 在 Azure Databricks 工作区中,单击 “数据”图标。目录

  2. 选择安全对象。

  3. 单击 “Kebab”菜单图标。kebab 菜单并选择“ 管理访问请求目标”。

  4. 选择一个或多个电子邮件或外部目标,或配置重定向 URL。

    如果选择 URL,则无法添加其他目标类型。

    配置访问请求目标。

  5. 单击“更新” 。

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"
  }
}

创建目录时配置目标

  1. 在 Azure Databricks 工作区中,单击 “数据”图标。目录
  2. 单击 加号图标。 加号图标。 然后单击“ 创建目录”。
  3. 输入目录的名称,然后单击“ 创建目录”。
  4. 在下一个模式中,单击“ 配置目录”。
  5. “访问请求 ”部分下,根据需要添加、修改或删除目标。 默认情况下,目录所有者的电子邮件作为目标包含在内。

为新目录配置访问请求目标。

  1. 单击“ 下一步”,然后单击“ 保存”。

目标对象在 Unity Catalog 对象层次结构中继承。 在具有访问请求目标的目录中创建架构时, “创建新架构 模式”提到继承的目标:

新架构模式中列出的访问请求目标

若要修改架构上的这些目标,请参阅 为现有对象配置目标

访问请求示例

以下部分显示了发送到不同目标的访问请求的示例。

Email

访问请求电子邮件由 azure-noreply@microsoft.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 SCHEMASELECT) 。
  • 缺少前置条件时,会生成额外请求,并将其路由给父对象的审批人。
  • 验证也适用于代表另一个用户或组提交的请求。

批准访问请求

若要批准访问请求,请按照发送到访问请求通知的链接进行作。 该链接会在工作区中打开一个模式对话框,其中显示请求者、对象和请求的权限。

查看访问请求。

接下来,选择以下审批方法之一:

  • 向组添加主体 ,将请求者添加到至少具有一个请求权限的一个或多个现有组。

    使用组授予访问请求。

  • 向主体授予权限 ,使其直接访问对象。 还可以选择特权预设,例如 数据读取器 来向用户授予权限集合。

    使用特权批准访问请求。

有关每个访问请求和目标配置的记录,请参阅审核日志参考中的 访问事件请求