Questo documento descrive i controlli degli accessi a livello di campo e come impostarli in un
bucket di logging.
I controlli dell'accesso a livello di campo ti consentono di nascondere singoli campi LogEntry
agli utenti di un progetto Google Cloud, offrendoti un modo più granulare per controllare i dati dei log a cui un utente può accedere.
Panoramica
La registrazione utilizza il controllo dell'accesso a livello di campo per nascondere
gli campi LogEntry
agli utenti di un progetto Google Cloud che non dispongono delle autorizzazioni necessarie per visualizzarli. Rispetto alle
visualizzazioni dei log, che nascondono l'intero LogEntry
,
i controlli dell'accesso a livello di campo nascondono i singoli campi del LogEntry
. Puoi impostare sia i controlli dell'accesso a livello di campo sia le autorizzazioni per le viste dei log in un bucket di log. Puoi limitare e gestire il controllo dell'accesso a livello di campo utilizzando Google Cloud CLI.
Per limitare l'accesso ai campi di log:
- Configura i campi con restrizioni
LogEntry
in un bucket di log. - Assegna il ruolo IAM
logging.fieldAccessor
per il percorso del campo o un ruolo che contenga autorizzazioni simili solo agli utenti che devono visualizzare i campi con limitazioni.
La registrazione controlla le autorizzazioni IAM quando un utente esegue query sui log di un bucket in cui sono impostati campi con limitazioni. Tutti i campi con le ACL configurate sono negati agli utenti senza il corrispondente logging.FieldAccessor
per quel campo, ovvero:
- L'utente riceve un errore di autorizzazione negata se tenta di eseguire query direttamente sui campi con limitazioni.
- Le ricerche globali non prendono in considerazione i contenuti dei campi vietati.
- Eventuali risultati
LogEntry
restituiti omettono i campi con limitazioni.
Campi con limitazioni
Puoi limitare l'accesso al campo jsonPayload
, che limita anche l'accesso ai relativi percorsi nidificati.
Puoi anche limitare l'accesso ai campi foglia di quanto segue:
Ad esempio, puoi limitare l'accesso al campo labels.check_id
.
Prima di iniziare
Prima di iniziare a impostare i controlli dell'accesso a livello di campo, svolgi quanto segue:
Verifica che
gcloud --version
riporti la versione 362.0.0 o successiva.Per installare la versione più recente dell'interfaccia a riga di comando gcloud, esegui il comando
gcloud components update
:gcloud components update
Per istruzioni su come installare gcloud CLI, consulta Installazione di Google Cloud CLI.
Esegui
gcloud config set
per configurare il progetto Google Cloud predefinito per i comandi Google Cloud CLI. Prima di eseguire il comando, esegui la seguente sostituzione:- PROJECT_ID: l'identificatore del progetto.
Comando:
gcloud config set project PROJECT_ID
Verifica di disporre di uno dei seguenti ruoli IAM per il progetto Google Cloud contenente il bucket:
Per informazioni sull'impostazione dei ruoli IAM, consulta la guida al controllo dell'accesso per la registrazione.
Impostare controllo dell'accesso a livello di campo
Le restrizioni a livello di campo sono configurate a livello di bucket di log e possono essere applicate a un bucket di log esistente o durante la creazione di un nuovo bucket di log.
Limitare i campi in un nuovo bucket
Per limitare i campi dei log durante la creazione di un nuovo bucket dei log, esegui il comando
gcloud logging buckets create
.
Prima di eseguire il comando, effettua le seguenti sostituzioni:
- BUCKET_ID: il nome o l'ID del bucket dei log.
- LOCATION: la posizione del bucket di log.
- DESCRIPTION: la descrizione del bucket di log.
- RESTRICTED_FIELDS: l'elenco dei campi soggetti a restrizioni separati da virgole.
Comando:
gcloud logging buckets create BUCKET_ID --location=LOCATION \
--description=DESCRIPTION --restricted-fields=RESTRICTED_FIELDS
Comando di esempio:
gcloud logging buckets create new-log-bucket --location=global \ --description="New bucket with restricted fields" --restricted-fields="jsonPayload.data.ssn,httpRequest.status"
Limitare i campi in un bucket esistente
Per limitare i campi dei log in un bucket di log esistente, esegui il comando
gcloud logging buckets update
:
gcloud logging buckets update BUCKET_ID --location=LOCATION \
--restricted-fields=RESTRICTED_FIELDS
Comando di esempio:
gcloud logging buckets update my-existing-log-bucket --location=global \ --restricted-fields="jsonPayload.data.ssn,httpRequest.status"
Se vuoi aggiungere campi alle limitazioni esistenti, il comando di aggiornamento deve elencare di nuovo l'intero insieme di campi con limitazioni. Basandoti sull'esempio precedente, se vuoi limitare l'accesso al campo jsonPayload.data.entryDate
oltre ai campi già limitati jsonPayload.data.ssn
e httpRequest.status
, il comando sarà il seguente:
gcloud logging buckets update my-existing-log-bucket --location=global \ --restricted-fields="jsonPayload.data.ssn,jsonPayload.data.entryDate,httpRequest.status"
Se non hai rimesso in elenco i campi già soggetti a limitazioni e hai elencato solo jsonPayload.data.entryDate
, sia jsonPayload.data.ssn
sia httpRequest.status
verranno rimossi come campi con limitazioni.
Gestione dell'accesso ai campi con restrizioni
Per impostazione predefinita, la registrazione nasconde tutti i campi con limitazioni agli utenti che non dispongono del ruolo logging.fieldAccessor
o di un ruolo con autorizzazioni simili.
La registrazione espone i campi con limitazioni agli utenti che dispongono sia dell'autorizzazione per visualizzare i log nel bucket sia del ruolo logging.fieldAccessor
.
Puoi modificare il comportamento predefinito per limitare sottoinsiemi di campi con limitazioni a utenti specifici.
Concedere l'autorizzazione per tutti i campi con limitazioni
Per concedere agli utenti l'autorizzazione per tutti i campi con limitazioni, assegna loro il ruolo logging.fieldAccessor
o un ruolo personalizzato che lo contenga.logging.fieldAccessor
Console
Per assegnare agli utenti il ruolo logging.fieldAccessor
utilizzando la console Google Cloud,
completa i seguenti passaggi:
-
Nella console Google Cloud, vai alla pagina IAM:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.
- Seleziona l'entità e fai clic su Modifica.
- Nel riquadro Modifica autorizzazioni, seleziona Accesso ai campi log per il ruolo.
- Seleziona Aggiungi condizione IAM.
- Inserisci un titolo e una descrizione nei campi Titolo e Descrizione.
Seleziona la scheda Editor delle condizioni e inserisci la seguente espressione:
resource.name.extract("locations/global/buckets/{bucket}/") == "BUCKET_ID"
Seleziona Salva.
Le autorizzazioni di Identity and Access Management vengono aggiornate immediatamente.
gcloud
Per assegnare agli utenti il ruolo logging.fieldAccessor
utilizzando gcloud CLI, completa i seguenti passaggi:
Per salvare le informazioni sui criteri IAM correnti in un file, esegui il comando
gcloud projects get-iam-policy
e salva l'output in un file:gcloud projects get-iam-policy PROJECT_ID --format=json > policy.json
Il comando precedente salva le informazioni in un file chiamato
policy.json
.Aggiorna il file
policy.json
con associazioni aggiuntive.Di seguito, il campo
expression
elenca solo un bucket di log. Pertanto, tutti i campi per le voci di log archiviate in quel bucket di log sono accessibili ai principali elencati nella sezionemembers
."bindings": [ { "condition": { "description": "DESCRIPTION", "expression": "resource.name.extract(\"locations/global/buckets/{bucket}/\") == 'BUCKET_ID'", "title": "TITLE" }, "members": [ PRINCIPAL ], "role": "roles/logging.fieldAccessor" } ]
Nell'esempio precedente, i campi hanno i seguenti significati:
- PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma:
PRINCIPAL-TYPE:ID
. Ad esempio:user:my-user@example.com
. Per un elenco completo dei formati chePRINCIPAL
può avere, consulta Identificatori principali. Nel campomembers
delpolicy.json
file, utilizza il formato"PRINCIPAL-TYPE":"ID"
. - DESCRIPTION: una descrizione della condizione.
- TITLE: un titolo per la condizione.
- PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma:
Per applicare il file
policy.json
aggiornato, esegui il comandogcloud projects set-iam-policy
:gcloud projects set-iam-policy PROJECT_ID policy.json
Le autorizzazioni di Identity and Access Management vengono aggiornate immediatamente.
Concedere autorizzazioni per un sottoinsieme di campi con limitazioni
Per concedere agli utenti autorizzazioni su un sottoinsieme di campi con limitazioni, imposta i campi
a cui possono accedere quando concedi loro il ruolo logging.fieldAccessor
o quando
imposti un ruolo personalizzato che contiene logging.fieldAccessor
.
Tieni presente quanto segue:
L'ortografia e l'uso delle lettere maiuscole del campo con limitazioni così come appare nella configurazione del bucket devono corrispondere a quelle del campo con limitazioni nel nome dell'autorizzazione IAM. Ad esempio, se impostate il campo con limitazioni su
jsonPayload
, dovete concedere l'autorizzazione al campojsonPayload
, non al campoJsonpayload
.I percorsi dei campi, incluse le stringhe chiave mappa, sono sensibili alle maiuscole, ma i percorsi dei campi protobuf possono essere espressi in snake case (snake_case) senza distinzione tra maiuscole e minuscole o in camel case (camelCase) con distinzione tra maiuscole e minuscole.
Ad esempio,
logName
è un campo nel protobufLogEntry
;log_name
fa riferimento allo stesso campo. Il campojsonPayload.fooBar
fa riferimento a un campo diverso dajsonPayload.foo_bar
, poiché i nomi dei campi sottojsonPayload
sono chiavi di stringa mappa; tuttavia, fa riferimento ajson_payload.fooBar
.Anche se i percorsi dei campi sono riferimenti validi allo stesso campo, devi corrispondere a ortografia, lettere maiuscole e maiuscole quando configuri limitazioni e autorizzazioni IAM. Ad esempio, se specifichi una limitazione per
jsonPayload.foo
, devi configurare le autorizzazioni IAM perjsonPayload.foo
e non perjson_payload.foo
.
Per ulteriori informazioni sui tipi di campi di log validi, consulta Lingua di query di log: valori e conversioni.
Console
Per concedere agli utenti l'accesso a un campo con limitazioni utilizzando la console Google Cloud, completa i seguenti passaggi:
-
Nella console Google Cloud, vai alla pagina IAM:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.
- Seleziona l'entità e fai clic su Modifica.
- Nel riquadro Modifica autorizzazioni, seleziona Accesso ai campi log per il ruolo.
- Seleziona Aggiungi condizione IAM.
- Inserisci un titolo e una descrizione nei campi Titolo e Descrizione.
Seleziona la scheda Editor delle condizioni e inserisci la seguente espressione:
resource.name.extract("locations/global/buckets/BUCKET_ID/fields/{field}") == "RESTRICTED_FIELDS"
Seleziona Salva.
Le autorizzazioni di Identity and Access Management vengono aggiornate immediatamente.
gcloud
Per concedere agli utenti l'accesso a un campo con limitazioni utilizzando gcloud CLI, completa i seguenti passaggi:
Per salvare le informazioni IAM in un file, esegui il comando
gcloud projects get-iam-policy
e salva l'output in un file:gcloud projects get-iam-policy PROJECT_ID --format=json > policy.json
Il comando precedente salva le informazioni in un file chiamato
policy.json
.Aggiorna il file
policy.json
con associazioni aggiuntive.Di seguito, il campo
expression
elenca campi specifici. Pertanto, solo i principali elencati nella sezionemembers
hanno accesso ai campi delle voci di log archiviati nel bucket dei log specificato."bindings": [ { "condition": { "description": "DESCRIPTION", "expression": "resource.name.extract(\"locations/global/buckets/BUCKET_ID/fields/{field}\") == 'RESTRICTED_FIELDS'", "title": "TITLE" }, "members": [ PRINCIPAL ], "role": "roles/logging.fieldAccessor" } ]
Nell'esempio precedente, i campi hanno i seguenti significati:
- PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma:
PRINCIPAL-TYPE:ID
. Ad esempio:user:my-user@example.com
. Per un elenco completo dei formati chePRINCIPAL
può avere, consulta Identificatori principali. Nel campomembers
delpolicy.json
file, utilizza il formato"PRINCIPAL-TYPE":"ID"
. - DESCRIPTION: una descrizione della condizione.
- TITLE: un titolo per la condizione.
- PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma:
Per applicare il file
policy.json
aggiornato, esegui il comandogcloud projects set-iam-policy
:gcloud projects set-iam-policy PROJECT_ID policy.json
Le autorizzazioni di Identity and Access Management vengono aggiornate immediatamente.
Esempio
Supponiamo che un bucket di log limiti il campo jsonPayload
, un'etichetta specifica
e un sottocampo httpRequest
specifico. Quando un utente esamina le voci di log, si verifica quanto segue
Per gli utenti che dispongono dell'autorizzazione per accedere a tutti i campi con restrizioni, tutti i campi in una voce di log sono visibili.
Per gli utenti che hanno l'autorizzazione ad accedere solo al campo con restrizioni
jsonPayload
LogEntry
, tutti i campi senza restrizioni sono visibili, e il campojsonPayload
è visibile.Per gli utenti che non dispongono dell'autorizzazione per visualizzare i campi con limitazioni, sono visibili solo i campi senza restrizioni.
Se un utente scrive una query con una limitazione globale, le voci di log che contengono un campo con limitazioni vengono omesse dalla risposta.
Campi con restrizioni per le schede
Per elencare i campi con limitazioni in un bucket di log, esegui il seguente
gcloud logging buckets describe
:
gcloud logging buckets describe BUCKET_ID --location=LOCATION
Comando di esempio:
gcloud logging buckets describe my-log-bucket --location=global
Quote e limiti
Quando configuri e utilizzi controllo dell'accesso a livello di campo, tieni presente quanto segue:
- Numero di campi con limitazioni: puoi limitare fino a 20 campi per ogni bucket di log.
- Dimensioni dei campi con limitazioni: il percorso del campo con limitazioni deve avere una lunghezza inferiore a 800 B.
Per ulteriori informazioni sui limiti che potrebbero essere applicati all'utilizzo di Cloud Logging, consulta Quote e limiti.