Questa pagina descrive come eseguire il routing delle voci di log creando sink configurati con service account gestiti dall'utente. Per impostazione predefinita, Logging utilizza un account di servizio Logging per tutti i sink in una risorsa. Tuttavia, se i sink dei log si trovano in progetti diversi, puoi creare e gestire il tuo account di servizio gestito dall'utente, che ti consente di gestire centralmente le autorizzazioni di Identity and Access Management dal progetto che contiene il tuo account di servizio gestito dall'utente.
Puoi creare un sink che utilizza un account di servizio gestito dall'utente solo se la destinazione del sink è un bucket log o un progetto. Google Cloud L'esempio riportato in questo documento illustra come configurare un sink che utilizza un service account gestito dall'utente in cui la destinazione è un bucket log.
Prima di iniziare
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Assicurati di avere un account di servizio gestito dall'utente e poi imposta le seguenti variabili sui valori appropriati per il tuo account di servizio gestito dall'utente:
CUSTOM_SA_PROJECT_ID: L'ID progetto del progetto che contiene l'account di servizio gestito dall'utente.
CUSTOM_SA: l'indirizzo email del account di servizio gestito dall'utente.
Per informazioni su come creare unaccount di serviziot, vedi Creare service account.
Assicurati di avere un bucket dei log che possa fungere da destinazione di unsink di logg, quindi imposta le seguenti variabili sui valori appropriati per il tuo bucket dei log. Se necessario, crea un bucket di log:
LOG_BUCKET_PROJECT_ID: L'ID progetto del progetto contenente il bucket dei log.
LOCATION: La posizione del bucket dei log.
BUCKET_NAME: il nome del bucket dei log.
Identifica il nome del account di servizio Logging che esiste nel progetto in cui prevedi di creare il sink di log, quindi imposta le seguenti variabili sui valori appropriati:
SINK_PROJECT_ID: L'ID progetto del progetto in cui prevedi di creare il sink di log.
LOGGING_SA: l'indirizzo email del account di servizio Logging predefinito. Per ottenere questo indirizzo, esegui questo comando:
gcloud logging settings describe --project=SINK_PROJECT_ID
Nella risposta, la riga che inizia con
loggingServiceAccountId
elenca l'indirizzo email del tuo account di servizio.
Nel progetto contenente il account di servizio gestito dall'utente, assicurati che il vincolo booleano del criterio dell'organizzazione
iam.disableCrossProjectServiceAccountUsage
non venga applicato. Per impostazione predefinita, questo vincolo viene applicato. Per disattivare questo vincolo in modo da poter collegare unaccount di serviziot a una risorsa in un altro progetto, esegui questo comando:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_ID
Per ulteriori informazioni sull'abilitazione dei service account tra progetti, consulta Abilitare l'allegato dei service account tra progetti.
- PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori dell'entità in genere hanno il seguente formato:
PRINCIPAL-TYPE:ID
. Ad esempio:user:my-user@example.com
. Per un elenco completo dei formati chePRINCIPAL
può avere, consulta Identificatori principali. - SINK_NAME: il nome del sink di log.
Esegui il comando
gcloud logging write
:Prima di eseguire il comando seguente, esegui le sostituzioni indicate di seguito:
- LOG_NAME: il nome del log. Ad esempio, potresti
impostare questo campo su
mylog
.
Esegui il comando
gcloud logging write
:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
Il comando precedente restituisce il seguente messaggio:
Created log entry.
- LOG_NAME: il nome del log. Ad esempio, potresti
impostare questo campo su
Per leggere la voce di log appena scritta, esegui questo comando:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
Per scoprire di più sull'instradamento delle voci di log verso destinazioni supportate, consulta Instradare i log verso destinazioni supportate.
Per una panoramica su come Logging esegue il routing e archivia le voci di log, consulta Panoramica su routing e archiviazione.
Se riscontri problemi durante l'utilizzo dei sink per indirizzare le voci di log, consulta Risolvere i problemi di routing dei log.
Per scoprire come visualizzare le voci di log nelle relative destinazioni, nonché come vengono formattate e organizzate, consulta Visualizzare i log nelle destinazioni sink.
Concedi ruoli IAM
Questa sezione descrive i prerequisiti per la creazione di un sink che utilizza un account di servizio gestito dall'utente.
Consenti all'account di servizio gestito dall'utente di scrivere voci di log nella destinazione sink
Concedi all'account di servizio gestito dall'utente le autorizzazioni necessarie per scrivere voci di log nella destinazione del sink che creerai in un passaggio successivo. La destinazione del sink sarà un bucket dei log memorizzato nel progetto denominato LOG_BUCKET_PROJECT_ID.
Per concedere le autorizzazioni richieste al account di servizio gestito dall'utente, concedi
il ruolo Writer bucket di log (roles/logging.bucketWriter
) nel progetto
contenente il bucket di log:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Per ulteriori informazioni sul comando precedente, consulta
gcloud projects add-iam-policy-binding
.
Configura la rappresentazione dell'identità del account di servizio
Configura l'account di servizio Cloud Logging predefinito, LOGGING_SA, in modo che possa rappresentare l'account di servizio gestito dall'utente, CUSTOM_SA. L'account di servizio Cloud Logging predefinito esiste nel progetto Google Cloud in cui vuoi creare sink di log che utilizzano l'account di servizio gestito dall'utente.
Per configurare l'imitazione dell'account di servizio, concedi il ruolo
Creatore token account di servizio
(roles/iam.serviceAccountTokenCreator
) all'account di servizio Cloud Logging
nell'account di servizio gestito dall'utente:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'
L'impersonificazione del service account coinvolge due entità: il account di servizio che non dispone delle autorizzazioni per accedere a una risorsa e il account di servizio con privilegi che dispone delle autorizzazioni per accedere a una risorsa. In questo caso, il account di servizio gestito dall'utente è l'account con privilegi perché può scrivere voci di log nella destinazione del sink, ovvero un bucket di log nel progetto denominato LOG_BUCKET_PROJECT_ID. Il account di servizio Logging dispone dei privilegi per eseguire il routing delle voci di log.
Per saperne di più sul ruolo Creatore token service account, vedi Ruolo Creatore token service account.
Per ulteriori informazioni sull'impersonificazione del account di servizio, consulta Informazioni sull'account di servizio account.
Consente all'entità di eseguire operazioni come account di servizio gestito dall'utente
Concedi all'entità che creerà il sink le autorizzazioni necessarie per eseguire operazioni come account di servizio gestito dall'utente.
Per concedere le autorizzazioni richieste, assegna all'entità il ruolo
Utente service account (roles/iam.serviceAccountUser
)
nel progetto Google Cloud che archivia il
account di servizio gestito dall'utente, CUSTOM_SA_PROJECT_ID.
Prima di eseguire il comando seguente, esegui le sostituzioni indicate di seguito:
Esegui il comando
gcloud iam service-accounts add-iam-policy-binding
:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Se utilizzi ruoli personalizzati, l'entità deve disporre dell'autorizzazione
iam.serviceAccounts.actAs
.
Per ulteriori informazioni sul ruolo Utente service account, consulta Ruolo Utente service account.
Crea un sink di log che utilizza un account di servizio gestito dall'utente
Per creare un sink con un account di servizio gestito dall'utente, esegui il comando
gcloud logging sinks create
e includi l'opzione --custom-writer-identity
.
Prima di eseguire il comando seguente, esegui le sostituzioni indicate di seguito:
Esegui il comando
gcloud logging sinks create
:
gcloud logging sinks create SINK_NAME \
logging.googleapis.com/projects/LOG_BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID
Verifica che il sink stia instradando le voci di log
In questa sezione, utilizzi gcloud CLI per scrivere e leggere una voce di log per verificare che il sink indirizzi correttamente le voci di log.
Per verificare che il sink stia instradando correttamente le voci di log: