La configuration de certains composants, tels que les récepteurs ou les exportateurs, peut nécessiter la fourniture de secrets, tels que des mots de passe. Vous pouvez inclure ces secrets en texte brut dans les fichiers de configuration du collecteur. Toutefois, ces secrets sont inclus dans les journaux système écrits par le collecteur et transmis à Cloud Logging, ce qui les expose au-delà du nœud ou de la machine virtuelle (VM) sur lesquels le collecteur s'exécute.
À partir de la version 0.126.0 du collecteur Google, 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 du collecteur OpenTelemetry intégré à Google, ce qui empêche l'enregistrement accidentel de secrets en texte brut dans les 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 :
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
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 niveaux d'accès OAuth de votre instance pour inclure le niveau 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 du collecteur OpenTelemetry conçu par Google 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.
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 exportateur http
, votre fichier de configuration peut inclure une entrée comme celle-ci :
exporters: logging: loglevel: debug http: endpoint: "https://example.com/api/metrics" headers: X-API-Key: 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 :
exporters: logging: loglevel: debug http: endpoint: "https://example.com/api/metrics" headers: X-API-Key: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
En savoir plus
Pour en savoir plus sur l'utilisation du fournisseurgooglesecretmanager
, consultez le
dépôt opentelemetry-collector-contrib
.