管理访问请求

重要

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

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

批准访问请求

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

查看访问请求。

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

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

    使用组授予访问请求。

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

    使用特权批准访问请求。

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