你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 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。

az storage account create --name contosoblobstorage5 --resource-group contosoResourceGroup --location eastus --sku Standard_ZRS --encryption-services blob

上述命令的控制台输出,其中 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 eastus

图像上述命令的控制台输出,其中 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.windows.net",
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 可恢复: