Secrets
Un secret est une paire clé-valeur qui stocke le matériel secret, avec un nom de clé unique au sein d’une étendue secrète. Chaque étendue est limitée à 1000 secrets. La taille maximale autorisée pour la valeur du secret est de 128 ko.
Consultez également l’API Secrets.
Créer un secret
Les noms de secrets ne respectent pas la casse.
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 Définir le secret Azure ou l’interface utilisateur du portail Azure.
Créer un secret dans une étendue Databricks
Pour créer un secret dans une portée soutenue par Databricks en utilisant la CLI de Databricks (version 0.7.1 et supérieure) :
databricks secrets put --scope <scope-name> --key <key-name>
Un éditeur s’ouvre et affiche le contenu comme suit :
# ----------------------------------------------------------------------
# Do not edit the above line. Everything that follows it will be ignored.
# Please input your secret value above the line. Text will be stored in
# UTF-8 (MB4) form and any trailing new line will be stripped.
# Exit without saving will abort writing secret.
Collez votre valeur secrète au-dessus de la ligne, puis enregistrez et quittez l’éditeur. Votre entrée est supprimée des commentaires et stockée associée à la clé dans l’étendue.
Si vous émettez une demande d’écriture avec une clé qui existe déjà, la nouvelle valeur remplace la valeur existante.
Vous pouvez également fournir une clé secrète à partir d’un fichier ou à partir de la ligne de commande. Pour plus d’informations sur l’écriture de secrets, consultez secrets CLI.
List secrets (Afficher la liste des secrets)
Pour répertorier les secrets dans une étendue donnée :
databricks secrets list --scope <scope-name>
La réponse affiche des informations de métadonnées sur le secret, telles que le nom de la clé secrète et la dernière mise à jour à l’horodateur (en millisecondes depuis l’époque). Vous utilisez l' utilitaire secrets (dbutils.secrets) dans un Notebook ou un travail pour lire un secret. Par exemple :
databricks secrets list --scope jdbc
Key name Last updated
---------- --------------
password 1531968449039
username 1531968408097
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 --scope <scope-name> --key <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.
Utiliser un secret dans une propriété de configuration Spark ou une variable d’environnement
Important
Cette fonctionnalité est disponible en préversion publique.
Notes
Disponible en support étendu Databricks Runtime 6.4 et versions ultérieures.
Vous pouvez référencer un secret dans une propriété de configuration Spark ou une variable d’environnement. Les secrets récupérés sont expurgés de la sortie du bloc-notes et des journaux du pilote et de l'exécuteur Spark.
Important
Gardez à l’esprit les implications de sécurité suivantes lorsque vous référencez des secrets dans une propriété de configuration Spark ou une variable d’environnement :
Si le contrôle d’accès à la table n’est pas activé sur un cluster, tout utilisateur disposant d’autorisations d’attachement à un cluster ou d’exécuter des autorisations sur un ordinateur portable peut lire les propriétés de configuration Spark à partir du bloc-notes. Cela comprend les utilisateurs qui n’ont pas d’autorisation directe pour lire une clé secrète. Databricks recommande l’activation du contrôle d’accès aux tables sur tous les clusters ou la gestion de l’accès aux secrets à l’aide d' étendues secrètes.
Même lorsque le contrôle d’accès aux tables est activé, les utilisateurs disposant de l’autorisation de joindre des autorisations sur un cluster ou d’exécuter des autorisations sur un Notebook peuvent lire les variables d’environnement du cluster à partir du bloc-notes. Databricks ne recommande pas de stocker les secrets dans les variables d’environnement de cluster s’ils ne doivent pas être disponibles pour tous les utilisateurs sur le cluster.
Les secrets ne sont pas expurgés du journal
stdout
et des fluxstderr
du pilote Spark. Par défaut, les journaux des pilotes Spark sont visibles par les utilisateurs avec l’une des autorisations de niveau de clustersuivantes :- Attacher à
- Redémarrer
- Gérer
Vous pouvez éventuellement limiter le nombre de personnes autorisées à lire les journaux des pilotes Spark aux utilisateurs avec l’autorisation de gestion de en définissant la propriété de configuration Spark du cluster.
spark.databricks.acl.needAdminPermissionToViewLogs true
Exigences et limitations
Les exigences et limitations suivantes s’appliquent au référencement des secrets dans les propriétés de configuration Spark et les variables d’environnement :
- Les propriétaires du cluster doivent disposer d’une autorisation de lecture sur l’étendue du secret.
- Seuls les propriétaires de cluster peuvent ajouter une référence à un secret dans une propriété de configuration Spark ou une variable d’environnement et modifier l’étendue et le nom existants. Les propriétaires modifient un secret à l’aide de l’API Secrets. Vous devez redémarrer votre cluster pour récupérer à nouveau le secret.
- Les utilisateurs disposant de l’autorisation peut gérer sur le cluster peuvent supprimer une variable d’environnement ou une propriété de configuration secret Spark.
Syntaxe pour référencer des secrets dans une propriété de configuration Spark ou une variable d’environnement
Vous pouvez faire référence à un secret à l’aide d’un nom de variable valide ou d’une propriété de configuration Spark. Azure Databricks permet un comportement spécial pour les variables faisant référence à des secrets en fonction de la syntaxe de la valeur définie, et non du nom de la variable.
La syntaxe de la valeur de la propriété de configuration Spark ou de la variable d’environnement doit être {{secrets/<scope-name>/<secret-name>}}
. La valeur doit commencer par {{secrets/
et se terminer par }}
.
Les parties variables de la propriété de configuration Spark ou de la variable d’environnement sont les suivantes :
<scope-name>
: Nom de l’étendue à laquelle le secret est associé.<secret-name>
: Nom unique du secret dans l’étendue.
Par exemple : {{secrets/scope1/key1}}
.
Notes
- Il ne doit y avoir aucun espace entre les accolades. S’il y a des espaces, ils sont traités dans le cadre de l’étendue ou du nom de la clé secrète.
Référencer un secret avec une propriété de configuration Spark
Vous spécifiez une référence à un secret dans une propriété de configuration Spark au format suivant :
spark.<property-name> {{secrets/<scope-name>/<secret-name>}}
Toute <property-name>
de configuration Spark peut référencer un secret. Chaque propriété de configuration Spark ne peut référencer qu’un seul secret, mais vous pouvez configurer plusieurs propriétés Spark pour référencer des secrets.
Exemple
Vous définissez une configuration Spark pour référencer un secret :
spark.password {{secrets/scope1/key1}}
Pour extraire le secret dans le bloc-notes et l’utiliser :
Python
spark.conf.get("spark.password")
SQL
SELECT ${spark.password};
Référencer un secret dans une variable d’environnement
Vous spécifiez un chemin d’accès de secret dans une variable d’environnement au format suivant :
<variable-name>={{secrets/<scope-name>/<secret-name>}}
Vous pouvez utiliser n’importe quel nom de variable valide lorsque vous référencez un secret. L’accès aux secrets référencés dans les variables d’environnement est déterminé par les autorisations de l’utilisateur qui a configuré le cluster. Les secrets stockés dans les variables d’environnement sont accessibles par tous les utilisateurs du cluster, mais ils sont supprimés de l’affichage en texte clair, comme les secrets référencés ailleurs.
Les variables d’environnement qui référencent des secrets sont accessibles à partir d’un script init étendu au cluster.
Exemple
Vous définissez une variable d’environnement pour référencer un secrets :
SPARKPASSWORD={{secrets/scope1/key1}}
Pour extraire le secret dans un script init, accédez $SPARKPASSWORD
à l’aide du modèle suivant :
if [ -n "$SPARKPASSWORD" ]; then
# code to use ${SPARKPASSWORD}
fi