Activer les clés gérées par le client pour les services managés

Notes

cette fonctionnalité nécessite le plan Premium.

Pour contrôler davantage vos données, vous pouvez ajouter votre propre clé afin de les protéger et contrôler l’accès à certains types de données. Azure Databricks a plusieurs fonctionnalités clés gérées par le client. Pour comparer les fonctionnalités associées, consultez Clés gérées par le client pour le chiffrement.

Conseil

Cet article explique comment configurer votre propre clé à partir des coffres Azure Key Vault pour les services gérés. Pour obtenir des instructions sur l’utilisation d’une clé des coffres Azure Key Vault HSM managé, consultez Activer les clés HSM gérées par le client pour les services managés.

Les données des services managés dans le plan de contrôle Azure Databricks sont chiffrées au repos. Vous pouvez ajouter une clé gérée par le client pour les services managés pour protéger et contrôler l’accès aux types suivants de données chiffrées :

Une fois que vous avez ajouté un chiffrement des clés gérées par le client pour un espace de travail, Azure Databricks utilise votre clé pour contrôler l’accès à la clé qui va chiffrer les prochaines opérations d’écriture dans les données des services managés de votre espace de travail. Les données existantes ne sont pas rechiffrées. La clé de chiffrement des données est mise en cache dans la mémoire pour plusieurs opérations de lecture et d’écriture et régulièrement supprimée de la mémoire. Les nouvelles demandes de ces données nécessitent une autre demande au système de gestion des clés de votre service cloud. Si vous supprimez ou révoquez votre clé, la lecture ou l’écriture dans les données protégées échouent à l’issue de l’intervalle de temps du cache.

Vous pouvez faire pivoter (mettre à jour) la clé gérée par le client ultérieurement. Consultez Faire pivoter la clé ultérieurement.

Cette fonctionnalité ne chiffre pas les données stockées en dehors du plan de contrôle. Pour obtenir d’autres fonctionnalités clés gérées par le client, consultez Clés gérées par le client pour le chiffrement

Spécifications

Étape 1 : Configurer un coffre de clés

Vous devez créer une instance de Azure Key Vault et définir ses autorisations. Pour ce faire, vous pouvez utiliser le portail Azure, l’interface CLI ou les API.

Important

Le coffre de clés doit se trouver dans le même locataire Azure que votre espace de travail Azure Databricks.

Ces instructions portent sur de multiples options de déploiement :

Utiliser le Portail Azure

  1. Créez ou sélectionnez un coffre de clés :
    • Pour créer un coffre de clés, accédez à la page du portail Azure. Cliquez sur + Créer. Entrez le nom du groupe de ressources, le nom du coffre de clés, la région et le niveau tarifaire. Cliquez sur Vérifier + créer, puis sur Créer.
    • Pour utiliser un coffre de clés existant, copiez le nom de celui-ci pour l’étape suivante.
  2. Récupérez l’ID d’objet de l’application AzureDatabricks :
    1. Dans le portail Azure, accédez à Microsoft Entra ID.
    2. Dans le menu, sélectionnez Applications d’entreprise.
    3. Recherchez AzureDatabricks, puis cliquez sur l’application d’entreprise dans les résultats.
    4. Dans Propriétés, copiez l'ID de l'objet.
  3. Ajoutez une stratégie d’accès à Key Vault via le Portail Azure :
    1. Accédez au coffre de clés Azure que vous allez utiliser pour configurer des clés gérées par le client pour les services gérés de votre espace de travail.

    2. Cliquez sur l’onglet Stratégies d’accès dans le volet de gauche.

    3. Sélectionnez le bouton Créer situé en haut de la page.

    4. Sous l’onglet Autorisations de clé, sous la section Autorisations, activez Get, Unwrap Key et Wrap key.

    5. Cliquez sur Suivant.

    6. Sous l’onglet Principal, tapez AzureDatabricks et faites défiler l’écran jusqu’au premier résultat d’application d’entreprise dont l’ID d’application est 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d, puis sélectionnez-la.

      Select the AzureDatabricks application with ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d

    7. Passez à l’onglet Vérifier + créer, puis cliquez sur b.

Utilisez Azure CLI

