为 Azure 托管磁盘配置 HSM 客户管理的密钥

计算平面中的 Azure Databricks 计算工作负荷将临时数据存储在 Azure 托管磁盘上。 默认情况下,将使用 Microsoft 托管的密钥通过服务器端加密对托管磁盘上存储的数据进行静态加密。 本文介绍如何从 Azure 密钥保管库 HSM 中为 Azure Databricks 工作区配置客户管理的密钥以用于托管磁盘加密。 有关使用 Azure 密钥保管库中的密钥的说明,请参阅使为 Azure 托管磁盘配置客户管理的密钥

重要

  • 托管磁盘存储的客户管理的密钥适用于数据磁盘,但不适用于操作系统 (OS) 磁盘。
  • 托管磁盘存储的客户管理的密钥并适用于无服务器计算资源,例如无服务器 SQL 仓库模型服务。 无服务器计算资源使用的磁盘生存期较短,与无服务器工作负载的生命周期相关。 停止或纵向缩减计算资源时,VM 及其存储将被销毁。

要求

步骤 1:创建 Azure Key Vault 托管 HSM 和 HSM 密钥

可以使用现有的 Azure Key Vault 托管 HSM,也可以按照托管 HSM 文档中的快速入门创建和激活新的 HSM。 请参阅快速入门:使用 Azure CLI 预配和激活托管 HSM。 Azure Key Vault 托管 HSM 必须启用清除保护

若要创建 HSM 密钥,请按照创建 HSM 密钥中的说明进行操作。

步骤 2:停止所有计算资源

终止工作区中的所有计算资源(群集、池和 SQL 仓库)。

步骤 3:创建或更新工作区

可以使用 Azure 门户、Azure CLI 或 Azure Powershell 为托管磁盘创建或更新具有客户管理的密钥的工作区。

使用 Azure 门户

本部分介绍如何通过 Azure 门户中的使用托管磁盘的客户管理的密钥创建或更新工作区。

  1. 开始创建或更新工作区:

    使用密钥创建新工作区:

    1. 转到 Azure 门户主页,然后单击页面左上角的“创建资源”。
    2. 在搜索栏中键入 Azure Databricks,然后单击“Azure Databricks”。
    3. 在“Azure Databricks”小组件中选择“创建”。
    4. 在“基本信息”和“网络”选项卡上的窗体字段中输入值。
    5. 在“加密”选项卡中,选中“托管磁盘”部分中的“使用自己的密钥”复选框。

    初次向现有工作区添加密钥:

    1. 转到 Azure 门户的 Azure Databricks 主页
    2. 导航到现有的 Azure Databricks 工作区。
    3. 在左侧面板中打开“加密”选项卡。
    4. 在“客户管理的密钥”部分下,启用“托管磁盘”。
  2. 设置加密字段。

    • 在“密钥标识符”字段中,粘贴托管 HSM 密钥的密钥标识符。
    • 在“订阅”下拉列表中,输入你的托管 HSM 密钥的订阅名称。
    • 若要启用密钥自动轮换,请启用“启用密钥自动轮换”。
  3. 填写剩余的选项卡,然后单击“查看 + 创建”(若要新建工作区)或“保存”(若要更新工作区)。

  4. 部署工作区后,导航到新的 Azure Databricks 工作区。

  5. 在 Azure Databricks 工作区的“概述”选项卡中,单击“托管资源组”。

  6. 在托管资源组的“概述”选项卡中,查找在此资源组中创建的“磁盘加密集”类型的对象。 复制磁盘加密集的名称。

使用 Azure CLI

对于新的和更新的工作区,请将以下参数添加到命令:

  • disk-key-name:托管 HSM 名称
  • disk-key-vault:托管 HSM URI
  • disk-key-version:托管 HSM 版本。 使用特定的密钥版本,而不是 latest
  • disk-key-auto-rotation:为密钥启用自动轮换(truefalse)。 这是一个可选字段。 默认为 false
  1. 创建或更新工作区:

    • 示例 - 使用以下托管磁盘参数创建工作区:

      az databricks workspace create --name <workspace-name> \
      --resource-group <resource-group-name> \
      --location <location> \
      --sku premium --disk-key-name <hsm-name> \
      --disk-key-vault <hsm-uri> \
      --disk-key-version <hsm-version> \
      --disk-key-auto-rotation <true-or-false>
      
    • 示例 - 使用以下托管磁盘参数更新工作区:

      az databricks workspace update \
      --name <workspace-name> \
      --resource-group <resource-group-name> \
      --disk-key-name <hsm-name> \
      --disk-key-vault <hsm-uri> \
      --disk-key-version <hsm-version> \
      --disk-key-auto-rotation <true-or-false>
      

    在上述任一命令的输出中存在一个 managedDiskIdentity 对象。 保存此对象中属性“principalId”的值。 在之后的步骤中,会将此值用作主体 ID。

