Gerenciar segredos na configuração do coletor do OpenTelemetry criado pelo Google
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A configuração de alguns componentes, como receptores ou exportadores, pode exigir que você forneça secrets, como senhas. É possível incluir esses secrets como
texto simples nos arquivos de configuração do coletor. No entanto, esses secrets são
incluídos nos registros do sistema gravados pelo coletor e transmitidos ao
Cloud Logging, expondo os secrets além do nó ou da máquina virtual (VM)
em que o coletor está sendo executado.
A partir da versão 0.126.0 do coletor criado pelo Google, é possível usar um provedor OpenTelemetry integrado ao Gerenciador de secrets para eliminar secrets de texto simples nos arquivos de configuração.
Um provedor é um componente de configuração do OpenTelemetry, análogo aos componentes de receptor e processador. Cada provedor tem um tipo, e cada tipo de provedor mapeia um identificador específico na configuração para um valor.
O provedor googlesecretmanager mapeia identificadores do Secret Manager para os secrets, como senhas, tokens e chaves de API, que você armazenou no Secret Manager. Usar o provedor
googlesecretmanager oferece os seguintes benefícios:
Segurança aprimorada: seus arquivos de configuração não contêm informações sensíveis, como senhas. Os secrets reais são armazenados no Secret Manager, um serviço projetado especificamente para armazenar, acessar e gerenciar dados sensíveis com segurança.
Redução do risco de exposição: o Secret Manager busca secrets durante a inicialização do coletor OpenTelemetry integrado do Google, o que impede que secrets de texto simples sejam registrados acidentalmente em registros.
Antes de começar
Para usar o provedor googlesecretmanager, ative a API Secret Manager e permita o acesso a ela, conforme descrito nas etapas a seguir:
Instale a CLI do Google Cloud.
Após a instalação,
inicialize a CLI do Google Cloud executando o seguinte comando:
Antes de executar o comando anterior, substitua a variável PROJECT_ID pelo identificador do projeto Google Cloud .
Enable the Secret Manager API:
gcloudservicesenablesecretmanager.googleapis.com
Atualize os escopos de acesso do OAuth para sua instância e inclua o escopo
necessário para o Secret Manager, https://www.googleapis.com/auth/cloud-platform:
Conceda ao usuário que gerencia as configurações do coletor OpenTelemetry criado pelo Google
as permissões necessárias para criar e gerenciar secrets. O papel do Identity and Access Management
roles/secretManager.secretAdmin inclui as permissões
necessárias:
Antes de executar o comando anterior, substitua as seguintes variáveis:
PROJECT_ID: o identificador do seu projeto do
Google Cloud .
USER_EMAIL: o endereço do usuário que está recebendo
o papel.
Conceda à conta de serviço associada à VM as permissões necessárias para acessar os secrets. O papel do Identity and Access Management
roles/secretManager.secretAccessor inclui as permissões
necessárias:
Antes de executar o comando anterior, substitua as seguintes variáveis:
PROJECT_ID: o identificador do seu Google Cloud projeto.
SERVICE_ACCT_EMAIL: o endereço da
conta de serviço associada à VM.
Substituir secrets de texto simples por secrets gerenciados
Para eliminar o uso de secrets de texto simples nos arquivos de configuração usando o Secret Manager e o provedor googlesecretmanager, faça o seguinte:
Crie um secret no Secret Manager para cada secret de texto simples
nos arquivos de configuração.
Substitua cada secret de texto simples nos arquivos de configuração por uma referência
ao secret correspondente no Secret Manager.
Por exemplo, se você estiver usando um exportador http,
o arquivo de configuração poderá incluir uma entrada como esta:
Neste exemplo, você quer colocar a string plaintext-secret no Secret Manager e substituir o secret de texto simples por uma referência ao secret gerenciado.
Criar secrets do Secret Manager
para secrets de texto simples
Para criar um secret do Secret Manager que contenha o secret de texto simples plaintext-secret, execute o seguinte comando:
Para mais informações sobre como armazenar, versionar e acessar secrets no
Secret Manager, consulte
Criar um secret.
Substituir secrets de texto simples
Para atualizar os arquivos de configuração, substitua cada segredo de texto simples por uma referência ao provedor googlesecretmanager e ao nome do recurso do segredo gerenciado, conforme mostrado no exemplo a seguir:
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)."]]