教程:使用 Azure Databricks 和 Azure Key Vault 访问 Azure Blob 存储

在本教程中,你将了解如何使用 Azure Key Vault 中存储的机密从 Azure Databricks 访问 Azure Blob 存储。

在本教程中,你将了解如何执行以下操作:

  • 使用 Azure CLI 创建存储帐户和 Blob 容器
  • 创建 Key Vault 并设置机密
  • 创建 Azure Databricks 工作区并添加 Key Vault 机密范围
  • 从 Azure Databricks 工作区访问 Blob 容器

先决条件

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

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

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

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

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

需要为自己分配存储 Blob 数据参与者角色,然后才能创建要向其上传 Blob 的容器。 在本例中,角色将分配给之前创建的存储帐户。

az role assignment create --role "Storage Blob Data Contributor" --assignee t-trtr@microsoft.com --scope "/subscriptions/{subscription-id}/resourceGroups/contosoResourceGroup5/providers/Microsoft.Storage/storageAccounts/contosoblobstorage5

你现已将角色分配给存储帐户,接下来可为 Blob 创建容器。

az storage container create --account-name contosoblobstorage5 --name contosocontainer5 --auth-mode login

创建容器后,可将 Blob(所选文件)上传到该容器。 在本例中,上传了包含 helloworld 的 .txt 文件。

az storage blob upload --account-name contosoblobstorage5 --container-name contosocontainer5 --name helloworld --file helloworld.txt --auth-mode login

列出容器中的 Blob,以验证容器是否具有该 Blob。

az storage blob list --account-name contosoblobstorage5 --container-name contosocontainer5 --output table --auth-mode login

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

使用以下命令获取存储容器的 key1 值。 复制此值。

az storage account keys list -g contosoResourceGroup5 -n contosoblobstorage5

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

创建 Key Vault 并设置机密

将使用以下命令创建 Key Vault。 此命令也将显示 Key Vault 的元数据。 复制 ID 和 vaultUri 。

az keyvault create --name contosoKeyVault10 --resource-group contosoResourceGroup5 --location chinaeast

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

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

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

创建 Azure Databricks 工作区并添加 Key Vault 机密范围

此部分不能通过命令行完成。 需要访问 Azure 门户来执行以下操作:

  1. 创建 Azure Databricks 资源
  2. 启动工作区
  3. 创建 Key Vault 支持的机密范围

从 Azure Databricks 工作区访问 Blob 容器

此部分不能通过命令行完成。 需要使用 Azure Databricks 工作区来执行以下操作:

  1. 创建新群集
  2. 创建新笔记本
  3. 填写 Python 脚本中的相应字段
  4. 运行 Python 脚本
dbutils.fs.mount(
source = "wasbs://<your-container-name>@<your-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()

后续步骤

确保 Key Vault 可恢复: