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

本教程介绍如何使用 Key Vault 中存储的机密从 Azure Databricks 访问 Azure Blob 存储。

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

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

先决条件

登录到 Azure 门户

登录 Azure 门户

注意

不能使用 Azure 试用版订阅完成本教程。 如果你有试用版订阅,请转到个人资料,将订阅更改为“标准预付费套餐”。 有关详细信息,请参阅 Azure 试用版订阅。 然后,对你所在区域中的 vCPU 请求增加配额。 创建 Azure Databricks 工作区时,可以选择“试用版(高级 - 14天免费 DBU)” 定价层,让工作区访问免费的高级 Azure Databricks DBU 14 天。

创建存储帐户和 Blob 容器

  1. 在 Azure 门户中,选择“创建资源”“存储”。 然后选择“存储帐户”。

    Find Azure storage account resource

  2. 选择你的订阅和资源组,或创建新的资源组。 然后输入存储帐户名称,并选择一个位置。 选择“查看 + 创建” 。

    Set storage account properties

  3. 如果验证失败,请解决问题并重试。 如果验证成功,请选择“创建”并等待创建存储帐户。

  4. 导航到新建的存储帐户,在“概述”页上的“服务”下选择“Blob”。 然后选择“+ 容器”并输入容器名称。 选择“确定”

    Create new container

  5. 找到要上传到 Blob 存储容器的文件。 如果没有文件,请使用文本编辑器创建包含一些信息的新文本文件。 在此示例中,名为 hw.txt 的文件包含文本 "hello world"。在本地保存文本文件,并将其上传到 blob 存储容器。

    Upload file to container

  6. 返回你的存储帐户,在“设置”下选择“访问密钥”。 将“存储帐户名称”和“密钥 1”复制到文本编辑器,供稍后在本教程中使用。

    Find storage account access keys

创建 Azure Key Vault 并添加机密

  1. 在 Azure 门户中选择“创建资源”,然后在搜索框中输入 Key Vault

    Create an Azure resource search box

  2. 系统会自动选择 Key Vault 资源。 选择创建

    Create a Key Vault resource

  3. 在“创建 Key Vault”页上输入以下信息,并将剩余字段保留默认值:

    properties 说明
    名称 Key Vault 的唯一名称。
    订阅 选择订阅。
    资源组 选择一个资源组,或创建新的资源组。
    位置 选择一个位置。

    Azure key vault properties

  4. 提供上述信息后,选择“创建” 。

  5. 在 Azure 门户中导航到新建的 Key Vault,选择“机密”。 然后选择“+ 生成/导入”。

    Generate new key vault secret

  6. 在“创建机密”页上提供以下信息,并将剩余字段保留默认值:

    properties
    上传选项 手动
    名称 存储帐户密钥的易记名称。
    存储帐户中的密钥 1。

    Properties for new key vault secret

  7. 在文本编辑器中保存密钥名称,供稍后在本教程中使用。然后选择“创建”。 导航到“属性”菜单。 将“DNS 名称”和“资源 ID”复制到文本编辑器,供稍后在本教程中使用。

    Copy Azure Key Vault DNS name and Resource ID

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

  1. 在 Azure 门户中,选择“创建资源”“分析”“Azure Databricks”。

    Databricks on Azure portal

  2. 在“Azure Databricks 服务”下提供以下值,以创建 Databricks 工作区。

    properties 说明
    工作区名称 提供 Databricks 工作区的名称
    订阅 从下拉列表中选择自己的 Azure 订阅。
    资源组 选择包含你的 Key Vault 的同一资源组。
    位置 选择 Azure Key Vault 所在的同一位置。 有关所有可用区域,请参阅各区域推出的 Azure 服务
    定价层 选择“标准”或“高级”。 有关这些层的详细信息,请参阅 Databricks 价格页

    Databricks workspace properties

    选择创建

  3. 在 Azure 门户中导航到新建的 Azure Databricks 资源,然后选择“启动工作区”。

    Launch Azure Databricks workspace

  4. 在另一个窗口中打开 Azure Databricks 工作区后,将 #secrets/createScope 追加到 URL 中。 该 URL 应采用以下格式:

    https://<\location>.databricks.azure.cn/?o=<\orgID>#secrets/createScope.

  5. 输入范围名称,然后输入前面保存的 Azure Key Vault DNS 名称和资源 ID。 在文本编辑器中保存范围名称,供稍后在本教程中使用。 然后选择“创建”。

    Create secret scope in the Azure Databricks workspace

从 Azure Databricks 访问 Blob 容器

  1. 在 Azure Databricks 工作区的主页中,选择“常用任务”下的“新建群集”。

    Create a new Azure Databricks cluster

  2. 输入群集名称,然后选择“创建群集”。 群集创建过程需要几分钟才能完成。

  3. 创建群集后,导航到 Azure Databricks 工作区的主页,在“常用任务”下选择“新建笔记本”。

    Create a new Azure Databricks notebook

  4. 输入笔记本名称,将语言设置为 Python。 将群集设置为在上一步骤中创建的群集的名称。

  5. 运行以下命令以装载 Blob 存储容器。 请记得更改以下属性的值:

    • your-container-name
    • your-storage-account-name
    • mount-name
    • config-key
    • scope-name
    • key-name
    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>")})
    
    • mount-name 是一个 DBFS 路径,表示 Blob 存储容器或该容器中的某个文件夹(在源中指定)要装载到的位置。 目录是使用你提供的 mount-name 创建的。
    • conf-key 可以是 fs.azure.sas.<\your-container-name>.<\your-storage-account-name>.blob.core.chinacloudapi.cn
    • scope-name 是在上一部分创建的机密范围的名称。
    • key-name 是在 Key Vault 中为存储帐户密钥创建的机密的名称。

    Create blob storage mount in notebook

  6. 运行以下命令,将 Blob 存储容器中的文本文件读入数据帧。 请根据装入点名称和文件名更改命令中的值。

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

    Read file to dataframe

  7. 使用以下命令显示文件的内容。

    df.show()
    

    Show dataframe

  8. 若要卸载 Blob 存储,请运行以下命令:

    dbutils.fs.unmount("/mnt/<mount-name>")
    

    Unmount storage account

  9. 请注意,卸载装入点后,不再可以从 Blob 存储帐户读取数据。

    Unmount storage account error

清理资源

如果你不打算继续使用此应用程序,请按以下步骤删除整个资源组:

  1. 在 Azure 门户的左侧菜单中,选择“资源组”并导航到你的资源组。

  2. 选择“删除资源组”并键入该资源组的名称。 然后选择“删除”。

后续步骤

请继续学习下一篇教程,了解如何使用针对 Cosmos DB 启用的服务终结点实现 VNet 注入的 Databricks 环境。