Partager via


Gestion des secrets

Parfois, l’accès aux données vous demande de vous authentifier auprès de sources de données externes par le biais de JDBC. Au lieu d’entrer directement vos informations d’identification dans un notebook, vous pouvez utiliser des secrets Azure Databricks pour stocker vos informations d’identification et les référencer dans les blocs-notes et les travaux. Cet article fournit une vue d’ensemble des secrets Azure Databricks.

Vue d’ensemble des secrets

Pour configurer et utiliser des secrets, vous devez :

  1. Créer une étendue de secrets. Une étendue de secrets est une collection de secrets identifiée par un nom.
  2. Ajouter des secrets à l’étendue
  3. Attribuez des autorisations sur l’étendue du secret.
  4. Accéder aux secrets à l’aide des utilitaires Databricks, consultez l’utilitaire Secrets (dbutils.secrets).

Pour obtenir un exemple de bout en bout de l’utilisation des secrets dans vos flux de travail, consultez Tutoriel : Créer et utiliser un secret Databricks. Pour utiliser un secret dans une propriété de configuration Spark ou une variable d’environnement, consultez Utiliser un secret dans une propriété de configuration Spark ou une variable d’environnement.

Avertissement

Les administrateurs, les créateurs de secrets et les utilisateurs autorisés peuvent lire les secrets Azure Databricks. Bien que Databricks fasse un effort pour réactez les valeurs secrètes qui peuvent être affichées dans les notebooks, il n’est pas possible d’empêcher ces utilisateurs de lire des secrets. Voir la rédaction des secrets.

Gérer les étendues de secrets

Une étendue de secrets est une collection de secrets identifiée par un nom. Databricks recommande d’aligner les étendues secrètes sur des rôles ou des applications plutôt que sur des individus.

Il existe deux types d’étendue de secret :

  • Azure Key Vault sauvegardé : vous pouvez référencer des secrets stockés dans un coffre de clés Azure à l’aide d’étendues de secrets sauvegardées par Azure Key Vault . L’étendue secrète sauvegardée par Azure Key Vault est une interface en lecture seule du coffre de clés. Vous devez gérer les secrets dans les étendues de secrets sauvegardées par Azure Key Vault dans Azure.
  • Databricks-backed : une étendue secrète databricks sauvegardée est stockée dans une base de données chiffrée détenue et gérée par Azure Databricks.

Après avoir créé une étendue secrète, vous pouvez attribuer des autorisations pour accorder aux utilisateurs l’accès aux étendues de lecture, d’écriture et de gestion.

Créer une étendue de secrets Azure Key Vault

Cette section explique comment créer une étendue de secrets basée sur Azure Key Vault en utilisant le portail Azure et l’interface utilisateur de l’espace de travail Azure Databricks. Vous pouvez aussi créer une étendue de secrets basée sur Azure Key Vault en utilisant l’interface CLI Databricks.

Spécifications

  • Vous devez disposer d’une instance Azure Key Vault. Si vous n’avez pas d’instance de coffre de clés, suivez les instructions dans Créer un coffre de clés à l’aide du portail Azure.
  • Vous devez disposer du rôle Contributeur, Contributeur ou Propriétaire key Vault sur l’instance de coffre de clés Azure que vous souhaitez utiliser pour sauvegarder l’étendue du secret.

Remarque

La création d’une étendue de secrets Azure Key Vault nécessite le rôle Contributeur ou Propriétaire sur l’instance de coffre de clés Azure, même si le service Azure Databricks a déjà obtenu l’accès au coffre de clés.

Si le coffre de clés existe dans un locataire différent de l’espace de travail Azure Databricks, l’utilisateur Azure AD qui crée l’étendue de secrets doit disposer de l’autorisation pour créer des principaux de service dans le locataire du coffre de clés. Sinon, l’erreur suivante s’affiche :

Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}

Configurer votre instance de coffre de clés Azure pour Azure Databricks

  1. Connectez-vous au Portail Azure, recherchez et sélectionnez l’instance du coffre de clés Azure.

  2. Sous Paramètres, cliquez sur l’onglet Configuration d’Access.

  3. Définissez Modèle d’autorisation sur Stratégie d’accès au coffre.

    Remarque

    La création d’un rôle d’étendue de secrets reposant sur Azure Key Vault accorde les autorisations Get et List à l’ID de l’application du service Azure Databricks à l’aide de stratégies d’accès au coffre de clés. Le modèle d’autorisation de contrôle d’accès en fonction du rôle Azure n’est pas pris en charge avec Azure Databricks.

  4. Sous Paramètres, sélectionnez Mise en réseau.

  5. Dans Pare-feu et réseaux virtuels, définissez Autoriser l’accès à partir de : à Autoriser l’accès public à partir de réseaux virtuels spécifiques et des adresses IP.

    Sous Exception, cochez la case Autoriser les services Microsoft approuvés pour contourner ce pare-feu.

    Remarque

    Vous pouvez également définir Autoriser l’accès à partir de : sur Autoriser l’accès public à partir de tous les réseaux.

