Ativar chaves geridas pelo cliente para serviços geridos

Importante

Esta funcionalidade está em Pré-visualização Pública.

Um espaço de trabalho Azure Databricks é composto por um plano de controlo que está hospedado numa subscrição gerida pelo Azure Databricks e um plano de dados que é implantado na sua assinatura Azure. O avião de controlo armazena os dados dos seus serviços geridos, que inclui comandos de cadernos, segredos, consultas SQL databricks e histórico de consultas de databricks SQL. Em algumas configurações, os resultados parciais do portátil também são armazenados no plano de controlo, com o restante armazenado no seu armazenamento Azure Blob na sua subscrição Azure num grupo de recursos gerido.

Por padrão, os dados de serviços geridos no plano de controlo são encriptados em repouso com uma chave gerida por Databricks.

Se os seus requisitos de segurança e conformidade indicarem que deve possuir e gerir a chave que encripta estes dados, use as instruções deste artigo para fornecer a sua própria chave Azure Key Vault que é usada para embrulhar uma chave de encriptação de dados única no espaço de trabalho. A chave de encriptação resultante encripta os dados de serviços geridos do espaço de trabalho no plano de controlo Azure Databricks.

Tem de ativar esta funcionalidade no momento em que criar o seu espaço de trabalho.

Quando um portátil é acedido ou escrito, a chave de encriptação de dados Azure Databricks correspondente é desembrulhada usando a sua chave enviando um pedido para o cofre de chaves.

Uma vez que a ida de ida e volta ao cofre-chave para cada leitura e escrita impacta significativamente o desempenho, a chave de encriptação desembrulhada é colocada na memória para várias operações de leitura e escrita e despejada da memória num intervalo regular, de modo a que novas leituras e escritas exijam um pedido para o seu cofre chave. Se eliminar ou revogar a chave no cofre da chave, todas as operações de leitura e escrita nos seus cadernos falharão após o termo do intervalo.

Requisitos

Esta funcionalidade requer o Plano Premium Azure Databricks.

Limitações

Não é possível alterar (rodar) uma chave de encriptação gerida pelo cliente para serviços geridos após a criação do espaço de trabalho.

Passo 1: Ativar chaves geridas pelo cliente para serviços geridos

A versão Azure API para Azure Databricks que inclui a capacidade de autosserviço para chaves geridas pelo cliente está em pré-visualização, pelo que deve registar a funcionalidade antes de a utilizar para uma subscrição.

Para registar chaves geridas pelo cliente para serviços geridos na sua subscrição, pode utilizar o portal Azure CLI ou Powershell. Os subtópicos que se seguem explicam como utilizar o portal Azure ou o Azure CLI. Pode adaptar a versão CLI para Powershell.

Utilize o portal Azure para ativar a funcionalidade

  1. No portal Azure, aceda à subscrição do Azure para a sua implementação de Azure Databricks.

  2. Na navegação à esquerda, clique nas funcionalidades de Pré-visualização.

    Botão de funcionalidades de pré-visualização

  3. Procurar EnableAPIVersion20210401Preview.

  4. Selecione a caixa de verificação ao lado de um resultado e clique no botão Registar.

    Registar o botão de funcionalidades

Utilize o Azure CLI para ativar a funcionalidade

  1. Desaponte a subscrição do seu alvo:

    az account set --subscription <subscription id>
    
  2. Registe a funcionalidade com estes dois comandos:

    az feature register --namespace Microsoft.Databricks \
    --name EnableAPIVersion20210401Preview
    
    az provider register -n Microsoft.Databricks
    

Passo 2: Criar um cofre-chave ou usar um existente

Tem de criar uma instância Azure Key Vault e definir as suas permissões. Pode fazê-lo através do portal Azure, mas as seguintes instruções utilizam o Azure CLI.

  1. Crie um cofre de chaves ou selecione um cofre de chaves existente

    • Para criar um cofre chave, substitua os itens em suportes com a sua região, nome do cofre e nome do grupo de recursos:

      az keyvault create --location <region> \
      --name <key-vault-name> --resource-group <resource-group-name>
      
    • Para usar um cofre de chaves existente, copie o nome do cofre para o próximo passo.

  2. Desemboe as permissões necessárias para o cofre da chave. <key-vault-name>Substitua-o pelo nome do cofre que usou no degrau anterior. O ID do objeto neste comando representa Azure Databricks.

    az keyvault set-policy -n <key-vault-name> \
    --key-permissions get wrapKey unwrapKey  \
    --object-id 5b4392d6-86a0-4ea1-ad94-dc9830e378e0
    

