Utiliser un secret dans une propriété de configuration Spark ou une variable d’environnement
Cet article fournit des détails sur la façon de 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
Cette fonctionnalité est disponible en préversion publique.
Considérations de sécurité
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. 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 :
Tout utilisateur disposant d’autorisations CAN ATTACH TO sur un cluster ou exécuter des autorisations sur un notebook peut lire des variables d’environnement de cluster à partir du bloc-notes.
Si le contrôle d’accès aux tables n’est pas activé sur un cluster, tout utilisateur disposant des autorisations CAN ATTACH TO sur un cluster ou Exécuter des autorisations sur un notebook 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.
Les secrets ne sont pas supprimés du journal
stdout
etstderr
des flux du pilote Spark. Pour protéger des données sensibles, les journaux de pilote Spark sont affichables par défaut uniquement par des utilisateurs ayant une autorisation PEUT GÉRER sur un travail, un mode d’accès utilisateur unique et des clusters en mode d’accès partagé.Sur des clusters en mode d’accès Aucune isolation partagée, les utilisateurs peuvent afficher des journaux de pilote Spark avec l’autorisation PEUT ATTACHER À ou PEUT GÉRER. Pour limiter les utilisateurs qui peuvent lire les journaux aux seuls utilisateurs avec l’autorisation PEUT GÉRER, définissez
spark.databricks.acl.needAdminPermissionToViewLogs
surtrue
.
Spécifications
Les exigences 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 de l’autorisation de CAN READ (autorisation de lecture) sur l’étendue du secret.
- Vous devez être propriétaire du cluster pour ajouter ou modifier un secret dans une propriété de configuration Spark ou une variable d’environnement.
- Si un secret est mis à jour, vous devez redémarrer votre cluster pour récupérer à nouveau le secret.
- Vous devez disposer de l’autorisation CAN MANAGE sur le cluster pour supprimer une propriété de configuration Spark secrète ou une variable d’environnement.
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>}}
Remplacez :
<scope-name>
avec le nom de l’étendue du secret.<secret-name>
avec le nom unique du secret dans l’étendue.<property-name>
avec la propriété de configuration Spark
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.
Par exemple :
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. Bien que les secrets stockés dans des variables d’environnement soient accessibles à tous les utilisateurs du cluster, ils sont supprimés de l’affichage en texte clair, comme d’autres références secrètes.
Les variables d’environnement qui référencent des secrets sont accessibles à partir d’un script init étendu au cluster. Voir Définir et utiliser des variables d'environnement avec des scripts d'initialisation.
Par 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