Compartir vía


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

Nota:

Esta característica requiere el plan Premium.

Para disponer de un mayor control sobre los datos, puede agregar su propia clave para proteger y controlar el acceso a ciertos tipos de datos. Azure Databricks tiene varias características clave administradas por el cliente. Para comparar las características relacionadas, consulte Claves administradas por el cliente para el cifrado.

Sugerencia

En este artículo se describe cómo configurar su propia clave desde almacenes de Azure Key Vault para servicios administrados. Para obtener instrucciones sobre cómo utilizar una clave de los almacenes de Azure Key Vault HSM administradoHabilitar claves administradas por el cliente HSM para servicios administrados: Azure Databricks.

Los datos de servicios administrados en el plano de control de Azure Databricks se cifran en reposo. Puede agregar una clave administrada por el cliente para los servicios administrados para ayudar a proteger y controlar el acceso a los siguientes tipos de datos cifrados:

Después de agregar un cifrado de clave administrada por el cliente para un área de trabajo, Azure Databricks usa la clave para controlar el acceso a la clave que cifra las operaciones de escritura futuras en los datos de los servicios administrados del área de trabajo. Los datos ya existentes no se volverán a cifrar. La clave de cifrado de datos se almacena en caché en memoria para varias operaciones de lectura y escritura y se expulsa de la memoria a intervalos regulares. Las nuevas solicitudes de esos datos requieren otra solicitud al sistema de administración de claves del servicio en la nube. Si elimina o revoca la clave, se produce un error al leer o escribir en los datos protegidos al final del intervalo de tiempo de caché.

Puede rotar (actualizar) la clave administrada por el cliente más adelante. Consulte Rotación de la clave en un momento posterior.

Esta característica no cifra los datos almacenados fuera del plano de control. Para ver otras características de clave administradas por el cliente, consulte Claves administradas por el cliente para el cifrado.

Requisitos

Paso 1: Configuración de un almacén de claves

Debe crear una instancia de Azure Key Vault y establecer sus permisos. Puedes hacerlo a través de Azure Portal, la CLI o las API.

Importante

El almacén de claves debe estar en el mismo inquilino de Azure que el área de trabajo de Azure Databricks.

Estas instrucciones ofrecen detalles para varias opciones de implementación:

Uso de Azure Portal

  1. Cree o seleccione un almacén de claves:

    • Para crear un almacén de claves, vaya a la página de Azure Portal para crear un almacén de claves. Haz clic en + Crear. Escriba el nombre del grupo de recursos, el nombre del almacén de claves, la región y el plan de tarifa. Haga clic en Revisar y crear y, a continuación, en Crear.
    • Para usar un almacén de claves existente, copie el nombre del almacén de claves para el paso siguiente.
  2. Obtenga el identificador de objeto de la aplicación AzureDatabricks :

    1. En el Azure Portal, vaya a Microsoft Entra ID.
    2. Seleccione Aplicaciones empresariales en el menú de la barra lateral.
    3. Busca AzureDatabricks y haz clic en Aplicación empresarial en los resultados.
    4. Copie el identificador de objeto de Propiedades.
  3. Concesión de permisos al almacén de claves mediante Azure RBAC:

  4. Vaya a la instancia de Azure Key Vault que usará para configurar las claves administradas por el cliente para los servicios administrados para el área de trabajo.

  5. En la barra lateral, haga clic en Control de acceso (IAM).

  6. Haga clic en + Agregar > Agregar asignación de rol.

  7. En la pestaña Rol, seleccione Key Vault Crypto Service Encryption User.

  8. En la pestaña Miembros, haga clic en + Seleccionar miembros.

  9. Busque y seleccione la identidad administrada de la cuenta de almacenamiento de Azure Databricks.

  10. En Seleccionar miembros, busque y seleccione AzureDatabricks.

  11. Haga clic en Revisar y asignar > Revisar y asignar.

Nota:

