本页介绍如何在 Unity 目录中创建存储凭据以连接到 Azure Data Lake Storage。 有关 Unity 目录支持的其他云存储选项的信息,请参阅 Unity 目录支持的云存储选项。
存储凭据包含提供对云存储的访问权限的长期云凭据。 在 Unity 目录中创建 外部位置 以控制对外部存储的访问时,可以引用存储凭据以及云存储路径。
创建访问 Azure Data Lake Storage 的存储凭据
可以使用 Azure 托管标识或服务主体作为授权访问存储容器的标识。 强烈建议使用托管标识。 它们的优点是允许 Unity Catalog 访问受网络规则保护的存储帐户(而使用服务主体无法实现此目的),并且无需管理和轮换机密。 如果要使用服务主体,请参阅使用服务主体(旧版)创建 Unity Catalog 托管存储。
要求
在 Azure Databricks 中:
- 启用 Unity Catalog 的 Azure Databricks 工作区。
- 附加到工作区的 Unity Catalog 元存储的
CREATE STORAGE CREDENTIAL
特权。 默认情况下,帐户管理员和元存储管理员具有此权限。
在 Azure 租户中:
Azure Data Lake Storage 存储容器。 为了避免出口费用,它应与要从中访问数据的工作区位于同一区域。
Azure Data Lake Storage 存储帐户必须具有分层命名空间。
Azure 资源组的参与者或所有者。
所有者,或在存储帐户中具有用户访问管理员 Azure RBAC 角色的用户。
创建存储凭据
在 Azure 门户中创建 Azure Databricks 访问连接器,并使用为 Unity Catalog 配置托管标识中的说明向其分配对希望访问的存储容器的权限。
Azure Databricks 访问连接器是一种第一方 Azure 资源,让你可以将托管标识连接到 Azure Databricks 帐户。 若要添加存储凭据,必须在 Azure 中的访问连接器资源上具有 “参与者” 角色或更高的角色。
记下访问连接器的资源 ID。
以具有
CREATE STORAGE CREDENTIAL
特权的用户身份登录到已启用 Unity Catalog 的 Azure Databricks 工作区。元存储管理员和帐户管理员角色都包含此特权。
单击
目录。
在“快速访问”页中单击“外部数据 >””按钮,转到“凭证”选项卡,然后选择“创建凭证”。
选择存储凭据。
选择“Azure 托管标识”作为“凭据类型”。
输入凭据的名称,并按以下格式输入访问连接器的资源 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>
(可选)如果希望用户对使用此存储凭据的外部位置具有只读访问权限,请选择“只读”。 有关详细信息,请参阅将存储凭据标记为只读。
单击 “创建” 。
(可选)将存储凭据绑定到特定工作区。
默认情况下,任何特权用户都可以在附加到元存储的任何工作区上使用存储凭据。 如果只想允许从特定工作区进行访问,请转到“工作区”选项卡并分配工作区。 请参阅(可选)将存储凭据分配到特定工作区。
(可选)将存储凭据分配到特定工作区
默认情况下,存储凭据可从元存储中的所有工作区访问。 这意味着,如果用户已被授予该存储凭据的权限(例如 CREATE EXTERNAL LOCATION
),则可以从附加到元存储的任何工作区行使该权限。 如果使用工作区来隔离用户数据访问,则可能需要仅允许从特定工作区访问存储凭据。 此功能称为工作区绑定或存储凭据隔离。
将存储凭据绑定到特定工作区的典型用例是云管理员使用生产云帐户凭据配置存储凭据的场景,并且你希望确保 Azure Databricks 用户仅在生成工作区中使用此凭据创建外部位置。
有关工作区绑定的详细信息,请参阅(可选)为特定工作区分配外部位置和仅限特定工作区能访问目录。
注意
行使对存储凭据的特权时,将引用工作区绑定。 例如,如果用户使用存储凭据创建外部位置,则仅当创建外部位置时,才会检查存储凭据上的工作区绑定。 创建外部位置后,它将独立于在存储凭据上配置的工作区绑定而运行。
将存储凭据绑定到一个或多个工作区
若要将存储凭据分配到特定的工作区,可以使用目录资源管理器或 Databricks CLI。
所需的权限:元存储管理员、存储凭据所有者或存储凭据的MANAGE
。
注意
元存储管理员可以使用目录资源管理器查看元存储中的所有存储凭据,存储凭据所有者可以查看他们在元存储中拥有的所有存储凭据,无论存储凭据是否已分配到当前工作区。 未分配给工作区的存储凭据显示为灰色。
目录资源管理器
登录到链接到元存储的工作区。
在边栏中,单击
目录。
在“快速访问”页中单击“外部数据>”按钮,然后转到“凭据”选项卡。
选择存储凭据,然后转到“工作区”选项卡。
在“工作区”选项卡上,清除“所有工作区拥有访问权限”复选框。
如果存储凭据已绑定到一个或多个工作区,则此复选框已清除。
单击分配到工作区,然后输入或查找要分配的工作区。
若要撤销访问权限,请转到“工作区”选项卡,选择该工作区,然后单击“撤销”。 若要允许从所有工作区进行访问,请选中“所有工作区都具有访问权限”复选框。
CLI
有两个 Databricks CLI 命令组,以及将存储凭据分配给工作区所需的两个步骤。
在以下示例中,将 <profile-name>
替换为 Azure Databricks 身份验证配置文件的名称。 它应包括个人访问令牌的值,以及生成个人访问令牌的工作区的工作区实例名称和工作区 ID。 请参阅个人访问令牌身份验证(已弃用)。
使用
storage-credentials
命令组的update
命令将存储凭据的isolation mode
设置为ISOLATED
:databricks storage-credentials update <my-storage-credential> \ --isolation-mode ISOLATED \ --profile <profile-name>
对于附加到元存储的所有工作区,默认的
isolation-mode
为OPEN
。使用
workspace-bindings
命令组的update-bindings
命令将工作区分配到存储凭据:databricks workspace-bindings update-bindings storage-credential <my-storage-credential> \ --json '{ "add": [{"workspace_id": <workspace-id>}...], "remove": [{"workspace_id": <workspace-id>}...] }' --profile <profile-name>
使用
"add"
和"remove"
属性添加或删除工作区绑定。注意
只读绑定 (
BINDING_TYPE_READ_ONLY
) 不适用于存储凭据。 因此,没有理由为存储凭据绑定设置binding_type
。
若要列出存储凭据的所有工作区分配,请使用 workspace-bindings
命令组的 get-bindings
命令:
databricks workspace-bindings get-bindings storage-credential <my-storage-credential> \
--profile <profile-name>
取消存储凭据与工作区的绑定
workspace-bindings
中包含有关使用目录资源管理器或 CLI 命令组撤销工作区对存储凭据的访问权限的说明。
后续步骤
查看、更新、删除和授予其他用户使用存储凭据的权限。 请参阅管理存储凭据。
使用存储凭据定义外部位置。 请参阅创建外部位置以将云存储连接到 Azure Databricks。