Für die Konfiguration einiger Komponenten wie Empfänger oder Exporter müssen Sie möglicherweise Secrets wie Passwörter angeben. Sie können diese Secrets als Klartext in die Konfigurationsdateien des Collectors einfügen. Diese Secrets sind jedoch in Systemprotokollen enthalten, die vom Collector geschrieben und an Cloud Logging übertragen werden. Dadurch werden die Secrets über den Knoten oder die VM hinaus verfügbar gemacht, auf der der Collector ausgeführt wird.
Ab der von Google entwickelten Collector-Version 0.126.0 können Sie einen in Secret Manager integrierten OpenTelemetry-Provider verwenden, um Secrets im Klartext in Ihren Konfigurationsdateien zu vermeiden.
Ein Provider ist eine OpenTelemetry-Konfigurationskomponente, die den Empfänger- und Prozessorkomponenten entspricht. Jeder Anbieter hat einen Typ und jeder Anbietertyp ordnet eine bestimmte Kennung in der Konfiguration einem Wert zu.
Der googlesecretmanager-Anbieter ordnet Secret Manager-Kennungen den Secrets wie Passwörtern, Tokens und API-Schlüsseln zu, die Sie in Secret Manager gespeichert haben. Die Verwendung des googlesecretmanager-Anbieters bietet folgende Vorteile:
- Erweiterte Sicherheitsfunktionen: Ihre Konfigurationsdateien enthalten keine vertraulichen Informationen wie Passwörter. Die eigentlichen Secrets werden in Secret Manager gespeichert, einem Dienst, der speziell für das sichere Speichern, den Zugriff und die Verwaltung sensibler Daten entwickelt wurde.
- Geringeres Risiko der Offenlegung: Secret Manager ruft Secrets während der Initialisierung des von Google erstellten OpenTelemetry-Collectors ab. Dadurch wird verhindert, dass Secrets im Klartext versehentlich in Logs aufgezeichnet werden.
Hinweis
Wenn Sie den googlesecretmanager-Anbieter verwenden möchten, müssen Sie die Secret Manager API aktivieren und den Zugriff auf die API zulassen, wie in den folgenden Schritten beschrieben:
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Legen Sie das Standardprojekt für die Google Cloud CLI fest:
gcloud config set project PROJECT_ID
Ersetzen Sie vor dem Ausführen des vorherigen Befehls die Variable PROJECT_ID durch die Kennung Ihres Projekts in Google Cloud .
-
Aktivieren Sie die Secret Manager API, falls sie noch nicht aktiviert ist:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable secretmanager.googleapis.com
- Aktualisieren Sie die OAuth-Zugriffsbereiche für Ihre Instanz, um den erforderlichen Bereich für Secret Manager,
https://www.googleapis.com/auth/cloud-platform, einzuschließen:gcloud compute instances set-service-account "INSTANCE_ID" \ --service-account "SERVICE_ACCT_EMAIL" \ --scopes "https://www.googleapis.com/auth/cloud-platform"
Ersetzen Sie vor dem Ausführen des vorherigen Befehls die folgenden Variablen:
- INSTANCE_ID: die Kennung Ihrer VM.
- SERVICE_ACCT_EMAIL: die Adresse des Dienstkontos, das der VM zugeordnet ist.
Weitere Informationen finden Sie unter Auf die Secret Manager API zugreifen.
- Gewähren Sie dem Nutzer, der die von Google erstellten OpenTelemetry Collector-Konfigurationen verwaltet, die Berechtigungen, die zum Erstellen und Verwalten von Secrets erforderlich sind. Die IAM-Rolle (Identity and Access Management)
roles/secretManager.secretAdminenthält die erforderlichen Berechtigungen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:USER_EMAIL" \ --role=roles/secretManager.secretAdmin
Ersetzen Sie vor dem Ausführen des vorherigen Befehls die folgenden Variablen:
- PROJECT_ID: die Kennung Ihres Google Cloud -Projekts.
- USER_EMAIL: die Adresse des Nutzers, dem die Rolle zugewiesen wird.
- Erteilen Sie dem Dienstkonto, das mit der VM verknüpft ist, die Berechtigungen, die für den Zugriff auf die Secrets erforderlich sind. Die IAM-Rolle (Identity and Access Management)
roles/secretManager.secretAccessorenthält die erforderlichen Berechtigungen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCT_EMAIL" \ --role=roles/secretManager.secretAccessor
Ersetzen Sie vor dem Ausführen des vorherigen Befehls die folgenden Variablen:
- PROJECT_ID: die Kennung Ihres Google Cloud -Projekts.
- SERVICE_ACCT_EMAIL: die Adresse des Dienstkontos, das der VM zugeordnet ist.
Klartext-Secrets durch verwaltete Secrets ersetzen
So vermeiden Sie die Verwendung von Klartext-Secrets in Ihren Konfigurationsdateien, indem Sie Secret Manager und den googlesecretmanager-Anbieter verwenden:
- Erstellen Sie in Secret Manager für jedes Klartext-Secret in Ihren Konfigurationsdateien ein Secret.
- Ersetzen Sie jedes Klartext-Secret in Ihren Konfigurationsdateien durch einen Verweis auf das entsprechende Secret in Secret Manager.
Wenn Sie beispielsweise einen http-Exporter verwenden, könnte Ihre Konfigurationsdatei einen Eintrag wie den folgenden enthalten:
exporters:
logging:
loglevel: debug
http:
endpoint: "https://example.com/api/metrics"
headers:
X-API-Key: plaintext-secret
In diesem Beispiel möchten Sie den String plaintext-secret in Secret Manager platzieren und dann das Secret im Klartext durch einen Verweis auf das verwaltete Secret ersetzen.
Secret Manager-Secrets für Klartext-Secrets erstellen
Führen Sie den folgenden Befehl aus, um ein Secret Manager-Secret mit dem Klartext-Secretplaintext-secret zu erstellen:
echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \
--replication-policy="automatic" \
--data-file=-
Ersetzen Sie vor dem Ausführen des vorherigen Befehls die folgenden Variablen:
- plaintext-secret: Ersetzen Sie dies durch Ihr Secret im Klartext.
- SECRET_NAME: Ersetzen Sie dies durch einen aussagekräftigen Namen für Ihr Secret.
Der vollständig qualifizierte Ressourcenname Ihres neuen Secrets hat das folgende Format mit einem VERSION von 1:
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION
Weitere Informationen zum Speichern, Versionieren und Aufrufen von Secrets in Secret Manager finden Sie unter Secret erstellen.
Secrets im Klartext ersetzen
Wenn Sie Ihre Konfigurationsdateien aktualisieren möchten, ersetzen Sie jedes Secret im Klartext durch einen Verweis auf den googlesecretmanager-Anbieter und den Ressourcennamen des verwalteten Secrets, wie im folgenden Beispiel gezeigt:
exporters:
logging:
loglevel: debug
http:
endpoint: "https://example.com/api/metrics"
headers:
X-API-Key: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
Weitere Informationen
Weitere Informationen zur Verwendung desgooglesecretmanager-Anbieters finden Sie im
opentelemetry-collector-contrib-Repository.