Passo 3: Criar uma nova chave ou usar uma chave existente

Cria uma chave debaixo do cofre da chave. O KeyType deve ser RSA, mas o tamanho da chave RSA e o HSM não importam. O KeyVault deve estar no mesmo inquilino Azure que o seu espaço de trabalho Azure Databricks. Utilize qualquer ferramenta que prefira utilizar: Portal Azure, CLI Azure ou outras ferramentas.

Para criar a chave no CLI, executar este comando:

az keyvault key create --name <key name> --vault-name <key vault name>

Tome nota dos seguintes valores, que pode obter a partir do ID chave na kid propriedade na resposta. Irá usá-las nos passos seguintes:

  • URL do cofre chave: A parte inicial do ID da chave que inclui o nome do cofre chave. Tem o https://<key-vault-name>.vault.azure.net formulário.
  • Nome chave: Nome da sua chave.
  • Versão chave: Versão da chave.

O ID da chave completa tem o <key-vault-URL>/keys/<key-name>/<key-version> formulário.

Se em vez disso utilizar uma chave existente, obtenha e copie estes valores para a sua chave para que possa usá-los nos próximos passos. Verifique se a sua chave existente está ativada antes de prosseguir.

Passo 4: Implementar um espaço de trabalho com a sua chave

Pode implantar um novo espaço de trabalho com chave gerida pelo cliente para serviços geridos utilizando modelos ARM. Utilize o portal Azure, O CLI Azure ou qualquer outra ferramenta que prefira.

O modelo ARM a seguir cria um novo espaço de trabalho com uma chave gerida pelo cliente, utilizando a versão API de pré-visualização para obter recursos Microsoft.Databricks/workspaces . Guarde este texto localmente para um ficheiro chamado databricks-cmk-template.json .

Nota

Este modelo de exemplo não inclui todas as funcionalidades possíveis, tais como fornecer o seu próprio VNet, que é uma funcionalidade chamada Deploy Azure Databricks na sua rede virtual Azure (injeção VNet). Se já utilizar outro modelo, pode fundir-se nos parâmetros, recursos e saídas deste modelo no 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": "2021-04-01-preview",
      "allowedValues":[
        "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')))]"
    }
  }
}

Para utilizar este modelo para criar um espaço de trabalho, tem várias opções dependendo da sua ferramenta.

Criar um espaço de trabalho utilizando o Azure CLI

Para criar um espaço de trabalho com comandos Azure CLI:

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>

Criar um espaço de trabalho utilizando o portal Azure

Para utilizar o modelo no portal Azure para criar um espaço de trabalho, consulte o artigo Azure Quickstart: Criar e implementar modelos ARM utilizando o portal Azure

Resolução de problemas e boas práticas

Supressão acidental de uma chave

Se eliminar a sua chave no Cofre da Chave Azure, o login do espaço de trabalho começará a falhar e nenhum caderno será legível pela Azure Databricks. Para evitar isto, recomendamos que ative as eliminações suaves. Esta opção garante que, se uma chave for eliminada, pode ser recuperada num período de 30 dias. Se a eliminação suave estiver ativada, pode simplesmente voltar a ativar a chave para resolver o problema.

As chaves perdidas são irrecuperáveis.

Se perder a chave e não conseguir recuperar, todos os dados do caderno encriptados pela chave são irrecuperáveis.

Falha na atualização das chaves devido às permissões do cofre

Se tiver problemas em criar o seu espaço de trabalho, verifique se o cofre da chave tem permissões corretas. O erro que é devolvido do Azure pode não indicar corretamente esta como a causa principal. Além disso, as permissões necessárias são get wrapKey , e unwrapKey . Ver Passo 2: Criar um cofre-chave ou utilizar um existente.