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 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 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:
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
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 seu projeto Google Cloud .
-
Enable the Secret Manager API:
gcloud services enable secretmanager.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
: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 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: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.
- 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.
- Crie um secret no Secret Manager para cada secret de texto simples nos seus 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.
- plaintext-secret: substitua pelo seu secret de texto simples.
- SECRET_NAME: substitua por um nome significativo para o secret.
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:
Por exemplo, se você estiver usando um exportador http
,
o arquivo de configuração poderá incluir uma entrada como esta:
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:
O nome totalmente qualificado do seu 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:
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
repositório opentelemetry-collector-contrib
.