Share via


Ativer chaves geridas pelo cliente para serviços geridos.

Nota

Este recurso requer o plano Premium.

Para um controlo adicional dos seus dados, pode adicionar a sua própria chave para proteger e controlar o acesso a alguns tipos de dados. O Azure Databricks tem vários recursos principais gerenciados pelo cliente. Para comparar os recursos relacionados, consulte Chaves gerenciadas pelo cliente para criptografia.

Gorjeta

Este artigo descreve como configurar sua própria chave dos cofres do Cofre de Chaves do Azure para serviços gerenciados. Para obter instruções sobre como usar uma chave do HSM gerenciado do Azure Key Vault, consulte Habilitar chaves gerenciadas pelo cliente do HSM para serviços gerenciados.

Os dados de serviços gerenciados no plano de controle do Azure Databricks são criptografados em repouso. Você pode adicionar uma chave gerenciada pelo cliente para serviços gerenciados para ajudar a proteger e controlar o acesso aos seguintes tipos de dados criptografados:

Depois de adicionar uma criptografia de chave gerenciada pelo cliente para um espaço de trabalho, o Azure Databricks usa sua chave para controlar o acesso à chave que criptografa operações de gravação futuras nos dados de serviços gerenciados do seu espaço de trabalho. Os dados existentes não são criptografados novamente. A chave de criptografia de dados é armazenada em cache na memória para várias operações de leitura e gravação e removida da memória em um intervalo regular. Novas solicitações para esses dados exigem outra solicitação para o sistema de gerenciamento de chaves do seu serviço de nuvem. Se você excluir ou revogar sua chave, a leitura ou gravação nos dados protegidos falhará no final do intervalo de tempo do cache.

Você pode girar (atualizar) a chave gerenciada pelo cliente posteriormente. Consulte Rodar a chave mais tarde.

Esse recurso não criptografa dados armazenados fora do plano de controle. Para outros recursos de chave gerenciados pelo cliente, consulte Chaves gerenciadas pelo cliente para criptografia

Requisitos

Etapa 1: configurar um cofre de chaves

Você deve criar uma instância do Azure Key Vault e definir suas permissões. Você pode fazer isso por meio do portal do Azure, CLI ou APIs.

Importante

O Cofre da Chave deve estar no mesmo locatário do Azure que seu espaço de trabalho do Azure Databricks.

Estas instruções oferecem detalhes sobre várias opções de implantação:

Usar o portal do Azure

  1. Crie ou selecione um Cofre de Chaves:
    • Para criar um Cofre da Chave, vá para a página do portal do Azure para criar um Cofre da Chave. Clique em + Criar. Insira o nome do grupo de recursos, o nome do Cofre da Chave, a região e o nível de preço. Clique em Rever + criar e, em seguida, clique em Criar.
    • Para usar um Cofre da Chave existente, copie o nome do Cofre da Chave para a próxima etapa.
  2. Obtenha a ID do objeto do aplicativo AzureDatabricks :
    1. No portal do Azure, aceda a Microsoft Entra ID.
    2. Selecione Aplicações Empresariais no menu lateral.
    3. Procure AzureDatabricks e clique no Aplicativo Empresarial nos resultados.
    4. Em Propriedades, copie o ID do objeto.
  3. Adicione uma política de acesso ao Cofre da Chave usando o portal do Azure:
    1. Navegue até o Cofre da Chave do Azure que você usará para configurar chaves gerenciadas pelo cliente para serviços gerenciados para seu espaço de trabalho.

    2. Clique na guia Políticas de acesso no painel esquerdo.

    3. Selecione o botão Criar localizado na parte superior da página.

    4. Na secção Permissões de chaves do separador Permissões, ative Obter, Anular o Encapsulamento da Chave num Wrapper e Encapsular a Chave num Wrapper.

    5. Clique em Next.

    6. Na guia Principal, digite AzureDatabricks e role até o primeiro resultado do Aplicativo Empresarial que tenha uma ID do Aplicativo e 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d selecione-o.

      Selecione o aplicativo AzureDatabricks com ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d

    7. Continue para a guia Revisar + criar e clique em b.

