教程:使用 Azure Databricks 和 Azure 密钥保管库 访问 Azure Blob 存储

在本教程中,你将使用存储在Azure 密钥保管库中的存储帐户密钥从Azure Databricks访问Azure Blob 存储。

Important

存储帐户密钥访问是旧模式。 对于新工作负载,请通过 Azure Databricks(通过 Unity 目录凭据或使用 OAuth 的 ABFS 装载)使用Microsoft Entra ID授权,并在存储帐户上禁用共享密钥授权。 Entra ID授权无需存储或轮换存储帐户密钥并提供精细审核。 本文中的步骤对于仍使用共享密钥访问的存储帐户仍然有效。

在本教程中,你将了解:

  • 使用Azure CLI创建存储帐户和 Blob 容器。
  • 创建密钥保管库并设置机密。
  • 创建Azure Databricks工作区并添加密钥保管库机密范围。
  • 从Azure Databricks工作区访问 blob 容器。

先决条件

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

在开始学习本教程之前,请安装 Azure CLI

使用 Azure CLI 创建存储帐户和 Blob 容器

创建常规用途存储帐户以使用 Blob。 如果没有资源组,请在运行该命令之前创建一个资源组。 以下命令创建存储帐户并显示其元数据。 复制 ID 值。

az storage account create --name <storage-account-name> --resource-group <resource-group> --location <location> --sku Standard_ZRS --encryption-services blob

上述命令的控制台输出,其中 ID 以绿色突出显示,方便最终用户查看。

在创建用于上传 Blob 的容器之前,请先为自己分配 存储 Blob 数据参与者 角色。 对于此示例,角色是在前面创建的存储帐户上分配的。

az role assignment create --role "Storage Blob Data Contributor" --assignee <user-principal-name> --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>

分配角色后,请为 Blob 创建容器:

az storage container create --account-name <storage-account-name> --name <container-name> --auth-mode login

创建容器后,将 Blob(所选文件)上传到该容器。 在此示例中,上传了一个带有 helloworld 的 .txt 文件。

az storage blob upload --account-name <storage-account-name> --container-name <container-name> --name helloworld --file helloworld.txt --auth-mode login

列出容器中的 blob 以进行验证:

az storage blob list --account-name <storage-account-name> --container-name <container-name> --output table --auth-mode login

上述命令的控制台输出,其中显示了刚刚存储在容器中的文件。

使用以下命令获取存储帐户的 key1 值。 复制值。

az storage account keys list -g <resource-group> -n <storage-account-name>

上述命令的控制台输出,其中 key1 的值以绿色框突出显示。

创建密钥保管库并设置机密

使用以下命令创建密钥保管库。 该命令还显示密钥保管库的元数据。 复制 IDvaultUri 值。

az keyvault create --name <vault-name> --resource-group <resource-group> --location <location> --enable-rbac-authorization true --enable-purge-protection true

图像 上述命令的控制台输出,其中 ID 和 vaultUri 以绿色突出显示,方便用户查看。

若要创建机密,请使用以下命令。 将机密的值设置为从您的存储帐户中获取的 key1 值。

az keyvault secret set --vault-name <vault-name> --name storageKey --value "value of your key1"

创建Azure Databricks工作区并添加密钥保管库机密范围

本部分需要Azure门户。 使用它可执行以下操作:

  1. 创建Azure Databricks资源。
  2. 打开工作区。
  3. 创建由 密钥保管库 提供支持的机密作用域。

从 Azure Databricks 工作区访问 Blob 容器

本部分在Azure Databricks工作区中完成。 在工作区中:

  1. 创建新群集
  2. 创建新笔记本
  3. 填写Python脚本中的相应字段。
  4. 运行 Python 脚本。
dbutils.fs.mount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.chinacloudapi.cn",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

df = spark.read.text("/mnt/<mount-name>/<file-name>")

df.show()

后续步骤

确保你的 密钥保管库 可恢复: