Partager via


Gestion des secrets

Lorsque vous accédez à des sources de données externes via JDBC, l’authentification est souvent nécessaire. Au lieu d’entrer des informations d’identification directement dans des notebooks, vous pouvez stocker en toute sécurité les informations d’identification à l’aide des secrets Databricks et les référencer dans vos blocs-notes et travaux. Cette approche améliore la sécurité et simplifie la gestion des informations d’identification. Cette page fournit une vue d’ensemble des secrets Databricks.

Remarque

Databricks recommande d’utiliser Unity Catalog pour configurer l’accès aux données dans le stockage cloud. Consultez Se connecter au stockage d’objets cloud et aux services à l’aide du catalogue Unity.

Vue d’ensemble des secrets

Pour configurer et utiliser des secrets, vous devez :

  1. Créez 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. Référencez les secrets dans votre code.

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 de l'espace de travail, les créateurs de secrets, et les utilisateurs avec les permissions nécessaires peuvent accéder et lire les secrets de Databricks. Bien que Databricks tente de masquer les valeurs secrètes dans les sorties du notebook, il n’est pas possible d’empêcher complètement ces utilisateurs d’afficher le contenu secret. Attribuez toujours des autorisations d’accès secret soigneusement pour protéger les informations sensibles.

Gérer les étendues des 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 sauvegardée par Databricks est stockée dans une base de données chiffrée détenue et gérée par Azure Databricks.

Après avoir créé un espace de secrets, vous pouvez attribuer des autorisations pour accorder aux utilisateurs l'accès nécessaire pour lire, écrire et gérer les espaces de secrets.

Créer une étendue de secrets reposant sur Azure Key Vault

Cette section explique comment créer un espace de secrets soutenu par 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 de Key Vault sur l’instance Azure Key Vault que vous souhaitez utiliser pour sauvegarder la portée du secret.

Remarque

Créer une étendue de secrets soutenue par Azure Key Vault nécessite le rôle de Contributeur ou de Propriétaire sur le 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 reposant sur Azure Key Vault

  1. Atteindre https://<databricks-instance>#secrets/createScope. Remplacez <databricks-instance> par l'URL de l'espace de travail de votre déploiement Azure Databricks. Cette URL est sensible à 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 Créateur ou Tous les utilisateurs de l’espace de travail pour spécifier quels utilisateurs ont l'autorisation de gestion sur le domaine secret.

    L'autorisation MANAGE permet aux utilisateurs de lire, d'écrire et d'accorder des autorisations sur le périmètre. 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 CLIdatabricks 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 se composer de caractères alphanumériques, de tirets, de traits de soulignement, de points et @, et ne doit pas dépasser 128 caractères.
  • Ne respectent 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 espaces 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éer un secret

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.

Créer un secret dans une étendue Databricks

Cette section explique comment créer un secret à l’aide de l’interface CLI Databricks (version 0.205 et ultérieure) ou dans un notebook à l’aide du Kit de développement logiciel (SDK) Databricks pour Python. Vous pouvez également utiliser l’API Secrets. Les noms de secrets ne respectent pas la casse.

Interface CLI de Databricks

Lorsque vous créez un secret dans une étendue prise en charge par Databricks, 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 <scope-name> <key-name>

SDK Databricks pour Python

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")

Lire un secret

Cette section explique comment lire un secret à l’aide de l’interface CLI Databricks (version 0.205 et ultérieure) ou dans un notebook à l’aide de l’utilitaire Secrets (dbutils.secrets).

Interface CLI de Databricks

Pour lire la valeur d’un secret à l’aide de l’interface CLI Databricks, vous devez décoder la valeur encodée en base64. Vous pouvez utiliser jq pour extraire la valeur et base --decode le décoder :

databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode

Utilitaire secrets (dbutils.secrets)

password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")

Lister les secrets

Pour répertorier les secrets dans un domaine donné :

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 une tâche pour répertorier ces métadonnées. Par exemple :

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

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 secret à l’aide de l’interface CLI Databricks (version 0.205 et ultérieure). Vous pouvez également utiliser l’API Secrets. Pour les niveaux d’autorisation secrets, consultez ACL secrètes

Accorder des autorisations d'utilisateur sur un périmètre secret

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édaction 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 secret codé. 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.