Aller au contenu principal

Utilisez un secret dans une propriété de configuration Spark ou une variable d'environnement

Cet article fournit des détails sur la manière 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 masqués de la sortie du Notebook et des Logs du Driver Spark et des exécuteurs.

info

Aperçu

Cette fonctionnalité est en aperçu public.

Considérations de sécurité

Databricks ne recommande pas de stocker des secrets dans les variables d'environnement de cluster s'ils ne doivent pas être accessibles à tous les utilisateurs du 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 des autorisations CAN ATTACH TO sur un cluster ou des autorisations d'exécution sur un Notebook peut lire les variables d'environnement du cluster à partir du Notebook.

  • 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 des autorisations d'exécution sur un notebook peut lire les propriétés de configuration Spark à partir du notebook. Ceci inclut les utilisateurs qui n'ont pas l'autorisation directe de lire un secret.

  • Les secrets ne sont pas masqués des flux de log stdout et stderr du Driver Spark. Pour protéger les données sensibles, par défaut, les logs du Driver Spark ne sont consultables que par les utilisateurs disposant de l'autorisation CAN MANAGE sur les clusters Job, en mode d'accès dédié et en mode d'accès standard.

    Sur les clusters en mode d'accès partagé sans isolation, les logs du Driver Spark peuvent être consultés par les utilisateurs disposant de l'autorisation CAN ATTACH TO ou CAN MANAGE. Pour limiter l'accès aux logs aux seuls utilisateurs disposant de l'autorisation CAN MANAGE, définissez spark.databricks.acl.needAdminPermissionToViewLogs sur true.

Exigences

Les exigences suivantes s'appliquent au référencement de secrets dans les propriétés de configuration Spark et les variables d'environnement :

  • Les propriétaires de clusters doivent disposer de l'autorisation CAN READ sur le Secret Scope.
  • Vous devez être propriétaire d'un 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 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 :

ini
spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

Remplacer :

  • <scope-name> avec le nom du Secret Scope.
  • <secret-name> avec le nom unique du secret dans le périmètre.
  • <property-name> avec la propriété de configuration Spark

Chaque propriété de configuration Spark ne peut faire référence qu'à un seul secret, mais vous pouvez configurer plusieurs propriétés Spark pour faire référence à des secrets.

Par exemple :

ini
spark.password {{secrets/scope1/key1}}

Pour récupérer le secret dans le notebook et l'utiliser :

Python
spark.conf.get("spark.password")

Référencer un secret dans une variable d'environnement

Vous spécifiez un chemin secret dans une variable d'environnement au format suivant :

ini
<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 les variables d’environnement soient accessibles à tous les utilisateurs de clusters, ils sont masqués de l’affichage en texte brut, de manière similaire aux autres références de secrets.

Les variables d'environnement qui référencent des secrets sont accessibles à partir d'un script d'initialisation à l'échelle du cluster. Consultez 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 secret :

ini
SPARKPASSWORD={{secrets/scope1/key1}}

Pour récupérer le secret dans un script d'initialisation, accédez à $SPARKPASSWORD en utilisant le modèle suivant :

Bash
if [ -n "$SPARKPASSWORD" ]; then
# code to use ${SPARKPASSWORD}
fi