Usar a CLI do Azure

Use a CLI do Azure para concluir as instruções a seguir.

  1. Crie um Cofre de Chaves ou selecione um Cofre de Chaves existente:

    • Para criar um Cofre da Chave, use o seguinte comando da CLI do Azure e substitua os itens entre colchetes pela sua região, nome do Cofre da Chave, nome do grupo de recursos e local:

      az keyvault create --location <region> \
                         --name <key-vault-name> \
                         --resource-group <resource-group-name> \
                         --location <location> \
                         --enable-purge-protection
      
    • Para usar um Cofre da Chave existente, copie o nome do Cofre da Chave para a próxima etapa.

  2. Obtenha a ID do objeto do aplicativo AzureDatabricks com a CLI do Azure.

    az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \
                  --query "id" \
                  --output tsv
    
  3. Confirme se você está usando a assinatura correta do Azure:

    az account set --subscription {subscription_id}
    

Usar o Azure Powershell

Você pode criar um novo Cofre da Chave ou usar um existente.

Criar um Key Vault:

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

Use um Cofre de Chaves existente:

$keyVault = Get-AzKeyVault -VaultName <key-vault-name>

Passo 2: Preparar uma chave

Você pode criar uma chave ou usar uma chave existente. Use qualquer ferramenta que preferir usar: portal do Azure, CLI do Azure ou outras ferramentas.

Utilizar a CLI do Azure

Crie uma chave no Cofre da Chave. O KeyType deve ser RSA.

Para criar a chave na CLI, execute este comando:

az keyvault key create --name <key-name> \
                       --vault-name <key-vault-name> \
                       --protection software

Anote os seguintes valores, que você pode obter do ID da chave na kid propriedade na resposta. Você os usará nas etapas subsequentes:

  • URL do Cofre da Chave: a parte inicial do ID da chave que inclui o nome do Cofre da Chave. Tem a forma https://<key-vault-name>.vault.azure.net.
  • Nome da chave: Nome da sua chave.
  • Versão da chave: Versão da chave.

O ID de chave completo geralmente tem o formulário https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>. As chaves do Azure Key Vault que estão em uma nuvem não pública têm uma forma diferente.

Para usar uma chave existente em vez de criar uma, obtenha e copie esses valores para sua chave para que você possa usá-los nas próximas etapas. Verifique se a chave existente está ativada antes de continuar.

Utilizar o Azure Powershell

  1. Se você planeja criar uma chave, talvez seja necessário definir a política de acesso, dependendo de como e quando você a criou. Por exemplo, se você criou recentemente o Cofre da Chave usando o PowerShell, o novo Cofre da Chave pode não ter a política de acesso necessária para criar uma chave. O exemplo a seguir usa o EmailAddress parâmetro para definir a política. Para obter detalhes relacionados, consulte o artigo da Microsoft sobre Set-AzKeyVaultAccessPolicy.

    Defina a política de acesso em um novo Cofre de Chaves:

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. Você pode criar uma chave ou recuperar uma chave existente:

    • Crie uma chave:

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Recupere uma chave existente:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  3. Adicione uma política de acesso com permissões ao Cofre da Chave:

    $managedService = Get-AzureADServicePrincipal \
    -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"
    
    Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
    -ObjectId $managedService.ObjectId \
    -PermissionsToKeys wrapkey,unwrapkey,get
    

Etapa 3: adicionar uma chave a um espaço de trabalho

Você pode implantar um novo espaço de trabalho com uma chave gerenciada pelo cliente para serviços gerenciados ou adicionar uma chave a um espaço de trabalho existente. Você pode fazer as duas coisas com a CLI do Azure, Powershell, modelos ARM, portal do Azure ou outras ferramentas. Esta seção inclui detalhes para várias opções de implantação:

