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

注意

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

可以使用 PowerShell 配置自己的加密密钥以加密工作区存储帐户。 本文介绍如何通过 Azure Key Vault 保管库配置你自己的密钥。 有关使用 Azure Key Vault 托管 HSM 中的密钥的说明,请参阅使用 PowerShell 为 DBFS 配置 HSM 客户管理的密钥

要详细了解用于 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 必须已启用两项密钥保护设置:“软删除”和“清除保护”。

重要

密钥保管库必须与 Azure Databricks 工作区位于同一 Azure 租户中。

在模块版本 2.0.0 及更高 Az.KeyVault 版本中,创建新密钥保管库时,默认启用软删除。

以下示例创建启用了软删除和清除保护属性的新密钥保管库。 请将括号中的占位符值替换为你自己的值。

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

若要了解如何使用 PowerShell 在现有密钥保管库上启用软删除和清除保护,请参阅 使用软删除和清除保护进行 Azure Key Vault 恢复管理

授予工作区存储帐户对密钥保管库的访问权限

向密钥保管库上的工作区存储帐户标识授予密钥保管库加密服务加密用户角色:

New-AzKeyVaultRoleAssignment -RoleDefinitionName "Key Vault Crypto Service Encryption User" -ObjectId $workspace.StorageAccountIdentity.PrincipalId

注意

如果密钥保管库使用访问策略而不是 RBAC,请使用以下命令:

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

新建密钥

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

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

DBFS 根存储支持 2048、3072 和 4096 大小的 RSA 和 RSA-HSM 密钥。 有关密钥的详细信息,请参阅关于 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