Si tu Key Vault usa directivas de acceso en lugar de RBAC, siga este manual de instrucciones:

  1. Agregue una directiva de acceso al almacén de claves mediante Azure Portal:

    1. Vaya a las instancias de Azure Key Vault que usará para configurar las claves gestionadas por el cliente para los servicios gestionados de tu espacio de trabajo.
    2. Haz clic en la pestaña Directivas de acceso en el panel izquierdo.
    3. Selecciona el botón Crear que se encuentra en la parte superior de la página.
    4. En la sección Permisos de clave de la pestaña Permisos, habilite Obtener, Desencapsular clave y Encapsular clave.
    5. Haga clic en Next.
    6. En la pestaña Entidad de seguridad, escribeAzureDatabricks y desplázate hasta el primer resultado de la aplicación empresarial que tenga un identificador de aplicación de 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d y selecciónalo.
    7. Ve a la pestaña Revisar y crear y haz clic en b.

Uso de la CLI de Azure

Usa la CLI de Azure para completar las instrucciones siguientes.

  1. Cree un almacén de claves o seleccione un almacén de claves existente:

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

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

  2. Obtenga el identificador de objeto de la aplicación AzureDatabricks con la CLI de Azure.

    az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \
                  --query "id" \
                  --output tsv
    
  3. Confirma que está utilizando la suscripción de Azure correcta:

    az account set --subscription {subscription_id}
    

Uso de Azure PowerShell

Puede crear un nuevo almacén de claves o usar uno existente.

Cree una bóveda de claves

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

Use un almacén de claves existente:

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

Paso 2: Preparar una clave

Puede crear una clave o usar una existente. Use las herramientas que prefiera: Azure Portal, la CLI de Azure u otras opciones.

Uso de CLI de Azure

Cree una clave en el almacén de claves. El tipo de clave debe ser RSA.

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

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

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

  • Dirección URL del almacén de claves: 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 su clave.
  • Versión de clave: versión de la clave.

El identificador de clave completo tiene el formato https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>. Las claves de Azure Key Vault que se encuentran en una nube no pública tienen un formato diferente.

Para usar una clave existente en lugar de crear una, obtenga y copie estos valores para la clave a fin de poder usarlos en los pasos siguientes. Compruebe que la clave existente está habilitada antes de continuar.

Uso de Azure PowerShell

  1. Puede crear una clave o recuperar una existente:

    • Crear una clave:

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Recuperar una clave existente:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  2. Conceda el rol de usuario de Cifrado de servicios criptográficos de Key Vault al área de trabajo de Azure Databricks y a la identidad administrada de la cuenta de almacenamiento de Azure Databricks en el almacén de claves:

    
     $azureDatabricks = Get-AzureADServicePrincipal \
     -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"
    
     New-AzKeyVaultRoleAssignment -RoleDefinitionName "Key Vault Crypto Service Encryption User" -ObjectId $azureDatabricks.ObjectId
    
     New-AzKeyVaultRoleAssignment -RoleDefinitionName "Key Vault Crypto Service Encryption User" -ObjectId $managedService.ObjectId
    

Nota:

Si el almacén de claves usa directivas de acceso en lugar de RBAC, use el siguiente comando:

$managedService = Get-AzureADServicePrincipal \
-Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"

Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
-ObjectId $managedService.ObjectId \
-PermissionsToKeys wrapkey,unwrapkey,get

Paso 3: agregar una clave a un área de trabajo

Puede implementar una nueva área de trabajo con una clave administrada por el cliente para servicios administrados o agregar una clave a un área de trabajo existente. Puede hacerlo con la CLI de Azure, PowerShell, plantillas de ARM, Azure Portal u otras herramientas. En esta sección se incluyen detalles de las distintas opciones de implementación:

Uso de Azure Portal sin ninguna plantilla

  1. Ve a la página de inicio de Azure Portal.

  2. Haz clic en Crear un recurso en la esquina superior izquierda.

  3. En la barra de búsqueda, escribe Azure Databricks y haz clic en la opción Azure Databricks .

  4. Haz clic en Crear en el widget de Azure Databricks.

  5. Introduce valores para los campos de entrada en las pestañas Básico y Redes.

  6. Después de llegar a la pestaña Cifrado:

    • Para crear un área de trabajo, habilita Usa tu propia clave en la sección Servicios administrados.
    • Para actualizar un área de trabajo, habilita los Servicios administrados.
  7. Establece los campos de cifrado.

    Mostrar los campos en la sección Discos administrados de la hoja Azure Databricks

    • En el campo Identificador de clave, pega el identificador de clave de la clave de Azure Key Vault.
    • En la lista desplegable Suscripción, escribe el nombre de la suscripción de la clave de Azure Key Vault.
  8. Completa las pestañas restantes y haz clic en Revisar y crear (para una nueva área de trabajo) o Guardar (para actualizar un área de trabajo).

