Habilitación de claves administradas por el cliente para servicios administrados

Importante

Esta característica está en versión preliminar pública.

Un Azure Databricks de trabajo consta de un plano de control hospedado en una suscripción administrada por Azure Databricks y un plano de datos que se implementa en la suscripción de Azure. El plano de control almacena los datos de los servicios administrados, que incluyen comandos de cuaderno, secretos, consultas SQL de Databricks e historial de consultas SQL de Databricks. En algunas configuraciones, los resultados parciales del cuaderno también se almacenan en el plano de control, mientras que el resto se almacena en Azure Blob Storage en la suscripción de Azure en un grupo de recursos administrado.

De forma predeterminada, los datos de los servicios administrados en el plano de control se cifran en reposo con una clave administrada por Databricks.

Si los requisitos de seguridad y cumplimiento indican que debe poseer y administrar la clave que cifra estos datos, siga las instrucciones de este artículo para proporcionar su propia clave de Azure Key Vault que se usa para encapsular una clave de cifrado de datos que sea única para el área de trabajo. La clave de cifrado resultante cifra los datos de los servicios administrados del área de trabajo en Azure Databricks plano de control.

Debe habilitar esta característica en el momento de crear el área de trabajo.

Cuando se accede a un cuaderno o se escribe en él, la clave de cifrado de datos Azure Databricks correspondiente se desencapsula mediante la clave mediante el envío de una solicitud al almacén de claves.

Dado que el recorrido de ida y vuelta al almacén de claves para cada lectura y escritura afecta significativamente al rendimiento, la clave de cifrado desencapsulada se almacena en caché en memoria para varias operaciones de lectura y escritura y se expulsa de la memoria a intervalos regulares, de modo que las nuevas lecturas y escrituras requieren una solicitud al almacén de claves. Si elimina o revoca la clave en el almacén de claves, todas las operaciones de lectura y escritura de los cuadernos producirán un error después de que expire el intervalo.

Requisitos

Esta característica requiere el Azure Databricks Plan Premium.

Limitaciones

No puede cambiar (rotar) una clave de cifrado administrada por el cliente para los servicios administrados después de crear el área de trabajo.

Paso 1: Habilitación de claves administradas por el cliente para servicios administrados

La versión de api de Azure para Azure Databricks que incluye la funcionalidad de autoservicio para las claves administradas por el cliente está en versión preliminar, por lo que debe registrar la característica antes de usarla para una suscripción.

Para registrar claves administradas por el cliente para servicios administrados en su suscripción, puede usar el Azure Portal, CLI de Azure o PowerShell. En los siguientes temas secundarios se explica cómo usar Azure Portal o CLI de Azure. Puede adaptar la versión de la CLI para PowerShell.

Uso Azure Portal para habilitar la característica

  1. En la Azure Portal, vaya a la suscripción de Azure para la Azure Databricks implementación.

  2. En el panel de navegación izquierdo, haga clic en Características de vista previa.

    Botón De características de vista previa

  3. Busque EnableAPIVersion20210401Preview.

  4. Active la casilla situada junto al único resultado y haga clic en el botón Registrar.

    Botón Registrar características

Uso CLI de Azure para habilitar la característica

  1. Establezca la suscripción de destino:

    az account set --subscription <subscription id>
    
  2. Registre la característica con estos dos comandos:

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

Paso 2: Creación de un almacén de claves o uso de uno existente

Debe crear una instancia Azure Key Vault y establecer sus permisos. Puede hacerlo a través de la Azure Portal, pero las instrucciones siguientes usan el CLI de Azure.

  1. Creación de un almacén de claves o selección de un almacén de claves existente

    • Para crear un almacén de claves, reemplace los elementos entre corchetes por la región, el nombre del almacén de claves y el nombre del grupo de recursos:

      az keyvault create --location <region> \
      --name <key-vault-name> --resource-group <resource-group-name>
      
    • Para usar un almacén de claves existente, copie el nombre del almacén de claves para el paso siguiente.

  2. Establezca los permisos necesarios para el almacén de claves. Reemplace <key-vault-name> por el nombre del almacén que usó en el paso anterior. El identificador de objeto de este comando representa Azure Databricks.

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

Paso 3: Creación de una clave nueva o uso de una clave existente

Cree una clave en el almacén de claves. KeyType debe ser RSA, pero el tamaño de clave RSA y el HSM no importan. KeyVault debe estar en el mismo inquilino de Azure que el Azure Databricks de trabajo. Use las herramientas que prefiera usar: Azure Portal, CLI de Azure u otras herramientas.

Para crear la clave en la CLI, ejecute este comando:

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

Anote los siguientes valores, que puede obtener del identificador de clave de la kid propiedad en la respuesta. Los usará en pasos posteriores:

  • Dirección URL del almacén de claves: la parte inicial del identificador de clave que incluye el nombre del almacén de claves. Tiene el formato https://<key-vault-name>.vault.azure.net .
  • Nombre de clave: nombre de la clave.
  • Versión de la clave: versión de la clave.

El identificador de clave completo tiene el formato <key-vault-URL>/keys/<key-name>/<key-version> .

Si en su lugar usa una clave existente, obtenga y copie estos valores para la clave para poder usarlos en los pasos siguientes. Compruebe que la clave existente está habilitada antes de continuar.

Paso 4: Implementación de un área de trabajo con la clave

Puede implementar una nueva área de trabajo con clave administrada por el cliente para servicios administrados mediante plantillas de ARM. Use Azure Portal, CLI de Azure o cualquier otra herramienta que prefiera.

La siguiente plantilla de ARM crea un área de trabajo con una clave administrada por el cliente, mediante la versión preliminar de la API para el recurso Microsoft.Databricks/workspaces . Guarde este texto localmente en un archivo denominado databricks-cmk-template.json .

Nota

Esta plantilla de ejemplo no incluye todas las características posibles, como proporcionar su propia red virtual, que es una característica denominada Implementar Azure Databricks en la red virtual de Azure (inserción de red virtual). Si ya usa otra plantilla, puede combinar los parámetros, recursos y salidas de esta plantilla en la plantilla 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 usar esta plantilla para crear un área de trabajo, tiene varias opciones en función de las herramientas.

Cree un área de trabajo mediante el CLI de Azure

Para crear un área de trabajo con CLI de Azure comandos:

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>

Cree un área de trabajo mediante el Azure Portal

Para usar la plantilla en la Azure Portal para crear un área de trabajo, consulte el artículo de Azure Inicio rápido: Creación e implementación de plantillas de ARM mediante el Azure Portal

Solución de problemas y procedimientos recomendados

Eliminación accidental de una clave

Si elimina la clave en el Azure Key Vault, el inicio de sesión del área de trabajo comenzará a dar error y no se podrá leer ningún cuaderno Azure Databricks. Para evitarlo, se recomienda habilitar las eliminaciones flexibles. Esta opción garantiza que, si se elimina una clave, se puede recuperar en un período de 30 días. Si la eliminación automática está habilitada, simplemente puede volver a habilitar la clave para resolver el problema.

Las claves perdidas son irrecuperables

Si pierde la clave y no se puede recuperar, todos los datos del cuaderno cifrados por la clave son irrecuperables.

Error de actualización de claves debido a permisos del almacén de claves

Si tiene problemas para crear el área de trabajo, compruebe si el almacén de claves tiene los permisos correctos. Es posible que el error que se devuelve de Azure no indique correctamente esto como causa principal. Además, los permisos necesarios son get wrapKey , y unwrapKey . Consulte Paso 2: Creación de un almacén de claves o uso de uno existente.