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, consulter et auditer vos secrets dansGoogle Cloud.
Vous pouvez configurer un cluster ou un job Dataproc pour qu'il utilise un secret Secret Manager à l'aide du fournisseur d'identifiants Secret Manager.
Disponibilité
Cette fonctionnalité est disponible pour les clusters Dataproc créés avec les versions d'image 2.0.97+, 2.1.41+, 2.2.6+ ou les versions d'image Dataproc ultérieures.
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 applications hébergées sur Dataproc, un identifiant se compose d'un nom (ID) et d'une valeur (mot de passe). Un ID et une valeur d'identifiant correspondent à un ID et une valeur de secret (version du secret) Secret Manager. |
Utilisation
Vous pouvez configurer Hadoop et d'autres composants OSS pour qu'ils fonctionnent avec Secret Manager en définissant les propriétés suivantes lorsque vous créez un cluster Dataproc ou envoyez un job.
Chemin d'accès au fournisseur : la propriété de chemin d'accès au fournisseur,
hadoop.security.credential.provider.path
, est une liste d'un ou de plusieurs URI de fournisseur d'identifiants séparés par une virgule, qui est parcourue pour résoudre un identifiant.--properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- Le
scheme
dans le chemin du fournisseur indique le type de fournisseur d'identifiants. Les schémas Hadoop incluentjceks://
,user://
etlocaljceks://
. Utilisez le schémagsm://
pour rechercher des identifiants dans Secret Manager.
- Le
Opérateur de substitution de point : le service Secret Manager n'autorise pas les points (
.
) dans les noms secrets. Toutefois, certains composants Open Source (OSS) utilisent des points dans leurs clés d'identifiants. Pour résoudre cette limitation, activez cette propriété afin de remplacer les points (.
) par des traits d'union (-
) dans les noms des identifiants. Cela permet de s'assurer que les identifiants OSS dont le nom contient des points peuvent être stockés et récupérés correctement depuis Secret Manager.Par exemple, si une clé d'identifiant OSS est
a.b.c
, vous devez la modifier ena-b-c
lorsque vous la stockez dans Secret Manager.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Cette propriété est facultative. La valeur par défaut est
false
. Pour les clés d'identifiants dont le nom ne contient pas d'opérateur point (.
), cette propriété peut être ignorée sans risque.Version du secret : les secrets dans Secret Manager peuvent avoir plusieurs versions (valeurs). Utilisez cette propriété pour accéder à une version spécifique d'un secret afin d'obtenir un accès stable dans les environnements de production.
--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Cette propriété est facultative. Par défaut, Secret Manager accède à la version
LATEST
, qui correspond à la dernière valeur du secret lors de l'exécution. Si votre cas d'utilisation consiste à toujours accéder à la versionLATEST
d'un secret, vous pouvez ignorer cette propriété sans risque.
Créer un cluster Dataproc avec le fournisseur d'identifiants Secret Manager
- Exécutez la commande suivante en local ou dans Cloud Shell pour créer un cluster Dataproc avec les propriétés requises.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Remarques :
- CLUSTER_NAME : nom du nouveau cluster.
- REGION : région Compute Engine dans laquelle votre charge de travail s'exécutera.
- PROJECT_ID : l'ID de votre projet est indiqué dans la section Informations sur le projet du tableau de bord de la consoleGoogle Cloud .
Envoyer un job Dataproc avec un fournisseur d'identifiants Secret Manager
Exécutez la commande suivante en local ou dans Cloud Shell pour envoyer une tâche Dataproc avec les propriétés requises.
gcloud dataproc jobs submit CLUSTER_NAME \ --region=REGION \ --properties="hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed... \ -- job-args
Remarques :
- CLUSTER_NAME : nom du cluster qui exécutera le job.
- REGION : région Compute Engine dans laquelle votre charge de travail s'exécutera.
- PROJECT_ID : l'ID de votre projet est indiqué dans la section Informations sur le projet du tableau de bord de la consoleGoogle Cloud .
Utiliser Secret Manager avec Hive Metastore
La propriété Hive Metastore, javax.jdo.option.ConnectionPassword
, contient le mot de passe utilisé pour authentifier l'accès à la base de données du metastore. Le mot de passe est enregistré au format texte dans hive-site.xml
, ce qui représente un risque de sécurité. Une bonne pratique de production consiste à stocker le mot de passe dans Secret Manager, puis à mettre à jour le fichier de configuration hive-site.xml
pour permettre au service Hive Metastore de lire le mot de passe à partir de Secret Manager.
Les exemples suivants vous montrent comment utiliser Secret Manager dans différents scénarios Hive Metastore.
Créer un cluster avec un metastore local
- Exécutez la commande suivante en local ou dans Cloud Shell pour créer un cluster Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Remarques :
- CLUSTER_NAME : nom du nouveau cluster.
- REGION : région Compute Engine dans laquelle votre charge de travail s'exécutera.
Créez un secret à l'aide de Secret Manager ou de la commande
hadoop credential
.Solution alternative 1 : utiliser Secret Manager pour créer un secret.
- Nom du secret :
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valeur du code secret :
METASTORE_PASSWORD
.
- Nom du secret :
Autre option : Utilisez la commande
hadoop credential
pour créer un secret.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD : comme Secret Manager n'accepte pas l'opérateur point(
.
), remplacez tous les points(.
) du mot de passe par des tirets(-
).
- METASTORE_PASSWORD : comme Secret Manager n'accepte pas l'opérateur point(
Vérifiez que le secret existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Utilisez un éditeur de texte pour supprimer la propriété
javax.jdo.option.ConnectionPassword
du fichierhive-site.xml
, puis ajoutez les propriétéshadoop.security.credential.provider.path
ethadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
au fichier.Exemples de propriétés :
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Redémarrez le metastore Hive.
sudo systemctl restart hive-metastore
Créer un cluster avec un metastore Hive externe
Exécutez la commande suivante en local ou dans Cloud Shell pour créer un cluster Dataproc avec les propriétés de cluster suivantes. Utilisez ce cluster comme metastore Hive externe pour les jobs Hive exécutés à partir d'autres clusters Dataproc pour les charges de travail Spark Hive.
gcloud dataproc clusters create METASTORE_CLUSTER_NAME \ --region=REGION \ --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \ ...other flags as needed...
Créez un secret à l'aide de Secret Manager ou de la commande
hadoop credential
.- Solution alternative 1 : utiliser Secret Manager pour créer un secret.
- Nom du secret :
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valeur du code secret :
METASTORE_PASSWORD
.
- Nom du secret :
- Autre option : Utilisez la commande
hadoop credential
pour créer un secret.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD : Secret Manager ne prenant pas en charge l'opérateur point(
.
), remplacez les points(.
) du mot de passe par des tirets(-
).
- METASTORE_PASSWORD : Secret Manager ne prenant pas en charge l'opérateur point(
- Solution alternative 1 : utiliser Secret Manager pour créer un secret.
Vérifiez que le secret existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
Créer un cluster pour exécuter des jobs Hive qui se connectent à un metastore externe
- Exécutez la commande suivante en local ou dans Cloud Shell pour créer un cluster Dataproc avec les propriétés de cluster suivantes.
Utilisez ce cluster pour exécuter des jobs Hive qui se connectent au metastore externe sur un autre cluster Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://METASTORE_CLUSTER_NAME-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
Commandes d'identifiants Hadoop
Vous pouvez utiliser SSH pour vous connecter au nœud maître Dataproc et utiliser la commande hadoop credential
afin de créer, lister et gérer des secrets.
Les commandes hadoop credential
utilisent le format suivant : hadoop credential SUBCOMMAND OPTIONS
.
Dans les exemples suivants, l'indicateur -provider
est ajouté pour spécifier le type et l'emplacement du fournisseur (le magasin de fournisseurs). Le schéma gsm://
spécifie Secret Manager.
Créez un secret avec l'ID de secret spécifié. La commande ne crée pas le secret si l'ID de secret spécifié existe déjà. Ce comportement est conforme à l'API Hadoop
CredentialProvider
.hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Répertorie les secrets stockés dans un projet.
hadoop credential list -provider gsm://projects/PROJECT_ID
Vérifiez si un secret existe dans un projet avec une valeur spécifiée.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
Recherchez une version de secret spécifique dans un fichier de configuration.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
CONFIG_FILE : fichier XML qui définit
hadoop.security.credstore.google-secret-manager.secret-version
.Supprimez toutes les versions d'un secret dans un projet.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
Pour en savoir plus, consultez le guide des commandes Hadoop.
Étapes suivantes
- Consultez la documentation Hive.