Utilisez Azure CLI pour appliquer les instructions suivantes.

  1. Créez un coffre de clés ou sélectionnez un coffre de clés existant :

    • Pour créer un coffre de clés, utilisez la commande CLI Azure suivante et remplacez les éléments entre parenthèses par votre région, le nom du coffre de clés, le nom du groupe de ressources et l’emplacement :

      az keyvault create --location <region> \
                         --name <key-vault-name> \
                         --resource-group <resource-group-name> \
                         --location <location> \
                         --enable-purge-protection
      
    • Pour utiliser un coffre de clés existant, copiez le nom de celui-ci pour l’étape suivante.

  2. Obtenez l’ID d’objet de l’application AzureDatabricks avec Azure CLI.

    az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \
                  --query "id" \
                  --output tsv
    
  3. Vérifiez que vous utilisez l’abonnement Azure approprié :

    az account set --subscription {subscription_id}
    

Utilisez Azure PowerShell

Vous pouvez créer un nouveau coffre de clés ou utiliser un coffre de clés existant.

Créer un coffre de clés :

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

Utiliser un coffre de clés existant :

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

Étape 2 : préparer une clé

Vous pouvez créer une clé ou utiliser une clé existante. Utilisez les outils que vous préférez utiliser : Portail Azure, Azure CLI ou d’autres outils.

Utiliser l’interface de ligne de commande Microsoft Azure

Créez une clé sous le coffre de clés. Le KeyType doit être RSA.

Pour créer la clé dans l’interface CLI, exécutez la commande suivante :

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

Prenez note des valeurs suivantes, que vous pouvez récupérer à partir de l’ID de clé dans la propriété kid de la réponse. Vous allez l’utiliser dans les étapes suivantes :

  • URL du coffre de clés : partie initiale de l’ID de clé qui comprend le nom du coffre de clés. Il se présente sous la forme https://<key-vault-name>.vault.azure.net .
  • Nom de clé : nom de votre clé.
  • Version de la clé : Version de la clé.

L’ID complet de la clé se présente généralement sous la forme https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>. Les clés Azure Key Vault qui se trouvent dans un cloud non public ont une forme différente.

Pour utiliser une clé existante au lieu d’en créer une, récupérez et copiez ces valeurs pour votre clé afin de pouvoir les utiliser dans les étapes suivantes. Vérifiez que votre clé existante est activée avant de continuer.

Utiliser Azure PowerShell

  1. Si vous envisagez de créer une clé, vous devrez peut-être définir la stratégie d’accès, en fonction de la façon et du moment où vous l’avez créée. Par exemple, si vous avez récemment créé le coffre de clés à l’aide de PowerShell, votre nouveau coffre de clés peut ne pas avoir la stratégie d’accès requise pour créer une clé. L’exemple suivant utilise le paramètre EmailAddress pour définir la stratégie. Pour plus d’informations, consultez l’article Microsoft sur Set-AzKeyVaultAccessPolicy.

    Définissez la stratégie d’accès sur un nouveau coffre de clés :

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. Vous pouvez créer une clé ou récupérer une clé existante :

    • Créer une clé :

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Récupérer une clé existante :

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  3. Ajouter une stratégie d’accès avec des autorisations au coffre de clés :

    $managedService = Get-AzureADServicePrincipal \
    -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"
    
    Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
    -ObjectId $managedService.ObjectId \
    -PermissionsToKeys wrapkey,unwrapkey,get
    

Étape 3 : Ajouter une clé à un espace de travail

Vous pouvez déployer un nouvel espace de travail avec une clé gérée par le client pour des services gérés ou ajouter une clé à un espace de travail existant. Vous pouvez effectuer ces deux opérations avec Azure CLI, Powershell, des modèles ARM, le Portail Azure ou d’autres outils. Vous trouverez dans cette section des détails sur les multiples options de déploiement suivantes :

Utiliser le Portail Azure sans modèle

  1. Accédez à la page d’accueil du portail Azure.

  2. Dans le coin supérieur gauche de la page, cliquez sur Créer une ressource.

  3. Dans la barre de recherche, tapez Azure Databricks et cliquez sur l’option Azure Databricks.

  4. Cliquez sur Créer dans le widget Azure Databricks.

  5. Renseignez les champs d’entrée sous les onglets Informations de base et Réseau.

  6. Une fois parvenu à l’onglet Chiffrement :

    • Pour créer un espace de travail, activez Utiliser votre propre clé dans la section Services gérés.
    • Pour mettre à jour un espace de travail, activez Services gérés.
  7. Définissez le type de chiffrement.

    Show fields in the Managed Disks section of the Azure Databricks blade

    • Dans le champ Identificateur de clé, collez l’identificateur de clé de votre clé Azure Key Vault.
    • Dans la liste déroulante Abonnement, entrez le nom de l’abonnement de votre clé Azure Key Vault.
  8. Complétez les onglets restants, puis cliquez sur Vérifier + créer (pour un nouvel espace de travail) ou sur Enregistrer (pour mettre à jour un espace de travail).

