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 :
- Créer une étendue de secrets. Une étendue de secrets est une collection de secrets identifiée par un nom.
- Ajouter des secrets à l’étendue
- Attribuez des autorisations sur l’étendue du secret.
- 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
Connectez-vous au Portail Azure, recherchez et sélectionnez l’instance du coffre de clés Azure.
Sous Paramètres, cliquez sur l’onglet Configuration d’Access.
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.
Sous Paramètres, sélectionnez Mise en réseau.
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
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
danscreateScope
doit utiliser un majusculeS
).Entrez le nom de l’étendue de secrets. Les noms d’étendues de secrets ne respectent pas la casse.
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.
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.
Cliquez sur Créer.
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.
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.