Administra secretos en la configuración del recopilador de OpenTelemetry compilado por Google
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Configurar algunos componentes, como receptores o exportadores, puede requerir que proporciones secretos, como contraseñas. Puedes incluir estos secretos como texto sin formato en los archivos de configuración del recopilador. Sin embargo, estos secretos se incluyen en los registros del sistema que escribe el recopilador y se transmiten a Cloud Logging, lo que los expone más allá del nodo o la máquina virtual (VM) en la que se ejecuta el recopilador.
A partir de la versión 0.126.0 del recopilador compilado por Google, puedes usar un proveedor de OpenTelemetry integrado en Secret Manager para eliminar los secretos de texto simple de tus archivos de configuración.
Un proveedor es un componente de configuración de OpenTelemetry,
análogo a los componentes de receptor y procesador. Cada proveedor tiene un
tipo, y cada tipo de proveedor asigna un identificador específico en la
configuración a un valor.
El proveedor de googlesecretmanager asigna identificadores de
Secret Manager a los secretos, como contraseñas, tokens y claves de API,
que almacenaste en Secret Manager. Usar
el proveedor googlesecretmanager ofrece los siguientes beneficios:
Mayor seguridad: Los archivos de configuración no contienen
información sensible, como contraseñas. Los secretos reales se almacenan
en Secret Manager, un servicio diseñado específicamente para
almacenar y administrar datos sensibles de forma segura, además de acceder a ellos.
Menor riesgo de exposición: Secret Manager recupera
secretos durante la inicialización del recopilador de OpenTelemetry integrado en Google, lo que evita
que los secretos de texto simple se asienten por accidente en los registros.
Antes de comenzar
Para usar el proveedor de googlesecretmanager, debes habilitar la
API de Secret Manager y permitir el acceso a ella,
como se describe en los siguientes pasos:
Instala Google Cloud CLI.
Después de la instalación,
inicializa Google Cloud CLI ejecutando el siguiente comando:
Configura el proyecto predeterminado para Google Cloud CLI de la siguiente manera:
gcloud config set project PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza la variable PROJECT_ID
por el identificador de tu proyecto de Google Cloud .
Enable the Secret Manager API:
gcloudservicesenablesecretmanager.googleapis.com
Actualiza los permisos de acceso de OAuth para que la instancia incluya
el permiso que requiere Secret Manager, https://www.googleapis.com/auth/cloud-platform:
Otorga al usuario que administra los parámetros de configuración del recopilador de OpenTelemetry integrado en Google
los permisos necesarios para crear y administrar secretos. El rol de Identity and Access Management
roles/secretManager.secretAdmin incluye los permisos
necesarios:
Antes de ejecutar el comando anterior, reemplaza las siguientes variables:
PROJECT_ID: es el identificador de tu proyecto de
Google Cloud .
USER_EMAIL: es la dirección del usuario al que se le otorga
el rol.
Otorga a la cuenta de servicio asociada a la VM los permisos
necesarios para acceder a los secretos. El rol de Identity and Access Management
roles/secretManager.secretAccessor incluye los permisos
necesarios:
Antes de ejecutar el comando anterior, reemplaza las siguientes variables:
PROJECT_ID: es el identificador de tu proyecto de Google Cloud .
SERVICE_ACCT_EMAIL: es la dirección de la
cuenta de servicio asociada a la VM.
Reemplaza los secretos de texto simple por los administrados
Para dejar de usar secretos de texto simple en tus archivos de configuración
con Secret Manager y el proveedor de googlesecretmanager,
haz lo siguiente:
Crea un secreto en Secret Manager para cada secreto de texto simple
en tus archivos de configuración.
Reemplaza cada secreto de texto simple en tus archivos de configuración por una referencia
al secreto correspondiente en Secret Manager.
Por ejemplo, si usas un exportador http,
tu archivo de configuración podría incluir una entrada como la siguiente:
En este ejemplo, debes colocar la cadena plaintext-secret
en Secret Manager y, luego, reemplazar
el secreto de texto simple por una referencia al secreto administrado.
Crea secretos de Secret Manager para los secretos de texto simple
Para crear un secreto de Secret Manager que incluya el secreto de texto simple
plaintext-secret, ejecuta el siguiente comando:
Para obtener más información sobre cómo almacenar secretos, controlar sus versiones y acceder a ellos en
Secret Manager, consulta
Crea un secreto.
Reemplaza secretos de texto simple
Para actualizar tus archivos de configuración, reemplaza cada secreto de texto simple
por una referencia al proveedor de googlesecretmanager y al nombre del recurso
del secreto administrado, como se muestra en el siguiente ejemplo:
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["# Manage secrets in Google-Built OpenTelemetry Collector configuration\n\nConfiguring some components, like receivers or exporters, might require\nyou to provide secrets, such as passwords. You can includes these secrets as\nplaintext in the Collector's configuration files. However, these secrets are\nincluded in system logs written by the Collector and transmitted to\nCloud Logging, exposing the secrets beyond the node or virtual machine (VM)\nwhere the Collector is running.\n\nStarting with the Google-built Collector version\n0.126.0,\nyou can use an OpenTelemetry provider integrated with [Secret Manager](/secret-manager/docs/overview) to\neliminate plaintext 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 Google-Built OpenTelemetry Collector, which prevents plaintext secrets from accidentally being recorded in logs.\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/instrumentation/secret-manager/docs/accessing-the-api).\n5. Grant the user who manages the Google-Built OpenTelemetry Collector 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 an `http` exporter,\nyour configuration file might include an entry like the following: \n\n```\nexporters:\n logging:\n loglevel: debug\n http:\n endpoint: \"https://example.com/api/metrics\"\n headers:\n X-API-Key: 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```\nexporters:\n logging:\n loglevel: debug\n http:\n endpoint: \"https://example.com/api/metrics\"\n headers:\n X-API-Key: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}\n```\n\n### Learn more\n\nFor more information about using the `googlesecretmanager` provider, visit the [`opentelemetry-collector-contrib` repository](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/confmap/provider/googlesecretmanagerprovider)."]]