Important

Si vous faites pivoter la clé, vous devez conserver l’ancienne clé disponible pendant 24 heures.

Utiliser Azure CLI sans modèle

  1. Ajoutez une stratégie d’accès à Key Vault avec la commande suivante. Remplacez <key-vault-name> par le nom du coffre que vous avez utilisé à l’étape précédente et remplacez <object-id> par l’ID d’objet de l’application AzureDatabricks.

    az keyvault set-policy -n <key-vault-name> \
                           --key-permissions get wrapKey unwrapKey  \
                           --object-id <object-id>
    
  2. Créer ou mettre à jour un espace de travail :

    Pour la création et la mise à jour, ajoutez ces champs à la commande :

    • managed-services-key-name : nom de la clé
    • managed-services-key-vault : URI du coffre de clés
    • managed-services-key-version : version de la clé

    Exemple de création d’un espace de travail à l’aide des champs suivants :

    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>
    

    Exemple de mise à jour d’un espace de travail utilisant ces champs :

    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>
    

Important

Si vous faites pivoter la clé, vous devez conserver l’ancienne clé disponible pendant 24 heures.

Utiliser PowerShell sans modèle

Pour créer ou mettre à jour un espace de travail, ajoutez les paramètres suivants à la commande de votre nouvelle clé :

  • ManagedServicesKeyVaultPropertiesKeyName : nom de la clé
  • ManagedServicesKeyVaultPropertiesKeyVaultUri : URI de la clé
  • ManagedServicesKeyVaultPropertiesKeyVersion : version de la clé

Exemple de création d’espace de travail avec les champs suivants :

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

Exemple de mise à jour de l’espace de travail avec les champs suivants :

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

Important

Si vous faites pivoter la clé, vous devez conserver l’ancienne clé disponible pendant 24 heures.

Appliquer des modifications avec un modèle ARM

Le modèle ARM suivant crée un espace de travail avec une clé gérée par le client, en utilisant la version d’API 2023-02-01 pour la ressource Microsoft.Databricks/workspaces. Enregistrez ce texte localement dans un fichier nommé databricks-cmk-template.json .

Cet exemple de modèle n’inclut pas toutes les fonctionnalités Azure Databricks possibles, comme la possibilité d’indiquer votre propre réseau virtuel dans lequel déployer l’espace de travail.

Important

Si vous utilisez déjà un modèle, fusionnez les paramètres, les ressources et les sorties supplémentaires de ce modèle dans votre modèle existant.

{
  "$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"
      }
    }
  },
  "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 vous utilisez déjà un autre modèle, vous pouvez fusionner les paramètres, les ressources et les sorties de ce modèle dans votre modèle existant.

Pour utiliser ce modèle en vue de créer ou de mettre à jour un espace de travail, choisissez l’une des options de déploiement suivantes :

Appliquer un modèle avec Azure CLI

Pour créer un espace de travail avec Azure CLI, exécutez la commande suivante :

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>

Pour mettre à jour un espace de travail existant pour utiliser un espace de travail de clé géré par le client (ou pour faire pivoter la clé existante) à l’aide de Azure CLI :

  1. Si votre modèle ARM qui a déployé l’espace de travail n’a jamais ajouté de clés gérées par le client, ajoutez la section resources.properties.encryption et ses paramètres associés. Consultez le modèle plus haut dans cet article.

    1. Ajoutez la section resources.properties.encryption au modèle.
    2. Dans la section parameters, ajoutez trois nouveaux paramètres keyvaultUri , keyName et keyVersion à partir du modèle.
  2. Exécutez la même commande que pour créer un espace de travail. Tant que le nom du groupe de ressources et le nom de l’espace de travail sont identiques à votre espace de travail existant, cette commande met à jour l’espace de travail existant au lieu de créer un nouvel espace de travail.

    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>
    

    Outre les modifications apportées aux paramètres associés aux clés, utilisez les mêmes paramètres que ceux utilisés pour la création de l’espace de travail.

    Important

    Si vous faites pivoter la clé, vous devez conserver l’ancienne clé disponible pendant 24 heures.

Appliquer un modèle avec le Portail Azure