使用 Powershell

对于新的和更新的工作区,请将以下参数添加到命令:

  • location:工作区位置
  • ManagedDiskKeyVaultPropertiesKeyName:托管 HSM 名称
  • ManagedDiskKeyVaultPropertiesKeyVaultUri:托管 HSM URI
  • ManagedDiskKeyVaultPropertiesKeyVersion:托管 HSM 版本。 使用特定的密钥版本,而不是 latest
  • ManagedDiskRotationToLatestKeyVersionEnabled:为密钥启用自动轮换(truefalse)。 这是一个可选字段。 默认值为 false。
  1. 创建或更新工作区:
    • 示例 - 使用以下托管磁盘参数创建工作区:

      $workspace = New-AzDatabricksWorkspace -Name <workspace-name> \
      -ResourceGroupName <resource-group-name> \
      -location <location> \
      -Sku premium \
      -ManagedDiskKeyVaultPropertiesKeyName <key-name> \
      -ManagedDiskKeyVaultPropertiesKeyVaultUri <hsm-uri> \
      -ManagedDiskKeyVaultPropertiesKeyVersion <key-version> -ManagedDiskRotationToLatestKeyVersionEnabled
      
    • 示例 - 使用以下托管磁盘参数更新工作区:

      $workspace = Update-AzDatabricksworkspace -Name <workspace-name> \
      -ResourceGroupName <resource-group-name> \
      -ManagedDiskKeyVaultPropertiesKeyName <key-name> \
      -ManagedDiskKeyVaultPropertiesKeyVaultUri <hsm-uri> \
      -ManagedDiskKeyVaultPropertiesKeyVersion <key-version> -ManagedDiskRotationToLatestKeyVersionEnabled
      

步骤 4:配置托管 HSM 角色分配

请为密钥保管库托管 HSM 配置角色分配,以便 Azure Databricks 工作区有权访问它。 可以使用 Azure 门户、Azure CLI 或 Powershell 配置角色分配。

使用 Azure 门户

  1. 在 Azure 门户中转到你的托管 HSM 资源。
  2. 在左侧菜单中的“设置”下,选择“本地 RBAC”。
  3. 单击“添加” 。
  4. 在“角色”字段中,选择“托管 HSM 加密服务加密用户”。
  5. 在“范围”字段中,选择 All keys (/)
  6. 在“安全主体”字段的搜索栏中,输入 Azure Databricks 工作区的受管理资源组中的磁盘加密集名称。 选择结果。
  7. 单击 “创建”

使用 Azure CLI

配置托管 HSM 角色分配。 将 <hsm-name> 替换为托管 HSM 名称,并将 <principal-id> 替换为上一步中 managedDiskIdentity 的 principalId ID。

az keyvault role assignment create --role "Managed HSM Crypto Service Encryption User"
    --scope "/" --hsm-name <hsm-name>
    --assignee-object-id <principal-id>

使用 Azure PowerShell

<hsm-name> 替换为托管 HSM 名称。

New-AzKeyVaultRoleAssignment -HsmName <hsm-name> \
-RoleDefinitionName "Managed HSM Crypto Service Encryption User" \
-ObjectId $workspace.ManagedDiskIdentityPrincipalId

步骤 5:启动先前已终止的计算资源

  1. 确保工作区更新已完成。 如果只是在模板中更改了密钥,则更新过程通常在 5 分钟内即可完成,否则可能需要更多时间。
  2. 手动启动先前已终止的所有计算资源。

如果任何计算资源无法成功启动,原因通常是需要为磁盘加密集授予密钥保管库访问权限。

稍后轮换密钥

在已有密钥的现有工作区上,有两种类型的密钥轮换:

  • 自动轮换:如果工作区的 rotationToLatestKeyVersionEnabled 设置为 true,则磁盘加密集将检测密钥版本更改并指向最新密钥版本。
  • 手动轮换:可以使用新密钥更新现有托管磁盘客户管理的密钥工作区。 按照上述说明进行操作,就像最初向现有工作区添加密钥一样。