Secrets in der Messwertkonfiguration des Ops-Agent verwalten
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Für die Konfiguration einiger Drittanbieterintegrationen müssen Sie Secrets wie Passwörter für die Ops-Agent-Messwertempfänger angeben. Standardmäßig werden diese Secrets als Klartext in der Datei config.yaml des Agents gespeichert. Diese Secrets sind in Systemlogs enthalten, die vom Agent geschrieben und an Cloud Logging übertragen werden. Dadurch werden die Secrets außerhalb der VM verfügbar gemacht, auf der der Ops-Agent ausgeführt wird.
Ab Ops-Agent-Version 2.57.0 können Sie einen in Secret Manager integrierten OpenTelemetry-Anbieter verwenden, um Secrets im Klartext in Ihren Konfigurationsdateien zu vermeiden.
Ein Anbieter ist eine OpenTelemetry-Konfigurationskomponente, die den Receiver- und Prozessorkomponenten entspricht. Jeder Anbieter hat einen Typ und jeder Anbietertyp ordnet einen bestimmten Bezeichner 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 Anbieters googlesecretmanager bietet folgende Vorteile:
Erhöhte Sicherheit: 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, Verwalten und Abrufen sensibler Daten entwickelt wurde.
Geringeres Risiko der Offenlegung: Secret Manager ruft Secrets bei der Initialisierung des Ops-Agents ab. Dadurch wird verhindert, dass Secrets im Klartext versehentlich in Logs aufgezeichnet werden.
Sie können googlesecretmanager nur in der Konfiguration der Messwerterfassung in benutzerdefinierten Ops-Agent-Konfigurationen verwenden. Verwenden Sie den Anbieter nicht, um Secrets in der Konfiguration der Protokollerfassung zu ersetzen.
Hinweise
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:
Legen Sie das Standardprojekt für die Google Cloud CLI fest:
gcloud config set project PROJECT_ID
Bevor Sie den vorherigen Befehl ausführen, ersetzen Sie die Variable PROJECT_ID durch die ID Ihres Google Cloud Projekts.
Enable the Secret Manager API:
gcloudservicesenablesecretmanager.googleapis.com
Aktualisieren Sie die OAuth-Zugriffsbereiche für Ihre Instanz, damit der erforderliche Bereich für Secret Manager, https://www.googleapis.com/auth/cloud-platform, enthalten ist:
Gewähren Sie dem Nutzer, der die Ops-Agent-Konfigurationen verwaltet, die Berechtigungen, die zum Erstellen und Verwalten von Secrets erforderlich sind. Die IAM-Rolle (Identity and Access Management) roles/secretManager.secretAdmin enthält die erforderlichen Berechtigungen:
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 mit der VM verknüpften Dienstkonto die Berechtigungen, die für den Zugriff auf die Secrets erforderlich sind. Die IAM-Rolle (Identity and Access Management) roles/secretManager.secretAccessor enthält die erforderlichen Berechtigungen:
Ersetzen Sie vor dem Ausführen des vorherigen Befehls die folgenden Variablen:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.
SERVICE_ACCT_EMAIL: die Adresse des Dienstkontos, das mit der VM verknüpft ist.
Klartext-Secrets durch verwaltete Secrets ersetzen
So vermeiden Sie die Verwendung von Secrets im Klartext 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 mysql-Messwert-Receiver verwenden, enthält Ihre Konfigurationsdatei möglicherweise einen Eintrag wie den folgenden:
receivers:
mysql:
type: mysql
username: root
password: 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-Secret plaintext-secret zu erstellen:
Weitere Informationen zum Speichern, Versionieren und Zugreifen auf Secrets in Secret Manager finden Sie unter Secret erstellen.
Klartext-Secrets ersetzen
Wenn Sie Ihre Konfigurationsdateien aktualisieren möchten, ersetzen Sie jedes Klartext-Secret durch einen Verweis auf den googlesecretmanager-Anbieter und den Ressourcennamen des verwalteten Secrets, wie im folgenden Beispiel gezeigt:
receivers:
mysql:
type: mysql
username: root
password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
Ops-Agent neu starten
Linux
Führen Sie den folgenden Befehl auf der Instanz aus, um den Agent neu zu starten:
sudo systemctl restart google-cloud-ops-agent
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Agent neu gestartet wurde. Prüfen Sie dann, ob die Komponenten „Metrics-Agent“ und „Logging-Agent“ gestartet wurden:
sudo systemctl status "google-cloud-ops-agent*"
Windows
Stellen Sie mithilfe von RDP oder einem ähnlichen Tool eine Verbindung zu Ihrer Instanz her und melden Sie sich bei Windows an.
Öffnen Sie ein PowerShell-Terminal mit Administratorberechtigungen. Klicken Sie dazu mit der rechten Maustaste auf das PowerShell-Symbol und wählen Sie Als Administrator ausführen aus.
Führen Sie den folgenden PowerShell-Befehl aus, um den Agent neu zu starten:
Restart-Service google-cloud-ops-agent -Force
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Agent neu gestartet wurde. Prüfen Sie dann, ob die Komponenten „Metrics-Agent“ und „Logging-Agent“ gestartet wurden:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-04 (UTC)."],[],[],null,["# Manage secrets in Ops Agent metric configuration\n\nConfiguring some of the third-party integrations requires you to\nprovide secrets, such as passwords, for the Ops Agent metric\nreceivers. By default, these secrets are stored as plaintext in the agent's\n`config.yaml` file. These secrets are included in system logs\nwritten by the agent and transmitted to Cloud Logging, exposing\nthe secrets beyond the virtual machine (VM) where the Ops Agent is\nrunning.\n\nStarting with Ops Agent version 2.57.0,\nyou can use an OpenTelemetry provider integrated [Secret Manager](/secret-manager/docs/overview) to eliminate\nplaintext secrets in your configuration files.\n\nA *provider* is an OpenTelemetry configuration component,\nanalogous to the receiver and processor components. Each provider has a\ntype, and each type of provider maps a specific identifier in the\nconfiguration to a value.\n\nThe `googlesecretmanager` provider maps Secret Manager\nidentifiers to the secrets, like passwords, tokens, and API keys, that you've\nstored in Secret Manager. Using the\n`googlesecretmanager` provider offers the following benefits:\n\n- **Enhanced security** : Your configuration files don't contain sensitive information like passwords. The actual secrets are stored in [Secret Manager](/secret-manager/docs/overview), a service designed specifically for securely storing, accessing, and managing sensitive data.\n- **Reduced risk of exposure**: Secret Manager fetches secrets during initialization of the Ops Agent, which prevents plaintext secrets from accidentally being recorded in logs.\n\nYou can use the `googlesecretmanager` only in the configuration of\nmetric collection in custom Ops Agent configurations. Don't use the provider to\nreplace secrets in the configuration of log collection.\n\nBefore you begin\n----------------\n\nTo use the `googlesecretmanager` provider, you must enable the\nSecret Manager API and permit access to the API,\nas described in the following steps:\n\n1.\n [Install](/sdk/docs/install) the Google Cloud CLI.\n\n After installation,\n [initialize](/sdk/docs/initializing) the Google Cloud CLI by running the following command:\n\n ```bash\n gcloud init\n ```\n\n\n If you're using an external identity provider (IdP), you must first\n [sign in to the gcloud CLI with your federated identity](/iam/docs/workforce-log-in-gcloud).\n2. Set the default project for Google Cloud CLI:\n\n ```\n gcloud config set project PROJECT_ID\n ```\n\n Before you run the previous command, replace the \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e\n variable with the identifier of your Google Cloud project.\n3.\n\n\n Enable the Secret Manager API:\n\n\n ```bash\n gcloud services enable secretmanager.googleapis.com\n ```\n4. Update the OAuth access scopes for your instance to include the required scope for Secret Manager, `https://www.googleapis.com/auth/cloud-platform`: \n\n ```\n gcloud compute instances set-service-account \"INSTANCE_ID\" \\\n --service-account \"SERVICE_ACCT_EMAIL\" \\\n --scopes \"https://www.googleapis.com/auth/cloud-platform\"\n ```\n\n Before you run the previous command, replace the following variables:\n - \u003cvar translate=\"no\"\u003eINSTANCE_ID\u003c/var\u003e: the identifier of your VM.\n - \u003cvar translate=\"no\"\u003eSERVICE_ACCT_EMAIL\u003c/var\u003e: the address of the service account associated with the VM.\n\n For more information, see\n [Access the Secret Manager API](/stackdriver/docs/solutions/agents/ops-agent/third-party/secret-manager/docs/accessing-the-api).\n5. Grant the user who manages the Ops Agent configurations the permissions needed to create and manage secrets. The Identity and Access Management role `roles/secretManager.secretAdmin` includes the necessary permissions: \n\n ```\n gcloud projects add-iam-policy-binding PROJECT_ID \\\n --member=\"user:USER_EMAIL\" \\\n --role=roles/secretManager.secretAdmin\n ```\n\n Before you run the previous command, replace the following variables:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the identifier of your Google Cloud project.\n - \u003cvar translate=\"no\"\u003eUSER_EMAIL\u003c/var\u003e: the address of the user being granted the role.\n6. Grant the service account associated with the VM the permissions it needs to access the secrets. The Identity and Access Management role `roles/secretManager.secretAccessor` includes the necessary permissions: \n\n ```\n gcloud projects add-iam-policy-binding PROJECT_ID \\\n --member=\"serviceAccount:SERVICE_ACCT_EMAIL\" \\\n --role=roles/secretManager.secretAccessor\n ```\n\n Before you run the previous command, replace the following variables:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the identifier of your Google Cloud project.\n - \u003cvar translate=\"no\"\u003eSERVICE_ACCT_EMAIL\u003c/var\u003e: the address of the service account associated with the VM.\n\nReplace plaintext secrets with managed secrets\n----------------------------------------------\n\nTo eliminate the use of plaintext secrets in your configuration files by\nusing Secret Manager and the `googlesecretmanager`\nprovider, do the following:\n\n1. Create a secret in Secret Manager for each plaintext secret in your configuration files.\n2. Replace each plaintext secret in your configuration files with a reference to the corresponding secret in Secret Manager.\n\nFor example, if you are using a `mysql` metric receiver, then\nyour configuration file might include an entry like the following: \n\n```\nreceivers:\n mysql:\n type: mysql\n username: root\n password: plaintext-secret\n```\n\nIn this example, you want to place the \u003cvar translate=\"no\"\u003eplaintext-secret\u003c/var\u003e\nstring into Secret Manager and then replace\nthe plaintext secret with a reference to the managed secret.\n\n### Create Secret Manager secrets\nfor plaintext secrets\n\nTo create a Secret Manager secret containing the plaintext secret `plaintext-secret`, run the following command: \n\n```\necho -n \"plaintext-secret\" | gcloud secrets create SECRET_NAME \\\n --replication-policy=\"automatic\" \\\n --data-file=-\n```\n\nBefore you run the previous command, replace the following variables:\n\n- \u003cvar translate=\"no\"\u003eplaintext-secret\u003c/var\u003e: Replace with your plaintext secret.\n- \u003cvar translate=\"no\"\u003eSECRET_NAME\u003c/var\u003e: Replace with a meaningful name for your secret.\n\nThe fully qualified resource name of your new secret has the following\nformat, with a \u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e of `1`: \n\n```\nprojects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION\n```\n\nFor more information about storing, versioning, and accessing secrets in\nSecret Manager, see\n[Create a secret](/secret-manager/docs/creating-and-accessing-secrets).\n\n### Replace plaintext secrets\n\nTo update your configuration files, replace each plaintext secret\nwith a reference to the `googlesecretmanager` provider and the resource\nname of the managed secret, as shown in the following example: \n\n```\nreceivers:\n mysql:\n type: mysql\n username: root\n password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}\n```\n\n### Restart the Ops Agent\n\n### Linux\n\n1. To restart the agent, run the following command on your instance: \n\n ```\n sudo systemctl restart google-cloud-ops-agent\n ```\n2. To confirm that the agent restarted, run the following command and verify that the components \"Metrics Agent\" and \"Logging Agent\" started: \n\n ```\n sudo systemctl status \"google-cloud-ops-agent*\"\n ```\n\n### Windows\n\n1. Connect to your instance using RDP or a similar tool and login to Windows.\n2. Open a PowerShell terminal with administrator privileges by right-clicking the PowerShell icon and selecting **Run as Administrator**\n3. To restart the agent, run the following PowerShell command: \n\n ```\n Restart-Service google-cloud-ops-agent -Force\n ```\n4. To confirm that the agent restarted, run the following command and verify that the components \"Metrics Agent\" and \"Logging Agent\" started: \n\n ```\n Get-Service google-cloud-ops-agent*\n ```"]]