A configuração de algumas das integrações de terceiros requer que
forneça segredos, como palavras-passe, para os recetores de métricas do Ops Agent. Por predefinição, estes segredos são armazenados como texto simples no ficheiro
config.yaml
do agente. Estes segredos estão incluídos nos registos do sistema escritos pelo agente e transmitidos para o Cloud Logging, expondo os segredos para além da máquina virtual (VM) onde o agente de operações está a ser executado.
A partir da versão 2.57.0 do agente de operações, pode usar um fornecedor do OpenTelemetry integrado no Secret Manager para eliminar segredos de texto simples nos seus ficheiros de configuração.
Um fornecedor é um componente de configuração do OpenTelemetry, análogo aos componentes do recetor e do processador. Cada fornecedor tem um tipo e cada tipo de fornecedor mapeia um identificador específico na configuração para um valor.
O fornecedor googlesecretmanager
mapeia os identificadores do Secret Manager para os segredos, como palavras-passe, tokens e chaves da API, que armazenou no Secret Manager. A utilização do fornecedor
googlesecretmanager
oferece as seguintes vantagens:
- Segurança melhorada: os seus ficheiros de configuração não contêm informações confidenciais, como palavras-passe. Os segredos reais são armazenados no Secret Manager, um serviço concebido especificamente para armazenar, aceder e gerir dados confidenciais de forma segura.
- Risco reduzido de exposição: o Secret Manager obtém segredos durante a inicialização do agente de operações, o que impede que os segredos de texto simples sejam registados acidentalmente nos registos.
Pode usar o googlesecretmanager
apenas na configuração da recolha de métricas em configurações personalizadas do agente de operações. Não use o fornecedor para substituir Secrets na configuração da recolha de registos.
Antes de começar
Para usar o fornecedor googlesecretmanager
, tem de ativar a API Secret Manager e permitir o acesso à API, conforme descrito nos passos seguintes:
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Defina o projeto predefinido para a CLI gcloud:
gcloud config set project PROJECT_ID
Antes de executar o comando anterior, substitua a variável PROJECT_ID pelo identificador do seu Google Cloud projeto.
-
Enable the Secret Manager API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable secretmanager.googleapis.com
- Atualize os âmbitos de acesso OAuth da sua instância para incluir o âmbito 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 sua VM.
- SERVICE_ACCT_EMAIL: a morada da conta de serviço associada à VM.
Para mais informações, consulte o artigo Aceda à API Secret Manager.
- Conceda ao utilizador que gere as configurações do agente de operações as autorizações necessárias para criar e gerir segredos. A função de gestão de identidade e de acesso
roles/secretManager.secretAdmin
inclui as autorizaçõ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 Google Cloud .
- USER_EMAIL: o endereço do utilizador ao qual está a ser concedida a função.
- Conceda à conta de serviço associada à VM as autorizações de que necessita para aceder aos segredos. A função de gestão de identidade e de acesso
roles/secretManager.secretAccessor
inclui as autorizaçõ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 projeto Google Cloud .
- SERVICE_ACCT_EMAIL: a morada da conta de serviço associada à VM.
- Crie um segredo no Secret Manager para cada segredo de texto simples nos seus ficheiros de configuração.
- Substitua cada segredo de texto simples nos ficheiros de configuração por uma referência ao segredo correspondente no Secret Manager.
- plaintext-secret: substitua pelo seu segredo de texto simples.
- SECRET_NAME: substitua por um nome significativo para o seu segredo.
- Para reiniciar o agente, execute o seguinte comando na sua instância:
sudo systemctl restart google-cloud-ops-agent
- Para confirmar que o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente de registo" foram iniciados:
sudo systemctl status "google-cloud-ops-agent*"
- Estabeleça ligação à sua instância através do RDP ou de uma ferramenta semelhante e inicie sessão no Windows.
- Abra um terminal do PowerShell com privilégios de administrador: clique com o botão direito do rato 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 que o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente de registo" foram iniciados:
Get-Service google-cloud-ops-agent*
Substitua segredos de texto simples por segredos geridos
Para eliminar a utilização de segredos de texto simples nos seus ficheiros de configuração através da utilização do Secret Manager e do fornecedor googlesecretmanager
, faça o seguinte:
Por exemplo, se estiver a usar um recetor de métricas mysql
, o ficheiro de configuração pode incluir uma entrada como a seguinte:
receivers: mysql: type: mysql username: root password: plaintext-secret
Neste exemplo, quer colocar a string no Secret Manager e, em seguida, substituir o segredo de texto simples por uma referência ao segredo gerido.plaintext-secret
Crie Secrets do Secret Manager para Secrets de texto simples
Para criar um segredo do Secret Manager que contenha o segredo de texto simplesplaintext-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:
O nome de recurso totalmente qualificado do seu novo segredo tem o seguinte formato, com um VERSION de 1
:
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION
Para mais informações sobre o armazenamento, o controlo de versões e o acesso a segredos no Secret Manager, consulte o artigo Crie um segredo.
Substitua segredos de texto simples
Para atualizar os ficheiros de configuração, substitua cada segredo de texto simples por uma referência ao fornecedor googlesecretmanager
e ao nome do recurso do segredo gerido, conforme mostrado no exemplo seguinte:
receivers: mysql: type: mysql username: root password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}