Pour configurer certaines intégrations tierces, vous devez fournir des secrets, tels que des mots de passe, pour les récepteurs de métriques de l'agent Ops. Par défaut, ces secrets sont stockés en texte brut dans le fichier config.yaml
de l'agent. Ces secrets sont inclus dans les journaux système écrits par l'agent et transmis à Cloud Logging, ce qui les expose au-delà de la machine virtuelle (VM) sur laquelle l'agent Ops est exécuté.
À partir de la version 2.57.0 de l'agent Ops, vous pouvez utiliser un fournisseur OpenTelemetry intégré à Secret Manager pour éliminer les secrets en texte brut dans vos fichiers de configuration.
Un fournisseur est un composant de configuration OpenTelemetry, analogue aux composants de récepteur et de processeur. Chaque fournisseur a un type, et chaque type de fournisseur mappe un identifiant spécifique dans la configuration à une valeur.
Le fournisseur googlesecretmanager
mappe les identifiants Secret Manager aux secrets, tels que les mots de passe, les jetons et les clés API, que vous avez stockés dans Secret Manager. L'utilisation du fournisseur googlesecretmanager
offre les avantages suivants :
- Sécurité renforcée : vos fichiers de configuration ne contiennent pas d'informations sensibles, comme des mots de passe. Les secrets réels sont stockés dans Secret Manager, un service conçu spécifiquement pour stocker, accéder et gérer les données sensibles de manière sécurisée.
- Réduction du risque d'exposition : Secret Manager récupère les secrets lors de l'initialisation de l'Agent Ops, ce qui empêche l'enregistrement accidentel de secrets en texte brut dans les journaux.
Vous ne pouvez utiliser googlesecretmanager
que dans la configuration de la collecte de métriques dans les configurations personnalisées de l'agent Ops. N'utilisez pas le fournisseur pour remplacer les secrets dans la configuration de la collecte des journaux.
Avant de commencer
Pour utiliser le fournisseur googlesecretmanager
, vous devez activer l'API Secret Manager et autoriser l'accès à l'API, comme décrit dans les étapes suivantes :
-
Installez Google Cloud CLI. Après l'installation, initialisez Google Cloud CLI en exécutant la commande suivante :
gcloud init
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Définissez le projet par défaut pour Google Cloud CLI :
gcloud config set project PROJECT_ID
Avant d'exécuter la commande précédente, remplacez la variable PROJECT_ID par l'identifiant de votre projet Google Cloud .
-
Enable the Secret Manager API:
gcloud services enable secretmanager.googleapis.com
- Mettez à jour les champs d'application de l'accès OAuth pour votre instance afin d'inclure le champ d'application requis pour Secret Manager,
https://www.googleapis.com/auth/cloud-platform
:gcloud compute instances set-service-account "INSTANCE_ID" \ --service-account "SERVICE_ACCT_EMAIL" \ --scopes "https://www.googleapis.com/auth/cloud-platform"
Avant d'exécuter la commande précédente, remplacez les variables suivantes :
- INSTANCE_ID : identifiant de votre VM.
- SERVICE_ACCT_EMAIL : adresse du compte de service associé à la VM.
Pour en savoir plus, consultez Accéder à l'API Secret Manager.
- Accordez à l'utilisateur qui gère les configurations de l'agent Ops les autorisations nécessaires pour créer et gérer des secrets. Le rôle Identity and Access Management
roles/secretManager.secretAdmin
inclut les autorisations nécessaires :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:USER_EMAIL" \ --role=roles/secretManager.secretAdmin
Avant d'exécuter la commande précédente, remplacez les variables suivantes :
- PROJECT_ID : identifiant de votre projet Google Cloud .
- USER_EMAIL : adresse de l'utilisateur auquel le rôle est attribué.
- Accordez au compte de service associé à la VM les autorisations dont il a besoin pour accéder aux secrets. Le rôle Identity and Access Management
roles/secretManager.secretAccessor
inclut les autorisations nécessaires :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCT_EMAIL" \ --role=roles/secretManager.secretAccessor
Avant d'exécuter la commande précédente, remplacez les variables suivantes :
- PROJECT_ID : identifiant de votre projet Google Cloud .
- SERVICE_ACCT_EMAIL : adresse du compte de service associé à la VM.
- Créez un secret dans Secret Manager pour chaque secret en texte brut dans vos fichiers de configuration.
- Remplacez chaque secret en texte brut dans vos fichiers de configuration par une référence au secret correspondant dans Secret Manager.
- plaintext-secret : remplacez par votre secret en texte brut.
- SECRET_NAME : remplacez cette valeur par un nom explicite pour votre secret.
- Pour redémarrer l'agent, exécutez la commande suivante sur votre instance :
sudo systemctl restart google-cloud-ops-agent
- Pour vérifier que l'agent a redémarré, exécutez la commande suivante et vérifiez que les composants "Agent de métriques" et "Agent de journalisation" ont démarré :
sudo systemctl status "google-cloud-ops-agent*"
- Connectez-vous à votre instance via RDP ou un outil similaire, et connectez-vous à Windows.
- Ouvrez un terminal PowerShell avec des droits d'administrateur en effectuant un clic droit sur l'icône PowerShell, puis en sélectionnant Exécuter en tant qu'administrateur.
- Pour redémarrer l'agent, exécutez la commande PowerShell suivante :
Restart-Service google-cloud-ops-agent -Force
- Pour vérifier que l'agent a redémarré, exécutez la commande suivante et vérifiez que les composants "Agent de métriques" et "Agent de journalisation" ont démarré :
Get-Service google-cloud-ops-agent*
Remplacer les secrets en texte brut par des secrets gérés
Pour éviter d'utiliser des secrets en texte brut dans vos fichiers de configuration en utilisant Secret Manager et le fournisseur googlesecretmanager
, procédez comme suit :
Par exemple, si vous utilisez un récepteur de métriques mysql
, votre fichier de configuration peut inclure une entrée semblable à la suivante :
receivers: mysql: type: mysql username: root password: plaintext-secret
Dans cet exemple, vous souhaitez placer la chaîne plaintext-secret
dans Secret Manager, puis remplacer le secret en texte brut par une référence au secret géré.
Créer des secrets Secret Manager pour les secrets en texte brut
Pour créer un secret Secret Manager contenant le secret en texte brutplaintext-secret
, exécutez la commande suivante :
echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \ --replication-policy="automatic" \ --data-file=-
Avant d'exécuter la commande précédente, remplacez les variables suivantes :
Le nom complet de la ressource de votre nouveau secret se présente au format suivant, avec un VERSION de 1
:
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION
Pour en savoir plus sur le stockage, le versionnage et l'accès aux secrets dans Secret Manager, consultez Créer un secret.
Remplacer les secrets en texte brut
Pour mettre à jour vos fichiers de configuration, remplacez chaque secret en texte brut par une référence au fournisseur googlesecretmanager
et au nom de ressource du secret géré, comme indiqué dans l'exemple suivant :
receivers: mysql: type: mysql username: root password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}