La configurazione di alcune integrazioni di terze parti richiede di fornire secret, come le password, per i ricevitori delle metriche di Ops Agent. Per impostazione predefinita, questi secret vengono archiviati come testo non crittografato nel file
config.yaml
dell'agente. Questi secret sono inclusi nei log di sistema
scritti dall'agente e trasmessi a Cloud Logging, esponendo
i secret oltre la macchina virtuale (VM) in cui è in esecuzione
Ops Agent.
A partire dalla versione 2.57.0 di Ops Agent, puoi utilizzare un provider OpenTelemetry integrato con Secret Manager per eliminare i secret in testo normale nei file di configurazione.
Un provider è un componente di configurazione di OpenTelemetry, analogo ai componenti ricevitore e processore. Ogni fornitore ha un tipo e ogni tipo di fornitore mappa un identificatore specifico nella configurazione a un valore.
Il provider googlesecretmanager
mappa gli identificatori di Secret Manager ai secret, come password, token e chiavi API, che hai archiviato in Secret Manager. L'utilizzo del provider
googlesecretmanager
offre i seguenti vantaggi:
- Sicurezza avanzata: i file di configurazione non contengono informazioni sensibili come le password. I secret effettivi sono archiviati in Secret Manager, un servizio progettato appositamente per archiviare, accedere e gestire in modo sicuro i dati sensibili.
- Rischio di esposizione ridotto: Secret Manager recupera i secret durante l'inizializzazione dell'Ops Agent, il che impedisce che i secret in testo normale vengano registrati accidentalmente nei log.
Puoi utilizzare googlesecretmanager
solo nella configurazione della raccolta di metriche nelle configurazioni personalizzate dellOps Agent. Non utilizzare il provider per
sostituire i segreti nella configurazione della raccolta dei log.
Prima di iniziare
Per utilizzare il provider googlesecretmanager
, devi abilitare l'API Secret Manager e consentire l'accesso all'API, come descritto nei seguenti passaggi:
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:
gcloud init
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.
Imposta il progetto predefinito per Google Cloud CLI:
gcloud config set project PROJECT_ID
Prima di eseguire il comando precedente, sostituisci la variabile PROJECT_ID con l'identificatore del tuo progetto Google Cloud .
-
Enable the Secret Manager API:
gcloud services enable secretmanager.googleapis.com
- Aggiorna gli ambiti di accesso OAuth per la tua istanza in modo da includere l'ambito
richiesto per 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"
Prima di eseguire il comando precedente, sostituisci le seguenti variabili:
- INSTANCE_ID: l'identificatore della VM.
- SERVICE_ACCT_EMAIL: l'indirizzo del account di servizio associato alla VM.
Per saperne di più, vedi Accedere all'API Secret Manager.
- Concedi all'utente che gestisce le configurazioni di Ops Agent
le autorizzazioni necessarie per creare e gestire i secret. Il ruolo Identity and Access Management
roles/secretManager.secretAdmin
include le autorizzazioni necessarie:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:USER_EMAIL" \ --role=roles/secretManager.secretAdmin
Prima di eseguire il comando precedente, sostituisci le seguenti variabili:
- PROJECT_ID: l'identificatore del tuo Google Cloud progetto.
- USER_EMAIL: l'indirizzo dell'utente a cui viene concesso il ruolo.
- Concedi al account di servizio associato alla VM le autorizzazioni necessarie per accedere ai secret. Il ruolo Identity and Access Management
roles/secretManager.secretAccessor
include le autorizzazioni necessarie:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCT_EMAIL" \ --role=roles/secretManager.secretAccessor
Prima di eseguire il comando precedente, sostituisci le seguenti variabili:
- PROJECT_ID: l'identificatore del tuo Google Cloud progetto.
- SERVICE_ACCT_EMAIL: l'indirizzo del account di servizio associato alla VM.
- Crea un secret in Secret Manager per ogni secret in testo normale nei file di configurazione.
- Sostituisci ogni secret in testo normale nei file di configurazione con un riferimento al secret corrispondente in Secret Manager.
- plaintext-secret: Sostituisci con il segreto in testo normale.
- SECRET_NAME: sostituisci con un nome significativo per il tuo secret.
- Per riavviare l'agente, esegui il seguente comando sull'istanza:
sudo systemctl restart google-cloud-ops-agent
- Per verificare che l'agente sia stato riavviato, esegui il seguente comando e verifica che i componenti "Agente Metriche" e "Agente Logging" siano stati avviati:
sudo systemctl status "google-cloud-ops-agent*"
- Connettiti all'istanza utilizzando RDP o uno strumento simile e accedi a Windows.
- Apri un terminale PowerShell con privilegi di amministratore facendo clic con il tasto destro del mouse sull'icona di PowerShell e selezionando Esegui come amministratore.
- Per riavviare l'agente, esegui il seguente comando PowerShell:
Restart-Service google-cloud-ops-agent -Force
- Per verificare che l'agente sia stato riavviato, esegui il seguente comando e verifica che i componenti "Agente Metriche" e "Agente Logging" siano stati avviati:
Get-Service google-cloud-ops-agent*
Sostituisci i secret in testo normale con secret gestiti
Per eliminare l'utilizzo di secret in testo normale nei file di configurazione utilizzando Secret Manager e il provider googlesecretmanager
, segui questi passaggi:
Ad esempio, se utilizzi un ricevitore di metriche mysql
, il file di configurazione potrebbe includere una voce simile alla seguente:
receivers: mysql: type: mysql username: root password: plaintext-secret
In questo esempio, vuoi inserire la stringa plaintext-secret
in Secret Manager e poi sostituire
il secret in testo normale con un riferimento al secret gestito.
Crea secret Secret Manager per i secret in formato non crittografato
Per creare un secret di Secret Manager contenente il secret in testo non crittografatoplaintext-secret
, esegui questo comando:
echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \ --replication-policy="automatic" \ --data-file=-
Prima di eseguire il comando precedente, sostituisci le seguenti variabili:
Il nome della risorsa completo del nuovo secret ha il seguente
formato, con un VERSION di 1
:
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION
Per ulteriori informazioni su come archiviare, controllare le versioni e accedere ai secret in Secret Manager, consulta Creare un secret.
Sostituisci i secret in testo normale
Per aggiornare i file di configurazione, sostituisci ogni secret in testo normale
con un riferimento al provider googlesecretmanager
e al nome della risorsa
del secret gestito, come mostrato nell'esempio seguente:
receivers: mysql: type: mysql username: root password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}