Fournisseur d'identifiants Secret Manager

Ce document explique comment utiliser Secret Manager comme magasin d'identifiants avec Google Cloud Serverless pour Apache Spark afin de stocker et d'accéder en toute sécurité aux données sensibles traitées par les charges de travail sans serveur.

Présentation

Le Secret Manager peut protéger vos données sensibles, telles que vos clés API, vos mots de passe et vos certificats. Vous pouvez l'utiliser pour gérer, auditer et accéder à vos secrets dans Google Cloud.

Lorsque vous exécutez une charge de travail par lot Serverless pour Apache Spark, vous pouvez la configurer pour qu'elle utilise un secret Secret Manager à l'aide du fournisseur d'identifiants Secret Manager de Dataproc.

Disponibilité

Cette fonctionnalité est disponible pour les versions d'exécution Serverless pour Apache Spark 1.2.29+, 2.2.29+ ou ultérieures versions d'exécution.

Terminologie

Le tableau suivant décrit les termes utilisés dans ce document.

Terme Description
Secret Un secret Secret Manager est un objet de projet global qui contient un ensemble de métadonnées et de versions de secrets. Vous pouvez les gérer et y accéder sous forme de chaînes de texte ou blobs binaires.
Credential Dans Hadoop et d'autres charges de travail Dataproc, un identifiant se compose d'un nom d'identifiant (ID) et d'une valeur d'identifiant (mot de passe). Un ID d'identifiant et une valeur d'identifiant correspondent à un Secret Manager ID de secret et à une valeur de secret (version de secret).

Autorisations

Dataproc vérifie si les secrets facultatifs suivants existent :

  • fs-gs-encryption-key
  • fs-gs-encryption-key-hash
  • fs-gs-proxy-password
  • fs-gs-proxy-username

Pour vous assurer que le compte de service de VM Dataproc est autorisé à vérifier les secrets fs-gs, ajoutez le rôle Accesseur de secrets Secret Manager avec la condition suivante au compte de service :

{
  "expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")",
  "title": "gsmkeycondition",
  "description": "Permission to access Dataproc secrets"
}

Utilisation

Vous pouvez configurer les composants Hadoop et autres composants OSS compatibles pour qu'ils fonctionnent avec Secret Manager en définissant les propriétés suivantes lorsque vous envoyez une charge de travail Serverless pour Apache Spark :

  • Chemin d'accès du fournisseur (obligatoire) : la propriété de chemin d'accès du fournisseur, spark.hadoop.hadoop.security.credential.provider.path, est une liste d'un ou plusieurs URI de fournisseur d'identifiants séparés par une virgule qui sont parcourus pour résoudre un identifiant.

    --properties=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    
    • Le scheme du chemin d'accès du fournisseur indique le type de fournisseur d'identifiants. Les schémas Hadoop incluent jceks://, user:// et localjceks://. Utilisez le schéma gsm:// pour rechercher des identifiants dans Secret Manager.
  • Opérateur de substitution de point : le service Secret Manager n'autorise pas les points (.) dans les noms de secrets. Toutefois, certains composants de logiciels Open Source (OSS) utilisent des points dans leurs clés d'identifiants. Pour contourner cette limitation, activez cette propriété afin de remplacer les points (.) par des traits d'union (-) dans les noms d'identifiants. Ainsi, les identifiants OSS dont le nom contient des points peuvent être stockés et récupérés correctement à partir de Secret Manager.

    Par exemple, si une clé d'identifiant OSS est a.b.c, vous devez la modifier en a-b-c lorsque vous la stockez dans Secret Manager.

    --properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

    Il s'agit d'une propriété facultative. La valeur par défaut est false. Pour les clés d'identifiants dont le nom ne contient pas d'opérateur de point (.), cette propriété peut être ignorée en toute sécurité.

  • Version du secret : les secrets dans Secret Manager peuvent avoir plusieurs versions (valeurs). Utilisez cette propriété pour accéder à une version de secret spécifique pour un accès stable dans les environnements de production.

    --properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-version=1
    

    Il s'agit d'une propriété facultative. Par défaut, Secret Manager accède à la version LATEST, qui correspond à la dernière valeur du secret au moment de l'exécution. Si votre cas d'utilisation consiste à toujours accéder à la version LATEST d'un secret, cette propriété peut être ignorée en toute sécurité.

Exécuter une charge de travail par lot avec le fournisseur d'identifiants Secret Manager

Pour envoyer une charge de travail par lot qui utilise le fournisseur d'identifiants Secret Manager, exécutez la commande suivante en local ou dans Cloud Shell.

gcloud dataproc batches submit spark \
    --region=REGION \
    --jars=JARS \
    --class=MAIN_CLASS \
    --properties="spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
    ...other flags as needed...

Remplacez les éléments suivants :

  • REGION : région Compute Engine dans laquelle votre charge de travail s'exécute
  • JARS : chemin d'accès au fichier JAR de la charge de travail
  • MAIN_CLASS : classe principale du fichier JAR
  • PROJECT_ID : ID de votre projet, indiqué dans la section Informations sur le projet du Google Cloud tableau de bord de la console