Habilitación de claves administradas por el cliente para servicios administrados
Importante
Esta característica está en versión preliminar pública.
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 dos características clave administradas por el cliente para diferentes tipos de datos y ubicaciones. Para compararlas, consulte Claves administradas por el cliente para el cifrado.
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.
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 Girar la clave.
Importante
Después de ejecutar el comando de rotación de claves, debe mantener la clave de KMS antigua disponible en Azure Databricks durante 24 horas.
Nota:
Esta característica no cifra los datos almacenados fuera del plano de control. Para cifrar los datos en el almacenamiento de blobs raíz del área de trabajo, consulte Configuración de claves administradas por el cliente para la raíz de DBFS.
Paso 1: Creación de un almacén de claves o uso de uno existente
Debe crear una instancia de Azure Key Vault y establecer sus permisos. Puede hacerlo a través de Azure Portal, pero en las instrucciones siguientes se usa la CLI de Azure.
Cree un almacén de claves o use uno existente.
Para crear un almacén de claves, reemplace los elementos entre corchetes por su 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.
Obtenga el identificador de objeto de la aplicación AzureDatabricks:
az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \ --query "objectId" \ --output tsvEn lugar de usar la CLI de Azure, puede obtener el identificador de objeto de Azure Portal:
- En Azure Active Directory, seleccione Aplicaciones empresariales en el menú izquierdo.
- Busque AzureDatabricks y haga clic en Aplicación empresarial en los resultados.
- Copie el identificador de objeto de Propiedades.
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 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>
Paso 2: Creación de una clave nuevo o uso de una existente
Cree una clave en el almacén de claves. El valor de KeyType debe ser RSA, pero el tamaño de la clave RSA y HSM no son relevantes. El objeto KeyVault debe estar en el mismo inquilino de Azure que el área de trabajo de Azure Databricks. Use las herramientas que prefiera: Azure Portal, la CLI de Azure u otras opciones.
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 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 <key-vault-URL>/keys/<key-name>/<key-version>.
Si en su lugar usa una clave existente, 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.
Paso 3: Creación o actualización de un área de trabajo con su clave
Puede implementar una nueva área de trabajo con la clave administrada por el cliente para los servicios administrados o agregar una clave administrada por el cliente a un área de trabajo existente. Puede hacer ambas cosas con las plantillas de ARM. Use las herramientas que prefiera: Azure Portal, la CLI de Azure u otras opciones.
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 al proporcionar su propia red virtual. Si ya usa una plantilla, combine los parámetros, los recursos y las salidas de esta plantilla en la suya.
{
"$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')))]"
}
}
}
Si ya usa otra plantilla, puede combinar los parámetros, los recursos y las salidas de esta plantilla en la suya.
Si desea usar esta plantilla para crear o actualizar un área de trabajo, tiene varias opciones en función de las herramientas que utilice.
Creación de un área de trabajo 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>
Actualización de un área de trabajo con la CLI de Azure
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.encryptiony sus parámetros relacionados. Consulte la plantilla que hemos visto anteriormente en este artículo.- Agregue la sección
resources.properties.encryptionde la plantilla. - En la sección
parameters, agregue tres nuevos parámetroskeyvaultUri,keyNameykeyVersionde 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.
Importante
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.
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>Importante
Después de ejecutar el comando de rotación de claves, debe mantener la clave de KMS antigua disponible en Azure Databricks durante 24 horas.
Creación o actualización del área de trabajo 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.
Importante
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 + crear.
Si no hay ningún problema de validación, haga clic en Crear.
Importante
Después de ejecutar el comando de rotación de claves, debe mantener la clave de KMS antigua disponible en Azure Databricks 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: Exportación y reimportación opcionales de cuadernos existentes
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
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. Consulte Paso 1: Creación de un almacén de claves o uso de uno existente.
Importante
Asegúrese de que la nueva clave tiene el permiso adecuado.
Confirme que la plantilla tiene la versión de API correcta
2021-04-01-preview.Actualice el área de trabajo:
Importante
Después de ejecutar el comando de rotación de claves, debe mantener la clave de KMS antigua disponible en Azure Databricks durante 24 horas.
Para usar Azure Portal, aplique la plantilla mediante la herramienta Implementación personalizada. Consulte Creación o actualización del área de trabajo con Azure Portal. Asegúrese de usar los mismos valores para el nombre del grupo de recursos y el nombre del área de trabajo para que actualice el área de trabajo existente, en lugar de crear una nueva área de trabajo.
Para usar la CLI de Azure, ejecute el siguiente comando. Asegúrese de usar los mismos valores para el nombre del grupo de recursos y el nombre del área de trabajo para que actualice el área de trabajo existente, en lugar de crear una nueva área de trabajo.
Importante
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.
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>
Opcionalmente, exporte y vuelva a importar los cuadernos existentes para asegurarse de que todos los cuadernos existentes usan la nueva clave.
Solución de problemas y procedimientos recomendados
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.
Las claves perdidas son irrecuperables
Si pierde la clave y no puede recuperarla, 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 devuelve Azure no indique correctamente esta causa como la principal. Además, los permisos necesarios son get, wrapKey y unwrapKey. Consulte Paso 1: Creación de un almacén de claves o uso de uno existente.