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á em execução.
A partir da versão 0.126.0 do coletor criado pelo Google, é 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 do receptor e do 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. O uso do provedor googlesecretmanager oferece os seguintes benefícios:
- Segurança aprimorada: os arquivos de configuração não contêm informações sensíveis, como senhas. Os secrets reais são armazenados em Secret Manager, um serviço projetado especificamente para armazenar, acessar e gerenciar dados sensíveis com segurança.
- Risco reduzido de exposição: o Secret Manager busca secrets durante a inicialização do coletor do OpenTelemetry criado pelo Google, o que impede que secrets de texto simples sejam gravados 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 Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
Defina o projeto padrão para a Google Cloud CLI:
gcloud config set project PROJECT_ID
Antes de executar o comando anterior, substitua a PROJECT_ID variável pelo identificador do Google Cloud projeto.
-
Ative a API Secret Manager:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pela função Proprietário (roles/owner). Caso contrário, você pode receber essa permissão pela função Administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable secretmanager.googleapis.com
- Atualize os escopos de acesso do OAuth para sua instância para incluir 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.
- Conceda ao usuário que gerencia as configurações do coletor do OpenTelemetry criado pelo Google
as permissões necessárias para criar e gerenciar secrets. O papel do Identity and Access Management
roles/secretManager.secretAdmininclui 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 Google Cloud projeto.
- 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.secretAccessorinclui 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 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 a seguinte:
exporters:
logging:
loglevel: debug
http:
endpoint: "https://example.com/api/metrics"
headers:
X-API-Key: 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 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:
- plaintext-secret: substitua pelo seu secret de texto simples.
- SECRET_NAME: substitua por um nome significativo para o secret.
O nome totalmente qualificado 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, controlar versões e acessar secrets no Secret Manager, consulte Criar um secret.
Substituir secrets de texto simples
Para atualizar os arquivos de configuração, substitua cada secret de texto simples por uma referência ao provedor googlesecretmanager e ao nome do recurso do secret gerenciado, conforme mostrado no exemplo a seguir:
exporters:
logging:
loglevel: debug
http:
endpoint: "https://example.com/api/metrics"
headers:
X-API-Key: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
Saiba mais
Para mais informações sobre como usar o provedorgooglesecretmanager,
acesse o
opentelemetry-collector-contrib repositório.