使用服务凭据管理对外部云服务的访问

重要

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

本文介绍如何在 Unity 目录中创建服务凭据对象,以便控制对外部云服务的访问。 Unity 目录中的服务凭据对象封装了一个长期云凭据,该凭据提供对用户从 Azure Databricks 连接到的外部云服务的访问权限。

服务凭据不适用于管理对用作 Unity 目录托管存储位置或外部存储位置的云存储的访问。 对于这些用例,请使用存储凭据。 请参阅 使用 Unity 目录管理对云存储的访问权限。

若要创建服务凭据以访问 Azure 服务,请创建一个 Azure Databricks 访问连接器,该连接器引用 Azure 托管标识,并为其分配对服务或服务的权限。 然后,在服务凭据定义中引用该访问连接器。

开始之前的准备工作

在创建服务凭据之前,必须满足以下要求:

在 Azure Databricks 中:

  • 启用了 Unity Catalog 的 Azure Databricks 工作区。

  • 附加到工作区的 Unity Catalog 元存储的 CREATE SERVICE CREDENTIAL 权限。 默认情况下,帐户管理员和元存储管理员具有此权限。 如果工作区已自动为 Unity 目录启用,则工作区管理员也具有此权限。

    注意

    服务主体必须具有帐户管理员角色才能创建使用托管标识的服务凭据。 不能将 CREATE SERVICE CREDENTIAL 委托给服务主体。 它适用于 Azure Databricks 服务主体和 Microsoft Entra ID 服务主体。

在你的 Azure 租户中:

  • 要从中访问数据的工作区所在的同一区域中的 Azure 服务。
  • Azure 资源组上的“参与者”或“所有者”角色。
  • 服务帐户上的所有者或用户访问管理员 Azure RBAC 角色。

使用托管标识创建服务凭据

若要配置授权访问服务帐户的标识,请使用将 Azure 托管标识连接到 Azure Databricks 帐户的 Azure Databricks 访问连接器。 如果已定义访问连接器,则可以跳到以下过程中的步骤 2。

注意

可以使用服务主体而不是托管标识,但强烈建议使用托管标识。 托管标识的优点是允许 Unity 目录访问受网络规则保护的服务帐户,这无法使用服务主体,并且无需管理和轮换机密。 如果必须使用服务主体,请参阅使用服务主体创建 Unity 目录托管存储(旧版)。

  1. 在Azure 门户中创建 Azure Databricks 访问连接器,并使用“配置 Unity 目录的托管标识”中的说明为要访问的服务分配它权限。

    Azure Databricks 访问连接器是一种第一方 Azure 资源,让你可以将托管标识连接到 Azure Databricks 帐户。 必须在 Azure 中的访问连接器资源上具有 参与者 角色或更高版本才能添加服务凭据。

    无需遵循步骤 2 中的 说明:授予托管标识对存储帐户的访问权限,而是向托管标识授予对服务帐户的访问权限。

    记下访问连接器的资源 ID。

  2. 以满足开始之前列出的要求的用户身份登录到 Azure Databricks 工作区。

  3. 单击 目录图标“目录”

  4. “快速访问 ”页上,单击“ 外部数据 > ”按钮,转到 “凭据 ”选项卡,然后选择“ 创建凭据”。

  5. 选择 “服务凭据”。

  6. 以以下格式输入凭据名称、可选注释和访问连接器的资源 ID:

    /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  7. (可选)如果使用用户分配的托管标识创建了访问连接器,请在“用户分配的托管标识 ID”字段中输入托管标识的资源 ID,格式如下:

    /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
    
  8. 单击 “创建”

  9. “服务凭据创建 ”对话框中,复制 外部 ID

    还可以随时在服务凭据详细信息页上查看外部 ID。

  10. 单击“Done”(完成) 。

(可选)将服务凭据分配给特定工作区

重要

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

默认情况下,可从元存储中的所有工作区访问服务凭据。 这意味着,如果用户已获得该服务凭据的特权,他们可以从附加到元存储的任何工作区中行使该权限。 如果使用工作区来隔离用户数据访问,则可能需要仅允许从特定工作区访问服务凭据。 此功能称为工作区绑定或服务凭据隔离。

将服务凭据绑定到特定工作区的典型用例是云管理员使用生产云帐户凭据配置服务凭据的方案,并且你希望确保 Azure Databricks 用户使用此凭据仅访问生产工作区中的外部云服务。

有关工作区绑定的详细信息,请参阅 (可选)将存储凭据分配给特定工作区 ,并 限制对特定工作区的目录访问。

将服务凭据绑定到一个或多个工作区

若要将服务凭据分配给特定工作区,请使用目录资源管理器。

所需的权限:元存储管理员或服务凭据所有者。

注意

元存储管理员可以使用目录资源管理器查看元存储中的所有服务凭据,并且服务凭据所有者可以查看他们在元存储中拥有的所有服务凭据,而不考虑是否将服务凭据分配给当前工作区。 未分配给工作区的服务凭据显示为灰显。

  1. 登录到链接到元存储的工作区。

  2. 在边栏中,单击 目录图标“目录”

  3. “快速访问”页上,单击“外部数据>”按钮并转到“凭据”选项卡。

  4. 选择服务凭据并转到 “工作区 ”选项卡。

  5. 在“工作区”选项卡上,清除“所有工作区拥有访问权限”复选框。

    如果服务凭据已绑定到一个或多个工作区,则此复选框已清除。

  6. 单击“分配到工作区”,然后输入或查找要分配的工作区

若要撤销访问权限,请转到“工作区”选项卡,选择该工作区,然后单击“撤销”。 若要允许从所有工作区进行访问,请选中“所有工作区都具有访问权限”复选框

后续步骤

限制

以下限制适用:

  • Databricks Runtime 15.4 LTS 仅包括 Python 支持。
  • 不支持 SQL 仓库。
  • 对服务凭据执行的操作的某些审核事件不会显示在 system.access.audit 表中。 有关创建、删除、更新、读取、列出或使用服务凭据的人员的审核信息将可用。 请参阅 审核日志系统表参考
  • 在服务凭据预览期间, INFORMATION_SCHEMA.STORAGE_CREDENTIALS (已弃用)同时显示存储凭据和服务凭据,并且 INFORMATION_SCHEMA.STORAGE_CREDENTIAL_PRIVILEGES (已弃用)显示适用于存储凭据和服务凭据的权限。 这是将更正的预览行为不正确,不应依赖它继续。 应改用INFORMATION_SCHEMA.CREDENTIALSINFORMATION_SCHEMA.CREDENTIAL_PRIVILEGES存储和服务凭据。