Gerenciar segredos na configuração de métricas do agente de operações
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Para configurar algumas das integrações de terceiros, é necessário
fornecer secrets, como senhas, para os receptores de métricas do Agente de operações. Por padrão, esses secrets são armazenados como texto sem formatação no arquivo
config.yaml do agente. Esses secrets são incluídos nos registros do sistema
gravados pelo agente e transmitidos ao Cloud Logging, expondo
os secrets além da máquina virtual (VM) em que o Agente de operações está
em execução.
A partir da versão 2.57.0 do Agente de operações,
é possível usar um provedor do OpenTelemetry integrado ao Secret Manager 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 Agente de operações, o que evita que secrets de texto simples sejam gravados acidentalmente em registros.
Você pode usar o googlesecretmanager apenas na configuração da coleta de métricas em configurações personalizadas do agente de operações. Não use o provedor para
substituir secrets na configuração da coleta de 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 Agente de operações
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 receptor de métricas mysql, o arquivo de configuração poderá incluir uma entrada como esta:
receivers:
mysql:
type: mysql
username: root
password: plaintext-secret
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:
receivers:
mysql:
type: mysql
username: root
password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
Reiniciar o agente de operações
Linux
Para reiniciar o agente, execute o seguinte comando na instância:
sudo systemctl restart google-cloud-ops-agent
Para confirmar se o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente do Logging" foram iniciados:
sudo systemctl status "google-cloud-ops-agent*"
Windows
Conecte-se à sua instância usando o RDP ou uma ferramenta semelhante e faça login no Windows.
Abra um terminal do PowerShell com privilégios de administrador. Para isso,
clique com o botão direito do mouse no ícone do PowerShell e selecione Executar como administrador
Para reiniciar o agente, execute o seguinte comando do PowerShell:
Restart-Service google-cloud-ops-agent -Force
Para confirmar se o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente do Logging" foram iniciados:
[[["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 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 ```"]]