Gerenciar segredos na configuração de métricas do agente de operações

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:

  1. Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:

    gcloud init

    Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  2. Defina o projeto padrão para a Google Cloud CLI:

    gcloud config set project PROJECT_ID
    

    Antes de executar o comando anterior, substitua a variável PROJECT_ID pelo identificador do projeto Google Cloud .

  3. Enable the Secret Manager API:

    gcloud services enable secretmanager.googleapis.com
  4. 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:
    gcloud compute instances set-service-account "INSTANCE_ID" \
      --service-account "SERVICE_ACCT_EMAIL" \
      --scopes "https://www.googleapis.com/auth/cloud-platform"
    

    Antes de executar o comando anterior, substitua as seguintes variáveis:

    • INSTANCE_ID: o identificador da VM.
    • SERVICE_ACCT_EMAIL: o endereço da conta de serviço associada à VM.

    Para mais informações, consulte Acessar a API Secret Manager.

  5. 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:
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:USER_EMAIL" \
      --role=roles/secretManager.secretAdmin
    

    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.
  6. 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:
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCT_EMAIL" \
      --role=roles/secretManager.secretAccessor
    

    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.
  7. 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:

    1. Crie um secret no Secret Manager para cada secret de texto simples nos arquivos de configuração.
    2. 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:
    echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \
        --replication-policy="automatic" \
        --data-file=-
    

    Antes de executar o comando anterior, substitua as seguintes variáveis:

    • plaintext-secret: substitua pelo seu secret de texto simples.
    • SECRET_NAME: substitua por um nome significativo para o secret.

    O nome totalmente qualificado do recurso do novo secret tem o seguinte formato, com um VERSION de 1:

    projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION

    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

    1. Para reiniciar o agente, execute o seguinte comando na instância:
      sudo systemctl restart google-cloud-ops-agent
      
    2. 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

    1. Conecte-se à sua instância usando o RDP ou uma ferramenta semelhante e faça login no Windows.
    2. 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
    3. Para reiniciar o agente, execute o seguinte comando do PowerShell:
      Restart-Service google-cloud-ops-agent -Force
      
    4. 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:
      Get-Service google-cloud-ops-agent*