Usar o portal do Azure sem modelo

  1. Vá para a página inicial do Portal do Azure.

  2. Clique em Criar um recurso no canto superior esquerdo da página.

  3. Na barra de pesquisa, digite Azure Databricks e clique na opção Azure Databricks .

  4. Clique em Criar no widget Azure Databricks.

  5. Insira valores para os campos de entrada nas guias Noções básicas e Rede .

  6. Depois de chegar à guia Criptografia :

    • Para criar um espaço de trabalho, habilite Usar sua própria chave na seção Serviços gerenciados.
    • Para atualizar um espaço de trabalho, habilite os Serviços Gerenciados.
  7. Defina os campos de criptografia.

    Mostrar campos na seção Managed Disks da folha Azure Databricks

    • No campo Identificador de Chave, cole o Identificador de Chave da sua chave do Cofre da Chave do Azure.
    • No menu pendente Subscrição, introduza o nome da subscrição da sua chave do Cofre da Chave do Azure.
  8. Preencha as guias restantes e clique em Revisar + Criar (para novo espaço de trabalho) ou Salvar (para atualizar um espaço de trabalho).

Importante

Se você girar a chave, você deve manter a chave antiga disponível por 24 horas.

Usar a CLI do Azure sem modelo

  1. Adicione uma política de acesso ao Cofre da Chave com o seguinte comando. Substitua <key-vault-name> pelo nome do cofre que você usou na etapa anterior e substitua <object-id> pelo ID do objeto do AzureDatabricks aplicativo.

    az keyvault set-policy -n <key-vault-name> \
                           --key-permissions get wrapKey unwrapKey  \
                           --object-id <object-id>
    
  2. Criar ou atualizar um espaço de trabalho:

    Para criação e atualização, adicione estes campos ao comando:

    • managed-services-key-name: Nome da chave
    • managed-services-key-vault: URI do cofre da chave
    • managed-services-key-version: Versão chave

    Exemplo de criação de um espaço de trabalho usando estes campos:

    az databricks workspace create --name <workspace-name> \
    --resource-group <resource-group-name> \
    --location <location> \
    --sku premium \
    --managed-services-key-name <key-name> \
    --managed-services-key-vault <key-vault-uri> \
    --managed-services-key-version <key-version>
    

    Exemplo de atualização de um espaço de trabalho usando estes campos:

    az databricks workspace update --name <workspace-name> \
    --resource-group <resource-group-name> \
    --managed-services-key-name <key-name> \
    --managed-services-key-vault <key-vault-uri> \
    --managed-services-key-version <key-version>
    

Importante

Se você girar a chave, você deve manter a chave antiga disponível por 24 horas.

Usar o Powershell sem modelo

Para criar ou atualizar um espaço de trabalho, adicione os seguintes parâmetros ao comando da sua nova chave:

  • ManagedServicesKeyVaultPropertiesKeyName: Nome da chave
  • ManagedServicesKeyVaultPropertiesKeyVaultUri: URI de chave
  • ManagedServicesKeyVaultPropertiesKeyVersion: Versão chave

Exemplo de criação de espaço de trabalho com estes campos:

New-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-location $keyVault.Location \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version

Exemplo de atualização do espaço de trabalho com estes campos:

Update-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version

Importante

Se você girar a chave, você deve manter a chave antiga disponível por 24 horas.

Aplicar alterações com um modelo ARM

O modelo ARM a seguir cria um novo espaço de trabalho com uma chave gerenciada pelo cliente, usando a versão 2023-02-01 da API para o recurso Microsoft.Databricks/workspaces. Salve este texto localmente em um arquivo chamado databricks-cmk-template.json.

Este modelo de exemplo não inclui todos os recursos possíveis do Azure Databricks, como fornecer sua própria VNet na qual implantar o espaço de trabalho.

Importante

