本文介绍如何在 Unity Catalog 中创建服务凭证对象,以便控制从 Azure Databricks 对外部云服务的访问。 Unity Catalog 中的服务凭据封装了一个长期云凭据,该凭据授予对此类服务的访问权限。
服务凭证不适用于管理对用作 Unity Catalog 托管存储位置或外部存储位置的云存储的访问权限。 对于这些用例,请使用存储凭证。 请参阅 使用 Unity 目录连接到云对象存储。
若要创建服务凭证以访问 Azure 服务,请创建一个引用 Azure 托管标识的 Azure Databricks 访问连接器,并为其分配服务的权限。 然后,你在服务凭证定义中引用该访问连接器。
开始之前
在创建服务凭证之前,必须满足以下要求:
在 Azure Databricks 中:
- 启用了 Unity Catalog 的 Azure Databricks 工作区。 
- 附加到工作区的 Unity Catalog 元存储的 - CREATE SERVICE CREDENTIAL权限。 默认情况下,帐户管理员和元存储管理员具有此权限。 如果已自动为 Unity Catalog 启用工作区,则工作区管理员也具有此特权。- 注意 - 服务主体必须具有帐户管理员角色才能创建使用托管标识的服务凭证。 不能将 - CREATE SERVICE CREDENTIAL委托给服务主体。 它适用于 Azure Databricks 服务主体和 Microsoft Entra ID 服务主体。
在你的 Azure 租户中:
- 与要从中访问数据的工作区位于同一区域的 Azure 服务。
- Azure 资源组上的参与者或所有者角色。
- 所有者,或者是服务帐户中的用户访问管理员 Azure RBAC 角色。
使用托管标识创建服务凭证
若要配置授权访问服务帐户的标识,请使用将 Azure 托管标识连接到 Azure Databricks 帐户的 Azure Databricks 访问连接器。 如果已定义访问连接器,则可以跳到以下过程中的步骤 2。
注意
可以使用服务主体而不是托管标识,但强烈建议使用托管标识。 托管标识的优点是支持 Unity Catalog 访问受网络规则保护的服务帐户(而使用服务主体无法实现此目的),并且无需管理和轮换机密。 如果必须使用服务主体,请参阅使用服务主体(旧版)创建 Unity Catalog 托管存储。
- 在 Azure 门户中创建 Azure Databricks 访问连接器,并使用为 Unity Catalog 配置托管标识中的说明向其分配对希望访问的服务的权限。 - Azure Databricks 访问连接器是一种第一方 Azure 资源,让你可以将托管标识连接到 Azure Databricks 帐户。 必须在 Azure 的访问连接器资源上具有参与者角色或更高权限才能添加服务凭证。 - 无需遵循步骤 2:授予托管标识对存储帐户的访问权限中的说明,而是向托管标识授予对服务帐户的访问权限。 - 记下访问连接器的资源 ID。 
- 以满足开始之前中所列出要求的用户身份登录到 Azure Databricks 工作区。 
- 单击 - 目录。 
- 在“快速访问”页中单击“外部数据 >””按钮,转到“凭证”选项卡,然后选择“创建凭证”。 
- 选择“服务凭证”。 
- 输入凭证名称,并按以下格式输入可选注释和访问连接器的资源 ID: - /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
- (可选)如果使用用户分配的托管标识创建了访问连接器,请在“用户分配的托管标识 ID”字段中输入托管标识的资源 ID,格式如下: - /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
- 单击 “创建” 。 
- 在“已创建服务凭证”对话框中,复制外部 ID。 - 还可以随时在服务凭证详细信息页上查看外部 ID。 
- 单击“完成” 。 
(可选)将服务凭证分配到特定工作区
默认情况下,服务凭证可从元存储中的所有工作区访问。 这意味着,如果用户已被授予该服务凭证的权限,则可以从附加到元存储的任何工作区行使该权限。 如果使用工作区来隔离用户数据访问,则可能需要仅允许从特定工作区访问服务凭证。 此功能称为工作区绑定或服务凭证隔离。
将服务凭证绑定到特定工作区的典型用例是云管理员使用生产云帐户凭证配置服务凭证的场景,并且你希望确保 Azure Databricks 用户仅在生成工作区中使用此凭证访问外部云服务。
有关工作区绑定的详细信息,请参阅(可选)为特定工作区分配存储凭证和仅限特定工作区能访问目录。
将服务凭证绑定到一个或多个工作区
若要将服务凭证分配给特定工作区,请使用目录资源管理器。
所需的权限:元存储管理员或服务凭证所有者。
注意
元存储管理员可以使用目录资源管理器查看元存储中的所有服务凭证,服务凭证所有者可以查看他们在元存储中拥有的所有服务凭证,无论服务凭证是否已分配到当前工作区。 未分配给工作区的服务凭证显示为灰色。
- 登录到链接到元存储的工作区。 
- 在边栏中,单击 - 目录。 
- 在“快速访问”页中单击“外部数据 >”按钮,然后转到“凭证”选项卡。 
- 选择服务凭证,然后转到“工作区”选项卡。 
- 在“工作区”选项卡上,清除“所有工作区拥有访问权限”复选框。 - 如果服务凭证已绑定到一个或多个工作区,则此复选框已清除。 
- 单击“分配到工作区”,然后输入或查找要分配的工作区。 
若要撤销访问权限,请转到“工作区”选项卡,选择该工作区,然后单击“撤销”。 若要允许从所有工作区进行访问,请选中“所有工作区都具有访问权限”复选框。
后续步骤
- 了解如何查看、更新、删除授予其他用户使用服务凭证的权限。 请参阅管理服务凭证。
- 了解如何在代码中使用服务凭证。 请参阅使用 Unity Catalog 服务凭证连接到外部云服务。
限制
以下限制适用:
- Databricks Runtime 版本 16.1 及更低版本仅支持 Python。 
- SQL 仓库仅支持批处理 Unity Catalog Python UDF 的服务凭据。 
- 在服务凭据预览期间, - INFORMATION_SCHEMA.STORAGE_CREDENTIALS(已弃用)显示存储凭据和服务凭据,- INFORMATION_SCHEMA.STORAGE_CREDENTIAL_PRIVILEGES(已弃用)显示应用于存储凭据和服务凭据的权限。 但现在不再如此。 对于存储和服务凭证,应改用- INFORMATION_SCHEMA.CREDENTIALS和- INFORMATION_SCHEMA.CREDENTIAL_PRIVILEGES。