Importante

Si rota la clave, debe mantener la clave antigua disponible durante 24 horas.

Uso de la CLI de Azure sin ninguna plantilla

  1. Conceda el rol de usuario de Cifrado de servicio criptográfico de Key Vault a Azure Databricks y a la identidad administrada de la cuenta de almacenamiento de Azure Databricks en el almacén de claves:

    az keyvault role assignment create \
                            --role "Key Vault Crypto Service Encryption User"  \
                           --assignee-object-id <azure-databricks-service-object-id>
    
    az keyvault role assignment create \
                            --role "Key Vault Crypto Service Encryption User"  \
                           --assignee <storage-account-managed-identity>
    

Nota:

Si tu Key Vault usa directivas de acceso en lugar de RBAC, siga este manual de instrucciones:

Reemplaza <key-vault-name> por el nombre del almacén que usaste en el paso anterior y <object-id> por el identificador de objeto de la aplicación AzureDatabricks.

az keyvault set-policy -n <key-vault-name> \
                       --key-permissions get wrapKey unwrapKey  \
                       --object-id <object-id>
  1. Cree o actualice un área de trabajo:

    Para crear y actualizar, agregue estos campos al comando:

    • managed-services-key-name: nombre de la clave
    • managed-services-key-vault: URI del almacén de claves
    • managed-services-key-version: versión de clave. Use la versión de clave específica y no latest.

    Ejemplo de creación de un área de trabajo con estos 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>
    

    Ejemplo de actualización de un área de trabajo con estos 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

Si rota la clave, debe mantener la clave antigua disponible durante 24 horas.

Uso de Powershell sin ninguna plantilla

Para crear o actualizar un área de trabajo, agregue los parámetros siguientes al comando para la nueva clave:

  • ManagedServicesKeyVaultPropertiesKeyName: nombre de la clave
  • ManagedServicesKeyVaultPropertiesKeyVaultUri: URI de la clave
  • ManagedServicesKeyVaultPropertiesKeyVersion: versión de clave. Use la versión de clave específica y no latest.

Ejemplo de creación de un área de trabajo con estos campos:

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

Ejemplo de actualización de un área de trabajo con estos campos:

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

Importante

Si rota la clave, debe mantener la clave antigua disponible durante 24 horas.

Aplicación de cambios con una plantilla de ARM

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

Esta plantilla de ejemplo no incluye todas las características posibles de Azure Databricks, como proporcionar tu propia red virtual en la que implementar el área de trabajo.

Importante

Si ya usa una plantilla, combine los parámetros, recursos y salidas adicionales 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": "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. Use the specific key version and not `latest`."
      }
    }
  },
  "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')))]"
    }
  }
}

Si ya usa otra plantilla, puede combinar los parámetros, recursos y salidas de esta plantilla en la plantilla existente.

Para usar esta plantilla para crear o actualizar un área de trabajo, elige una de estas opciones de implementación:

Aplicación de una plantilla con la CLI de Azure

Para crear un área de trabajo con la CLI de Azure, ejecute el siguiente 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>

Nota:

Use la versión de clave específica y no latest.

