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:
- Origen del cuaderno en el plano de control de Azure Databricks.
- Los resultados del cuaderno para los cuadernos se ejecutan de forma interactiva (no como trabajos) que se almacenan en el plano de control. De manera predeterminada, los resultados más grandes también se almacenan en el cubo raíz del área de trabajo. Puede configurar Azure Databricks para almacenar todos los resultados de cuadernos interactivos en su cuenta en la nube.
- Secretos almacenados por las API del administrador de secretos.
- Consultas e historial de consultas de Databricks SQL.
- Tokens de acceso personal (PAT) u otras credenciales que se usan para configurar la integración de Git con carpetas de Git de Databricks.
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 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
Para usar la CLI de Azure para estas tareas, instale la herramienta CLI de Azure e instale la extensión de Databricks:
az extension add --name databricks
Para usar PowerShell para estas tareas, instale Azure PowerShell e instale el módulo de PowerShell para Databricks. También debe iniciar sesión:
Connect-AzAccount
Para iniciar sesión en su cuenta de Azure como usuario, consulte Inicio de sesión de PowerShell con una cuenta de usuario de Azure Databricks. Para iniciar sesión en su cuenta de Azure como entidad de servicio, consulte Inicio de sesión de PowerShell con entidades de servicio de Microsoft Entra ID.
Paso 1: configurar un Key Vault
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
La instancia de Key Vault 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
- Crea o selecciona un Key Vault:
- Para crear un Key Vault, ve a la página de Azure Portal para crear un Key Vault. Haz clic en + Crear. Escribe el nombre del grupo de recursos, el nombre de Key Vault, la región y el plan de tarifa. Haga clic en Revisar y crear y, a continuación, en Crear.
- Para usar un Key Vault existente, copia el nombre de Key Vault para el siguiente paso.
- Obtenga el identificador de objeto de la aplicación AzureDatabricks:
- En el Azure Portal, vaya a Microsoft Entra ID.
- Seleccione Aplicaciones empresariales en el menú de la barra lateral.
- Busca
AzureDatabricks
y haz clic en Aplicación empresarial en los resultados. - Copie el identificador de objeto de Propiedades.
- Agregue una directiva de acceso a Key Vault mediante Azure Portal:
Ve a Azure Key Vault que usarás para configurar las claves administradas por el cliente para los servicios administrados del área de trabajo.
Haz clic en la pestaña Directivas de acceso en el panel izquierdo.
Selecciona el botón Crear que se encuentra en la parte superior de la página.
En la sección Permisos de clave de la pestaña Permisos, habilite Obtener, Desencapsular clave y Encapsular clave.
Haga clic en Next.
En la pestaña Entidad de seguridad, escribe
AzureDatabricks
y desplázate hasta el primer resultado de la aplicación empresarial que tenga un identificador de aplicación de2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
y selecciónalo.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.
Cree una instancia de Key Vault o seleccione una existente:
Para crear una instancia de Key Vault, use el comando de la CLI de Azure a continuación y reemplace los elementos entre paréntesis con su región, nombre de instancia de Key Vault, nombre del grupo de recursos y ubicación:
az keyvault create --location <region> \ --name <key-vault-name> \ --resource-group <resource-group-name> \ --location <location> \ --enable-purge-protection
Para usar un Key Vault existente, copia el nombre para el paso siguiente.
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
Confirma que está utilizando la suscripción de Azure correcta:
az account set --subscription {subscription_id}
Uso de Azure PowerShell
Puede crear una nueva instancia de Key Vault o usar una existente.
Crear un almacén de claves:
$keyVault = New-AzKeyVault -Name <key-vault-name> \
-ResourceGroupName <resource-group-name> \
-Location <location> \
-sku <sku> \
-EnablePurgeProtection
Uso de una instancia existente de Key Vault:
$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
Crea una clave en el Key Vault. 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 de Key Vault. 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
Si tiene previsto crear una clave, es posible que tenga que establecer la directiva de acceso, en función de cómo y cuándo la haya creado. Por ejemplo, si creó recientemente la instancia de Key Vault mediante PowerShell, es posible que la nueva instancia de Key Vault no tenga la directiva de acceso necesaria para crear una clave. En el ejemplo siguiente se usa el parámetro
EmailAddress
para establecer la directiva. Para obtener más información, consulte el artículo de Microsoft sobre Set-AzKeyVaultAccessPolicy.Establezca la directiva de acceso en una nueva instancia de Key Vault:
Set-AzKeyVaultAccessPolicy \ -VaultName $keyVault.VaultName \ -PermissionsToKeys all \ -EmailAddress <email-address>
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>
Agregue una directiva de acceso con permisos a la instancia de Key Vault:
$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
- Uso de la CLI de Azure sin ninguna plantilla
- Uso de Powershell sin ninguna plantilla
- Aplicación de cambios con una plantilla de ARM
Uso de Azure Portal sin ninguna plantilla
Ve a la página de inicio de Azure Portal.
Haz clic en Crear un recurso en la esquina superior izquierda.
En la barra de búsqueda, escribe
Azure Databricks
y haz clic en la opción Azure Databricks .Haz clic en Crear en el widget de Azure Databricks.
Introduce valores para los campos de entrada en las pestañas Básico y Redes.
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.
Establece los campos de cifrado.
- 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.
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
Agrega una directiva de acceso a Key Vault con el siguiente comando. 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ónAzureDatabricks
.az keyvault set-policy -n <key-vault-name> \ --key-permissions get wrapKey unwrapKey \ --object-id <object-id>
Cree o actualice un área de trabajo:
Para crear y actualizar, agregue estos campos al comando:
managed-services-key-name
: nombre de la clavemanaged-services-key-vault
: URI del almacén de clavesmanaged-services-key-version
: versión de clave. Use la versión de clave específica y nolatest
.
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 claveManagedServicesKeyVaultPropertiesKeyVaultUri
: URI de la claveManagedServicesKeyVaultPropertiesKeyVersion
: versión de clave. Use la versión de clave específica y nolatest
.
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 usas una plantilla, combina 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, los recursos y las salidas de esta plantilla en la suya.
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:
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.- Agregue la sección
resources.properties.encryption
de la plantilla. - En la sección
parameters
, agregue tres nuevos parámetroskeyvaultUri
,keyName
ykeyVersion
de la plantilla. - En la sección
parameters
, elimine"type": "string",
de la plantilla.
- Agregue la sección
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:
Vaya a la página Implementación personalizada.
Haga clic en Cree su propia plantilla en el editor.
Pegue el código JSON.
Haga clic en Save(Guardar).
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.
Haga clic en Revisar y crear.
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.
Cree una nueva clave o rote la clave existente en Key Vault. Ver Paso 1: configurar un Key Vault.
Asegúrese de que la nueva clave tenga los permisos adecuados.
Confirma que la plantilla tiene la versión de API correcta. Debe ser igual o mayor que
2021-04-01-preview
.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.
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 de Key Vault
Si tienes problemas para crear el área de trabajo, comprueba si el Key Vault tiene 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
. Ver Paso 1: configurar un Key Vault.
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.