Se você já usa um modelo, mescle os parâmetros, recursos e saídas extras desse modelo em seu modelo existente.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "string",
      "metadata": {
        "description": "The name of the Azure Databricks workspace to create."
      }
    },
    "pricingTier": {
      "type": "string",
      "defaultValue": "premium",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The pricing tier of workspace."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "apiVersion": {
      "type": "string",
      "defaultValue": "2023-02-01",
      "allowedValues":[
        "2023-02-01",
        "2021-04-01-preview"
      ],
      "metadata": {
        "description": "The api version to create the workspace resources"
      }
    },
    "keyvaultUri": {
      "type": "string",
      "metadata": {
        "description": "The Key Vault URI for customer-managed key for managed services"
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The key name used for customer-managed key for managed services"
      }
    },
    "keyVersion": {
      "type": "string",
      "metadata": {
        "description": "The key version used for customer-managed key for managed services"
      }
    }
  },
  "variables": {
    "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Databricks/workspaces",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "apiVersion": "[parameters('apiVersion')]",
      "sku": {
        "name": "[parameters('pricingTier')]"
      },
      "properties": {
        "ManagedResourceGroupId": "[concat(subscription().id, '/resourceGroups/', variables('managedResourceGroupName'))]",
        "encryption": {
          "entities": {
             "managedServices": {
                "keySource": "Microsoft.Keyvault",
                "keyVaultProperties": {
                   "keyVaultUri": "[parameters('keyvaultUri')]",
                   "keyName": "[parameters('keyName')]",
                   "keyVersion": "[parameters('keyVersion')]"
                }
             }
          }
        }
      }
    }
  ],
  "outputs": {
    "workspace": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]"
    }
  }
}

Se você já usa outro modelo, pode mesclar os parâmetros, recursos e saídas desse modelo em seu modelo existente.

Para usar esse modelo para criar ou atualizar um espaço de trabalho, escolha uma destas opções de implantação:

Aplicar um modelo com a CLI do Azure

Para criar um novo espaço de trabalho com a CLI do Azure, execute o seguinte comando:

az deployment group create --resource-group <resource-group-name>  \
                           --template-file <file-name>.json \
                           --parameters workspaceName=<new-workspace-name> \
                           keyvaultUri=<keyvaultUrl> \
                           keyName=<keyName> keyVersion=<keyVersion>

Para atualizar um espaço de trabalho existente para usar um espaço de trabalho de chave gerenciado pelo cliente (ou para girar a chave existente) usando a CLI do Azure:

  1. Se o modelo ARM que implantou o espaço de trabalho nunca adicionou chaves gerenciadas pelo cliente, adicione a resources.properties.encryption seção e seus parâmetros relacionados. Consulte o modelo anteriormente neste artigo.

    1. Adicione a resources.properties.encryption seção do modelo.
    2. parameters Na seção, adicione três novos parâmetros keyvaultUri, keyNamee keyVersion a partir do modelo.
  2. Execute o mesmo comando que para criar um novo espaço de trabalho. Desde que o nome do grupo de recursos e o nome do espaço de trabalho sejam idênticos ao espaço de trabalho existente, este comando atualiza o espaço de trabalho existente em vez de criar um novo espaço de trabalho.

    az deployment group create --resource-group <existing-resource-group-name>  \
                               --template-file <file-name>.json \
                               --parameters workspaceName=<existing-workspace-name> \
                               keyvaultUri=<keyvaultUrl> \
                               keyName=<keyName> keyVersion=<keyVersion>
    

    Além das alterações nos parâmetros relacionados à chave, use os mesmos parâmetros que foram usados para criar o espaço de trabalho.

    Importante

    Se você girar a chave, você deve manter a chave antiga disponível por 24 horas.

Aplicar um modelo com o portal do Azure

