Présentation
Secret Manager peut protéger vos données sensibles, telles que vos clés API, mots de passe et certificats. Utilisez-la pour gérer, consulter et auditer vos secrets sur Google Cloud.
L'API GoogleHadoopSecretManagerCredentialProvider
, qui s'intègre à Secret Manager, est une implémentation de l'API Hadoop CredentialProvider, une solution permettant de sécuriser les identifiants sensibles contre l'accès public.
Vous pouvez utiliser l'API du fournisseur d'identifiants Hadoop comme suit :
- Utilisez les commandes d'identifiants Hadoop.
- Configurez les composants OSS, tels que Hive, pour qu'ils fonctionnent avec avec Secret Manager.
Terminologie
Le tableau suivant décrit les termes utilisés dans ce document.
Terme | Description |
---|---|
Secret |
Un secret est un objet de projet global qui contient un ensemble de métadonnées et de versions de secrets. Secret Manager vous permet de les stocker, de les gérer et d'y accéder sous forme de blobs binaires ou de chaînes de texte. |
Credential |
Dans Hadoop et d'autres applications hébergées par Dataproc, un identifiant se compose d'un nom d'identification (ID) et d'une valeur d'identification (mot de passe). Un ID et une valeur d'identification sont mappés à un ID de secret et la valeur du secret (version du secret) dans Secret Manager. |
Commandes d'identifiants Hadoop
Vous pouvez utiliser la commande hadoop credential
pour créer, lister et gérer des secrets.
Les commandes hadoop credential
utilisent le format général 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 du fournisseur). 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. Ce comportement est conforme à l'API Hadoop
CredentialProvider
.hadoop credential create secret-id -provider gsm://projects/PROJECT_ID -v VALUE
Répertorier 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.
Configurer les composants OSS
Vous pouvez configurer Hadoop et d'autres composants OSS compatibles pour qu'ils fonctionnent avec Secret Manager en définissant les propriétés de composant suivantes :
Provider path (obligatoire): propriété du chemin du 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, traversée pour résoudre un identifiant.--properties=hadoop.security.credential.provider.path=gsm://projects/project-id
scheme
permet d'indiquer le type de fournisseur d'identifiants. Les schémas Hadoop incluentjceks://
,user://
etlocaljceks://
. Utilisez le schémagsm://
en tant que indiqué dans l'exemple précédent pour rechercher les identifiants dans Secret Manager.
Opérateur point de substitution (facultatif): Secret Manager n'accepte pas l'opérateur point(
.
) dans les noms de secrets, mais le composant OSS les clés d'identification peuvent contenir cet opérateur. Lorsque cette propriété est définie surtrue
. Vous pouvez remplacer les points (.
) par des traits d'union (-
) dans les noms d'identifiants. Par exemple, lorsque cette propriété est définie surtrue
, vous pouvez spécifier le nom d'identifianta.b.c
commea-b-c
lorsque vous le transmettez à Secret Manager. Ce est nécessaire uniquement pour spécifier un identifiant à l'aide de Commandes d'identifiants Hadoop ou lorsqu'un composant OSS tente de résoudre les identifiants. Cela n'a aucun effet sur créer, répertorier ou supprimer des commandes d'identifiants Hadoop.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Version du secret (facultatif) : les secrets de Secret Manager peuvent avoir plusieurs versions (valeurs). Utilisez cette propriété pour accéder à une version de secret. Par défaut, Secret Manager accède à la version
LATEST
, qui renvoie à la dernière valeur du secret au moment de l'exécution. Il est recommandé de définir cette propriété pour un accès stable dans les environnements de production.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Exemples de métastore Hive
La propriété de métastore Hive, javax.jdo.option.ConnectionPassword
, contient le mot de passe utilisé pour authentifier l'accès à une base de données de métastore. Ce mot de passe est enregistré au format texte brut 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 sections suivantes expliquent comment utiliser Secret Manager dans différents scénarios de métastore Hive.
Cluster Hive avec métastore local
Exécutez la commande suivante en local ou dans Cloud Shell pour créer un cluster Dataproc avec les propriétés de cluster requises.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
Créer un secret Vous pouvez créer un secret à l'aide de Secret Manager ou la commande
hadoop credential
.Solution 1 : Utiliser Secret Manager pour créer un secret
- Nom du secret:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valeur du secret:
METASTORE_PASSWORD
.
- Nom du secret:
Option 2 : 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: étant donné que Secret Manager
l'opérateur point(
.
) n'est pas compatible, remplacez-le par des points(.
) dans le mot de passe par des traits d'union(-
).
- METASTORE_PASSWORD: étant donné que Secret Manager
l'opérateur point(
Vérifiez que le secret existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
À l'aide d'un éditeur de texte, supprimez 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 métastore Hive.
sudo systemctl restart hive-metastore
Cluster Hive avec un métastore 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.
gcloud dataproc clusters create 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éer un secret Vous pouvez créer un secret à l'aide du Gestionnaire de secrets ou de la commande
hadoop credential
.- Variante 1:Utiliser Secret Manager pour créer un secret
- Nom du secret:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- Valeur du secret:
METASTORE_PASSWORD
.
- Nom du secret:
- Option 2 : 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'est pas compatible avec l'opérateur point (
.
), remplacez les points (.
) dans le mot de passe par des traits d'union (-
).
- METASTORE_PASSWORD : comme Secret Manager n'est pas compatible avec l'opérateur point (
- Variante 1:Utiliser Secret Manager pour créer un secret
Vérifiez que le secret existe.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
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 et vous connecter au métastore externe.
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...
Pour en savoir plus
- Consultez la documentation Hive.