Aller au contenu principal

Configurer des secrets externes dans Unity Catalog

info

Bêta

Cette fonctionnalité est en version Bêta. Les administrateurs du workspace peuvent contrôler l'accès à cette fonctionnalité depuis la page Aperçus . Consultez Gérer les aperçus Databricks.

Cette page montre comment connecter un schéma Unity Catalog à un gestionnaire de secrets externe afin que ses valeurs secrètes restent dans AWS Secrets Manager.

Pour en savoir plus sur le fonctionnement des secrets externes et leurs limitations, consultez Secrets externes dans Unity Catalog.

Avant de commencer

  • Respectez les exigences relatives aux secrets Unity Catalog.

  • La version bêta des secrets externes doit être activée pour votre workspace.

  • Le schéma que vous souhaitez sauvegarder en externe ne doit contenir aucun secret géré par Databricks. Supprimez les secrets existants avant de changer de backend.

  • Vous devez disposer d'une connexion Unity Catalog à votre gestionnaire de secrets externe et d'un identifiant de service Unity Catalog que la connexion utilise pour s'authentifier. Pour les créer, vous devez disposer de USE CONNECTION sur une connexion existante ou de CREATE CONNECTION sur le métastore pour en créer une, ainsi qu'un accès à un identifiant de service, ou de CREATE CREDENTIAL sur le métastore pour en créer une.

  • La prise en charge d’AWS Secrets Manager est disponible uniquement sur Databricks sur AWS, à l’aide d’une connexion AWS_SECRETS_MANAGER. Le gestionnaire de secrets doit se trouver dans la région que vous configurez sur la connexion.

Configurer des secrets externes

Créer un identifiant de service

La connexion s'authentifie auprès de votre gestionnaire de secrets externe avec une information d'identification de service Unity Catalog.

Créez l’identifiant de service et son rôle IAM comme décrit dans Create service credentials, en incluant la politique de confiance requise. Attachez la politique d’autorisation suivante au rôle afin qu’il puisse lire vos secrets dans AWS Secrets Manager. Remplacez <AWS-ACCOUNT-ID> et <AWS-IAM-ROLE-NAME> par l’ID du compte et le nom du rôle.

JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadAllSecrets",
"Effect": "Allow",
"Action": ["secretsmanager:ListSecrets", "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue"],
"Resource": "*"
},
{
"Sid": "SelfAssume",
"Effect": "Allow",
"Action": ["sts:AssumeRole"],
"Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"]
}
]
}

Créer une connexion

Créez une connexion Unity Catalog qui référence l’identifiant de service de l’étape précédente et pointe vers votre gestionnaire de secrets externe.

  1. Dans Databricks, ouvrez l’ Explorateur de catalogues , cliquez sur le menu + et sélectionnez Créer une connexion .
  2. Saisissez un Nom de connexion et sélectionnez le type de connexion AWS Secrets Manager .
  3. Sélectionnez l'identifiant de service avec lequel vous authentifier et définissez la région AWS de votre gestionnaire de secrets.
  4. Cliquez sur « Créer ».
remarque

Make sure the service credential's permissions and the connection's tag filter cover the same secrets. If the role can list a secret but cannot read its value, Unity Catalog imports the secret but reads of it fail.

Pour n'afficher qu'un sous-ensemble de vos secrets dans Unity Catalog, ajoutez un filtre de tag à la connexion. Voir Filtrer les secrets importés par tag.

Associer un schéma à la connexion

Configurez le backend de secret du schéma dans l’explorateur de catalogues.

  1. Dans Databricks, ouvrez Catalog Explorer et accédez au schéma.

  2. Dans les détails du schéma, localisez le paramètre du gestionnaire de secrets externes et cliquez sur Activer .

    Le schéma ne doit contenir aucun secret géré par Databricks. Si c’est le cas, supprimez-les d’abord. Activer reste désactivé tant que le schéma ne contient aucun secret.

  3. Sélectionnez la connexion que vous avez créée à l’étape précédente, puis confirmez.

Le schéma est désormais pris en charge par votre gestionnaire de secrets externe et ses secrets apparaissent dans Unity Catalog.

Pour pointer le schéma vers une connexion différente, utilisez Modifier . Pour rétablir le schéma vers le stockage géré par Databricks, modifiez le schéma et désactivez les secrets externes.

La définition ou la modification du backend de secret d’un schéma nécessite USE CATALOG sur le catalogue parent, la propriété du schéma ou MANAGE sur celui-ci, et USE CONNECTION sur la connexion.

Lire les secrets externes

Une fois le schéma sauvegardé en externe, ses secrets apparaissent dans Unity Catalog et vous pouvez les lire comme n’importe quel autre secret Unity Catalog. Le listage d’un schéma Trigger un import ; ainsi, un secret nouvellement ajouté n’apparaît qu’après le listage suivant. Les commandes de lecture sont identiques sur les deux clouds.

dbutils applique la rédaction des secrets et constitue la méthode recommandée pour lire une valeur. Nécessite Databricks Runtime 17.3 LTS ou une version ultérieure, ou la version 4 ou une version ultérieure de l’environnement serverless.

Python
# List the secrets in the schema
all_secrets = dbutils.secrets.list(catalog="main", schema="default")

# Read a specific secret value from the external secret manager
my_secret = dbutils.secrets.get(catalog="main", schema="default", key="example_secret")

Vous pouvez également parcourir et lister les secrets externes dans Catalog Explorer, de la même manière que les secrets gérés par Databricks. Voir Lire un secret.

Si un secret n’apparaît pas encore dans Unity Catalog, vous pouvez toujours le lire par son nom. Indiquez le nom tel qu’il apparaît dans le gestionnaire de secrets externe, avec les substitutions de caractères issues de Restrictions de nommage appliquées.

Par exemple, pour un secret AWS nommé myOrg/mySecret.v3, lisez-le avec :

Python
dbutils.secrets.get(catalog="my_catalog", schema="my_schema", key="myOrg|mySecret:v3")

Filtrer les secrets importés par tag

Pour n'afficher qu'une partie des secrets auxquels la connexion peut accéder, filtrez par tag de ressource AWS. Définissez les options de tag sur la connexion lors de sa création ou de sa modification :

  • tag_key: n’afficher que les secrets qui portent cette clé de tag.
  • tag_value: Facultatif. Lorsque vous le définissez avec tag_key, Unity Catalog affiche uniquement les secrets dont le tag correspond à la clé et à la valeur. Lorsque vous l’omettez, Unity Catalog affiche tous les secrets avec tag_key indépendamment de la valeur.

La correspondance des tags est sensible à la casse et utilise l’égalité exacte des chaînes.

Le filtre de tag de connexion contrôle uniquement les secrets affichés par Unity Catalog ; pour restreindre également les secrets que l’identifiant peut lire, ajoutez une condition de tag (secretsmanager:ResourceTag) à la politique d’autorisation du rôle IAM.

Lorsque vous créez ou modifiez la connexion AWS Secrets Manager, ajoutez l’option tag_key et, éventuellement, tag_value en tant qu’options de connexion.

Ressources supplémentaires