Para actualizar un área de trabajo existente para usar un área de trabajo de clave administrada por el cliente (o para rotar la clave existente) mediante la CLI de Azure:

  1. Si la plantilla de ARM que implementó el área de trabajo nunca agregó claves administradas por el cliente, agregue la sección resources.properties.encryption y sus parámetros relacionados. Consulte la plantilla que hemos visto anteriormente en este artículo.

    1. Agregue la sección resources.properties.encryption de la plantilla.
    2. En la sección parameters, agregue tres nuevos parámetros keyvaultUri, keyNamey keyVersion de la plantilla.
    3. En la sección parameters, elimine "type": "string", de la plantilla.
  2. Ejecute el mismo comando que para crear una nueva área de trabajo. Siempre que el nombre del grupo de recursos y el nombre del área de trabajo sean idénticos al área de trabajo existente, este comando actualiza el área de trabajo existente en lugar de crear una nueva área de trabajo.

    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>
    

    Aparte de los cambios en los parámetros relacionados con claves, use los mismos parámetros que se usaron para crear el área de trabajo.

    Importante

    Si rota la clave, debe mantener la clave antigua disponible durante 24 horas.

Aplicación de una plantilla con Azure Portal

Para usar la plantilla en Azure Portal para crear o actualizar un área de trabajo:

  1. Vaya a la página Implementación personalizada.

  2. Haga clic en Cree su propia plantilla en el editor.

  3. Pegue el código JSON.

  4. Haga clic en Save(Guardar).

  5. Rellene los parámetros.

    Para actualizar un área de trabajo existente, use los mismos parámetros que usó para crear el área de trabajo. Para agregar una clave por primera vez, agregue los tres parámetros relacionados con la clave. Para rotar la clave, cambie todos o algunos de los parámetros relacionados con la clave. Asegúrese de que el nombre del grupo de recursos y el nombre del área de trabajo son idénticos al área de trabajo existente. Si son iguales, este comando actualiza el área de trabajo existente en lugar de crear una nueva área de trabajo.

    Aparte de los cambios en los parámetros relacionados con claves, use los mismos parámetros que se usaron para crear el área de trabajo.

  6. Haga clic en Revisar y crear.

  7. Si no hay ningún problema de validación, haga clic en Crear.

    Importante

    Si rota la clave, debe mantener la clave antigua disponible durante 24 horas.

Para más información, consulte el artículo de Azure Inicio rápido: Creación e implementación de plantillas de Azure Resource Manager mediante Azure Portal.

Paso 4 (opcional): Volver a importar cuadernos

Después de agregar inicialmente una clave para servicios administrados para un área de trabajo existente, solo las operaciones de escritura futuras usan la clave. Los datos ya existentes no se volverán a cifrar.

Puede exportar todos los cuadernos y volver a importarlos para que la clave que cifre los datos esté protegida y controlada por la clave. Puede usar las API de exportación e importación del área de trabajo.

Rotación de la clave en un momento posterior

Si ya usa una clave administrada por el cliente para los servicios administrados, puede actualizar el área de trabajo con una nueva versión de clave o una clave completamente nueva. Esto se denomina rotación de claves.

  1. Cree una nueva clave o rote la clave existente en la bóveda de claves. Consulte Paso 1: Configuración de un almacén de claves.

    Asegúrese de que la nueva clave tenga los permisos adecuados.

  2. Confirma que la plantilla tiene la versión de API correcta. Debe ser igual o mayor que 2021-04-01-preview.

  3. Actualice el área de trabajo con la nueva clave mediante el portal, la CLI o PowerShell. Consulte Paso 3: Agregar una clave a un área de trabajo y siga las instrucciones para actualizar el área de trabajo. Asegúrese de usar los mismos valores para el nombre del grupo de recursos y el nombre del área de trabajo para que se actualice el área de trabajo existente, en lugar de crear una nueva área de trabajo. Aparte de los cambios en los parámetros relacionados con claves, use los mismos parámetros que se usaron para crear el área de trabajo.

    Importante

    Si rota la clave, debe mantener la clave antigua disponible durante 24 horas.

  4. De manera opcional, exporte y vuelva a importar los cuadernos existentes para asegurarse de que todos los cuadernos existentes usen la nueva clave.

Solución de problemas

Eliminación accidental de una clave

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

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 su bóveda de claves tiene los permisos correctos. Es posible que el error que devuelve Azure no indique correctamente esta causa como la principal. Además, los permisos necesarios son get, wrapKey y unwrapKey. Consulte Paso 1: Configuración de un almacén de claves.

Las claves perdidas son irrecuperables

Si pierde la clave y no puede recuperarla, no podrá recuperar ninguno de los datos del cuaderno cifrados por la clave.