使用 PowerShell 为 DBFS 配置客户管理的密钥

注意

此功能仅在高级计划中提供。

可以使用 PowerShell 配置自己的加密密钥以加密 DBFS 根存储帐户。 本文介绍如何通过 Azure Key Vault 保管库配置你自己的密钥。

要详细了解用于 DBFS 的客户管理的密钥,请参阅为 DBFS 根配置客户管理的密钥

安装 Azure Databricks PowerShell 模块

  1. 安装 Azure PowerShell
  2. 安装 Azure Databricks PowerShell 模块

准备新的或现有的用于加密的 Azure Databricks 工作区

请将括号中的占位符值替换为你自己的值。 <workspace-name> 是 Azure 门户中显示的资源名称。

在创建工作区时准备加密:

$workSpace = New-AzDatabricksWorkspace -Name <workspace-name> -Location <workspace-location> -ResourceGroupName <resource-group> -Sku premium -PrepareEncryption

准备用于加密的现有工作区:

$workSpace = Update-AzDatabricksWorkspace -Name <workspace-name> -ResourceGroupName <resource-group> -PrepareEncryption

有关 Azure Databricks 工作区的 PowerShell cmdlet 的详细信息,请参阅 Az.Databricks 参考

创建新的密钥保管库

使用 Azure Key Vault 为默认的(根)DBFS 存储客户管理的密钥时,Azure Key Vault 必须已启用两项密钥保护设置:“软删除”和“清除保护”。

重要

Key Vault 必须与你的 Azure Databricks 工作区位于同一 Azure 租户中。

Az.KeyVault 模块的版本 2.0.0 及更高版本中,当创建新 Key Vault 时,默认会启用软删除。

以下示例在启用了“软删除”和“清除保护”属性的情况下创建新 Key Vault。 请将括号中的占位符值替换为你自己的值。

$keyVault = New-AzKeyVault -Name <key-vault> `
     -ResourceGroupName <resource-group> `
     -Location <location> `
     -EnablePurgeProtection

若要了解如何使用 PowerShell 在现有密钥保管库上启用“软删除”和“清除保护”,请参阅如何在 PowerShell 中使用 Key Vault 软删除中的“启用软删除”和“启用清除保护”。

配置 Key Vault 访问策略

使用 Set-AzKeyVaultAccessPolicy 设置 Key Vault 的访问策略,以便 Azure Databricks 工作区有权访问它。

Set-AzKeyVaultAccessPolicy `
      -VaultName $keyVault.VaultName `
      -ObjectId $workspace.StorageAccountIdentity.PrincipalId `
      -PermissionsToKeys wrapkey,unwrapkey,get

新建密钥

使用 Add-AzKeyVaultKey cmdlet 在 Key Vault 中创建新密钥。 请将括号中的占位符值替换为你自己的值。

$key = Add-AzKeyVaultKey -VaultName $keyVault.VaultName -Name <key> -Destination 'Software'

DBFS 根存储支持 2048、3072 和 4096 大小的 RSA 密钥。 有关密钥的详细信息,请参阅关于 Key Vault 密钥

使用客户管理的密钥配置 DBFS 加密

将 Azure Databricks 工作区配置为使用在 Azure Key Vault 中创建的密钥。 请将括号中的占位符值替换为你自己的值。

Update-AzDatabricksWorkspace -ResourceGroupName <resource-group> `
      -Name <workspace-name>
     -EncryptionKeySource Microsoft.Keyvault `
     -EncryptionKeyName $key.Name `
     -EncryptionKeyVersion $key.Version `
     -EncryptionKeyVaultUri $keyVault.VaultUri

禁用客户托管密钥

在你禁用客户管理的密钥时,会再次使用 Azure 管理的密钥来加密你的存储帐户。

请将括号中的占位符值替换为你自己的值,并使用在前面步骤中定义的变量。

Update-AzDatabricksWorkspace -Name <workspace-name> -ResourceGroupName <resource-group> -EncryptionKeySource Default