Créer une étendue de secrets Azure Key Vault

  1. Accédez à https://<databricks-instance>#secrets/createScope. Remplacez <databricks-instance> par l'URL de l'espace de travail de votre déploiement Azure Databricks. Cette URL respecte la casse. Par exemple, scope dans createScope doit utiliser un majuscule S).

    Créer une étendue

  2. Entrez le nom de l’étendue de secrets. Les noms d’étendues de secrets ne respectent pas la casse.

  3. Dans Gérer le principal , sélectionnez Creator ou Tous les utilisateurs de l’espace de travail pour spécifier les utilisateurs disposant de l’autorisation MANAGE sur l’étendue secrète.

    L’autorisation MANAGE permet aux utilisateurs de lire, d’écrire et d’accorder des autorisations sur l’étendue. Votre compte doit avoir le plan Premium pour choisir Creator.

  4. Entrez le nom DNS (par exemple, https://databrickskv.vault.azure.net/) et l'ID de ressource, par exemple :

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Ces propriétés sont disponibles dans l’onglet Paramètres > Propriétés d’un Azure Key Vault dans votre Portail Azure.

  5. Cliquez sur Créer.

  6. Utilisez la commande Databricks CLI databricks secrets list-scopes pour vérifier que l’étendue a bien été créée.

Créer une étendue de secrets reposant sur Databricks

Cette section explique comment créer une étendue secrète à l’aide de l’interface CLI Databricks ( version 0.205 et ultérieure). Vous pouvez également utiliser l’API Secrets.

Noms d’étendue de secret :

  • doit être unique au sein d’un espace de travail ;
  • Doit comporter des caractères alphanumériques, des tirets, des traits de soulignement et @des points, et ne peut pas dépasser 128 caractères.
  • Ne respecte pas la casse.

Les noms d’étendue de secret sont considérés comme non sensibles et sont lisibles par tous les utilisateurs de l’espace de travail.

Pour créer une étendue à l’aide de l’interface CLI Databricks :

databricks secrets create-scope <scope-name>

Par défaut, les étendues sont créées avec l’autorisation GÉRER pour l’utilisateur qui a créé l’étendue. Une fois que vous avez créé une étendue de secret sauvegardée par Databricks, vous pouvez y ajouter des secrets.

Lister les étendues de secrets

Pour dresser la liste des étendues existantes dans un espace de travail à l’aide de l’interface CLI :

databricks secrets list-scopes

Vous pouvez également répertorier les étendues de secrets à l’aide de l’API Secrets.

Supprimer une étendue de secrets

La suppression d’une étendue de secrets entraîne la suppression de tous les secrets et ACL appliqués à l’étendue. Pour supprimer une étendue à l’aide de l’interface CLI, exécutez les opérations suivantes :

databricks secrets delete-scope <scope-name>

Vous pouvez également supprimer une étendue de secrets en tirant parti de l’API Secrets.

Gérer les secrets

Un secret est une paire clé-valeur qui stocke des éléments sensibles à l’aide d’un nom de clé unique dans une étendue secrète.

Cette section explique comment créer une étendue secrète à l’aide de l’interface CLI Databricks ( version 0.205 et ultérieure). Vous pouvez également utiliser l’API Secrets. Les noms de secrets ne respectent pas la casse.

Création d’une clé secrète

La méthode de création d'un secret dépend de l'utilisation d'une portée adossée à Azure Key Vault ou d'une portée adossée à Databricks.

Créer un secret dans une étendue Azure Key Vault

Pour créer un secret dans Azure Key Vault, vous utilisez l’API REST Portail Azure ou Azure Set Secret. Pour obtenir un exemple, consultez l’étape 4 : Ajouter la clé secrète client à Azure Key Vault.

Azure Key Vault

Créer un secret dans une étendue Databricks

Cette section explique comment créer des secrets à l’aide de l’interface CLI Databricks ( version 0.205 et ultérieure). Vous pouvez également utiliser l’API Secrets. Les noms de secrets ne respectent pas la casse.

Lorsque vous créez un secret dans une étendue databricks soutenue, vous pouvez spécifier la valeur secrète de l’une des trois manières suivantes :

  • Spécifiez la valeur sous forme de chaîne à l’aide de l’indicateur –string-value.
  • Entrez le secret lorsque vous y êtes invité de manière interactive (secrets à ligne unique).
  • Passez le secret à l’aide d’une entrée standard (secrets multilignes).

Par exemple :

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

Si vous créez un secret sur plusieurs lignes, vous pouvez transmettre le secret à l’aide d’une entrée standard. Par exemple :

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>

List secrets (Afficher la liste des secrets)

Pour répertorier les secrets dans une étendue donnée :

databricks secrets list-secrets <scope-name>

La réponse affiche des métadonnées sur les secrets, notamment les noms de clés des secrets. Vous utilisez l’utilitaire de secrets (dbutils.secrets) dans un notebook ou un travail pour répertorier cette métadonnée. Par exemple :

dbutils.secrets.list('my-scope')

lire un secret

Vous créez des secrets à l'aide de l'API REST ou du CLI, mais vous devez utiliser l'utilitaire Secrets (dbutils.secrets) dans un notebook ou un job pour lire un secret.

supprimer un secret

Pour supprimer un secret d’une étendue avec l’interface de ligne de commande Databricks :

databricks secrets delete-secret <scope-name> <key-name>

Vous pouvez également utiliser l’API Secrets.

Pour supprimer un secret d'une portée soutenue par Azure Key Vault, utilisez l'API REST Azure SetSecret ou l'interface utilisateur du portail Azure.

Gérer les autorisations d’étendue de secret

Par défaut, l’utilisateur qui crée les étendues secrètes reçoit l’autorisation MANAGE. Cela permet au créateur d’étendue de lire les secrets dans l’étendue, d’écrire des secrets dans l’étendue et de gérer les autorisations sur l’étendue.

Remarque

Les listes de contrôle d’accès de secret se trouvent au niveau de l’étendue. Si vous utilisez des étendues reposant sur Azure Key Vault, les utilisateurs auxquels l’accès est accordé ont accès à tous les secrets dans le Key Vault Azure. Pour restreindre l’accès, utilisez des instances distinctes de coffre de clés Azure.

Cette section explique comment gérer le contrôle d’accès aux secrets à l’aide de Qu’est-ce que l’interface CLI Databricks ? (version 0.205 et versions ultérieures). Vous pouvez également utiliser l’API Secrets. Pour les niveaux d’autorisation des secrets, consultez Listes de contrôle d’accès (ACL) secrètes

Accorder des autorisations d’utilisateur sur une étendue secrète

Pour accorder des autorisations utilisateur sur une étendue secrète à l’aide de l’interface CLI Databricks :

databricks secrets put-acl <scope-name> <principal> <permission>

Le fait de faire une demande pour un principal qui a déjà une autorisation appliquée remplace le niveau d’autorisation existant.

Le champ principal spécifie un principal Azure Databricks existant. Un utilisateur est spécifié à l’aide de son adresse e-mail, un principal de service à l’aide de sa valeur applicationId et un groupe à l’aide de son nom de groupe. Pour plus d’informations, consultez Principal.

Afficher les autorisations d’étendue de secret

Pour afficher toutes les autorisations d’étendue de secret pour une étendue secrète donnée :

databricks secrets list-acls <scope-name>

Pour obtenir les autorisations d’étendue de secret appliquées à un principal pour une étendue secrète donnée :

databricks secrets get-acl <scope-name> <principal>

Si aucune liste de contrôle d’accès n’existe pour le principal et l’étendue donnés, cette requête échoue.

Supprimer une autorisation d’étendue secrète

Pour supprimer une autorisation d’étendue secrète appliquée à un principal pour une étendue secrète donnée :

databricks secrets delete-acl <scope-name> <principal>

Réaction des secrets

Le stockage des informations d’identification en tant que secrets Azure Databricks facilite la protection de vos informations d’identification lorsque vous exécutez des notebooks et travaux. Toutefois, il est facile d’imprimer accidentellement un secret dans des tampons de sortie standard ou d’afficher la valeur pendant l’attribution de variable.

Pour éviter cela, Azure Databricks supprime toutes les valeurs secrètes qui sont lues à l’aide de dbutils.secrets.get(). Quand elles sont affichées dans la sortie de cellule du notebook, les valeurs de secret sont remplacées par [REDACTED].

Par exemple, si vous attribuez une valeur secrète à une variable à l’aide de dbutils.secrets.get() et que vous imprimez ensuite cette variable, celle-ci est remplacée par [REDACTED].

Avertissement

L’expurgation des secrets pour la sortie de cellule de notebook s’applique uniquement aux littéraux. La fonctionnalité d’expurgation des secrets n’empêche pas les transformations délibérées et arbitraires d’un littéral secret. Pour garantir le contrôle approprié des secrets, vous devez utiliser des listes de contrôle d’accès pour limiter les autorisations d’exécution des commandes. Cela empêche l’accès non autorisé aux contextes de bloc-notes partagés.