Pour utiliser le modèle dans la Portail Azure pour créer ou mettre à jour un espace de travail :

  1. Allez sur la page Déploiement personnalisé :

  2. Cliquez sur Créer votre propre modèle dans l’éditeur.

  3. Collez le JSON.

  4. Cliquez sur Enregistrer.

  5. Complétez les paramètres.

    Pour mettre à jour un espace de travail existant, utilisez les mêmes paramètres que ceux que vous avez utilisés pour créer l’espace de travail. Pour ajouter une clé pour la première fois, ajoutez les trois paramètres associés à la clé. Pour faire pivoter la clé, modifiez tout ou partie des paramètres associés à la clé. Vérifiez que le nom du groupe de ressources et le nom de l’espace de travail sont identiques à votre espace de travail existant. S’ils sont identiques, cette commande met à jour l’espace de travail existant au lieu de créer un nouvel espace de travail.

    Outre les modifications apportées aux paramètres associés aux clés, utilisez les mêmes paramètres que ceux utilisés pour la création de l’espace de travail.

  6. Cliquez sur Revoir + créer.

  7. S’il n’y a aucun problème de validation, cliquez sur créer.

    Important

    Si vous faites pivoter la clé, vous devez conserver l’ancienne clé disponible pendant 24 heures.

Pour plus d’informations, consultez le Guide de démarrage rapide de l’article Azure : créer et déployer des modèles ARM à l’aide de l’portail Azure.

Étape 4 (facultative) : réimporter des notebooks

Une fois que vous avez initialement ajouté une clé pour les services managés d’un espace de travail existant, seules les opérations d’écriture à venir vont utiliser votre clé. Les données existantes ne sont pas rechiffrées.

Vous pouvez exporter tous les notebooks, puis les réimporter afin que la clé qui chiffre les données soit protégée et contrôlée par votre clé. Vous pouvez utiliser les API d’exportation et d’importation d’espace de travail.

Faire pivoter la clé ultérieurement

Si vous utilisez déjà une clé gérée par le client pour les services managés, vous pouvez mettre à jour l’espace de travail avec une nouvelle version de clé ou une clé entièrement nouvelle. C’est ce que l’on appelle la rotation des clés.

  1. Créez une nouvelle clé ou faites pivoter votre clé existante dans le Key Vault. Consultez Étape 1 : Configurer un coffre de clés.

    Vérifiez que la nouvelle clé dispose de l’autorisation appropriée.

  2. Vérifiez que votre modèle dispose de la version d’API appropriée. Elle doit être égale ou supérieure à 2021-04-01-preview.

  3. Mettez à jour l’espace de travail avec votre nouvelle clé à l’aide du portail, de l’interface CLI ou de PowerShell. Consultez Étape 3 : ajouter une clé à un espace de travail et suivre les instructions de mise à jour de l’espace de travail. Veillez à utiliser les mêmes valeurs pour le nom du groupe de ressources et le nom de l’espace de travail pour mettre à jour l’espace de travail existant, au lieu de créer un nouvel espace de travail. Outre les modifications apportées aux paramètres associés aux clés, utilisez les mêmes paramètres que ceux utilisés pour la création de l’espace de travail.

    Important

    Si vous faites pivoter la clé, vous devez conserver l’ancienne clé disponible pendant 24 heures.

  4. Si vous le souhaitez, exportez et réimportez les blocs-notes existants pour vous assurer que tous les blocs-notes existants utilisent votre nouvelle clé.

Dépannage

Suppression accidentelle d’une clé

Si vous supprimez votre clé dans la Azure Key Vault, la connexion à l’espace de travail échoue et aucun bloc-notes ne peut être lu par Azure Databricks. Pour éviter cela, nous vous recommandons d’activer les suppressions réversibles. Cette option garantit que, si une clé est supprimée, elle peut être récupérée sur une période de 30 jours. Si la suppression réversible est activée, vous pouvez simplement réactiver la clé afin de résoudre le problème.

Échec de la mise à jour de la clé en raison des autorisations du coffre de clés

Si vous avez des difficultés à créer votre espace de travail, vérifiez que votre coffre de clés dispose des autorisations appropriées. L’erreur retournée par Azure peut ne pas être indiquée correctement comme cause racine. En outre, les autorisations requises sont get , wrapKey et unwrapKey . Consultez Étape 1 : Configurer un coffre de clés.

Les clés perdues sont irrécupérables

Si vous perdez votre clé et que vous ne pouvez pas la récupérer, toutes les données du bloc-notes chiffrées par la clé ne sont pas récupérables.