Para usar o modelo no portal do Azure para criar ou atualizar um espaço de trabalho:

  1. Vá para a página Implantação personalizada.

  2. Clique em Criar seu próprio modelo no editor.

  3. Cole no JSON.

  4. Clique em Guardar.

  5. Preencha os parâmetros.

    Para atualizar um espaço de trabalho existente, use os mesmos parâmetros que você usou para criar o espaço de trabalho. Para adicionar uma chave pela primeira vez, adicione os três parâmetros relacionados à chave. Para girar a chave, altere alguns ou todos os parâmetros relacionados à chave. Verifique se o nome do grupo de recursos e o nome do espaço de trabalho são idênticos ao espaço de trabalho existente. Se forem iguais, este comando atualiza o espaço de trabalho existente em vez de criar um novo espaço de trabalho.

    Além das alterações nos parâmetros relacionados à chave, use os mesmos parâmetros que foram usados para criar o espaço de trabalho.

  6. Clique em Rever + Criar.

  7. Se não houver problemas de validação, clique em Criar.

    Importante

    Se você girar a chave, você deve manter a chave antiga disponível por 24 horas.

Para obter mais detalhes, consulte o artigo do Azure Guia de início rápido: criar e implantar modelos ARM usando o portal do Azure.

Etapa 4 (opcional): Reimportar blocos de anotações

Depois de adicionar inicialmente uma chave para serviços gerenciados para um espaço de trabalho existente, somente operações de gravação futuras usarão sua chave. Os dados existentes não são criptografados novamente.

Pode exportar todos os blocos de notas e, em seguida, voltar a importá-los para que a chave que encripta os dados seja protegida e controlada pela sua chave. Você pode usar as APIs de espaço de trabalho de exportação e importação.

Rodar a chave mais tarde

Se você já estiver usando uma chave gerenciada pelo cliente para serviços gerenciados, poderá atualizar o espaço de trabalho com uma nova versão de chave ou uma chave totalmente nova. Isso é chamado de rotação de chaves.

  1. Crie uma nova chave ou gire a chave existente no Cofre da Chave. Consulte Passo 1: Configurar um Key Vault.

    Verifique se a nova chave tem as permissões adequadas.

  2. Confirme se o modelo tem a versão correta da API. Deve ser igual ou superior 2021-04-01-previewa .

  3. Atualize o espaço de trabalho com sua nova chave usando o portal, CLI ou PowerShell. Consulte Etapa 3: Adicionar uma chave a um espaço de trabalho e siga as instruções para atualização do espaço de trabalho. Certifique-se de usar os mesmos valores para o nome do grupo de recursos e o nome do espaço de trabalho para que ele atualize o espaço de trabalho existente, em vez de criar um novo espaço de trabalho. Além das alterações nos parâmetros relacionados à chave, use os mesmos parâmetros que foram usados para criar o espaço de trabalho.

    Importante

    Se você girar a chave, você deve manter a chave antiga disponível por 24 horas.

  4. Opcionalmente, exporte e reimporte blocos de notas existentes para garantir que todos os blocos de notas existentes utilizam a sua nova chave.

Resolução de Problemas

Eliminação acidental de uma chave

Se você excluir sua chave no Cofre de Chaves do Azure, o logon do espaço de trabalho começará a falhar e nenhum bloco de anotações poderá ser lido pelo Azure Databricks. Para evitar isso, recomendamos que você habilite as exclusões suaves. Se uma chave for eliminada, esta opção garante que pode ser recuperada num período de 30 dias. Se a eliminação recuperável estiver ativada, só tem de reativar a chave para resolver o problema.

Falha na atualização da chave devido às permissões do Key Vault

Se tiver problemas em criar a sua área de trabalho, verifique se o Key Vault tem as permissões corretas. O erro que é devolvido pelo Azure pode não indicar corretamente isto como a causa raiz. Além disso, as permissões necessárias são get, wrapKeye unwrapKey. Consulte Passo 1: Configurar um Key Vault.

As chaves perdidas são irrecuperáveis

Se perder a chave e não conseguir recuperá-la, todos os dados do bloco de notas encriptados pela chave serão irrecuperáveis.