Questo documento descrive i controlli di accesso a livello di campo e come impostarli su una
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 a
visualizzazioni di log, che nascondono tutti i dati di LogEntry
,
i controlli di accesso a livello di campo nascondono i singoli campi di LogEntry
. Puoi
imposta sia i controlli dell'accesso a livello di campo sia le autorizzazioni delle visualizzazioni log su un
di Logging. Puoi limitare e gestire l'accesso a livello di campo
utilizzando Google Cloud CLI.
Per limitare l'accesso ai campi dei log:
- Configura i campi
LogEntry
con restrizioni in un bucket di log. - Concedi solo agli utenti che devono visualizzare i campi con restrizioni di
logging.fieldAccessor
ruolo IAM per il percorso del campo in questione o un ruolo che contiene autorizzazioni simili.
Logging controlla le autorizzazioni IAM quando un utente esegue query
di un bucket in cui sono impostati campi con restrizioni. Tutti i campi con
Gli ACL configurati vengono negati agli utenti che non hanno
logging.FieldAccessor
per quel campo, nel senso che:
- 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.
- Nei risultati di
LogEntry
restituiti non vengono inseriti i campi con restrizioni.
Campi con restrizioni
Puoi limitare l'accesso al campo jsonPayload
, che
limita anche l'accesso ai 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
segnali la versione 362.0.0 o successive.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 l'impostazione predefinita progetto Google Cloud per i comandi Google Cloud CLI. Prima di eseguire il comando, effettua 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 che contiene il bucket:
Per informazioni sull'impostazione dei ruoli IAM, consulta Guida al controllo dell'accesso per Logging.
Impostare il controllo dell'accesso a livello di campo
Le restrizioni a livello di campo sono configurate bucket di log e può essere applicato a un modello esistente bucket di log o di creazione di un nuovo bucket di log.
Limita 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 queste sostituzioni:
- BUCKET_ID: il nome o l'ID del bucket di log.
- LOCATION: la località del bucket di log.
- DESCRIPTION: la descrizione del bucket di log.
- RESTRICTED_FIELDS: l'elenco separato da virgole dei campi limitati.
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
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. Basandosi sulla precedente
Ad esempio, se vuoi limitare l'accesso al campo,
jsonPayload.data.entryDate
oltre ai campi già limitati
jsonPayload.data.ssn
e httpRequest.status
, il tuo comando avrebbe questo aspetto
questo:
gcloud logging buckets update my-existing-log-bucket --location=global \ --restricted-fields="jsonPayload.data.ssn,jsonPayload.data.entryDate,httpRequest.status"
Se non hai ripristinato i campi già limitati e hai appena elencato
jsonPayload.data.entryDate
, poi entrambi jsonPayload.data.ssn
e
httpRequest.status
verranno rimossi come campi con restrizioni.
Gestione dell'accesso ai campi con restrizioni
Per impostazione predefinita, Logging nasconde tutti i campi con restrizioni agli utenti che
Non hanno il ruolo logging.fieldAccessor
o un ruolo con autorizzazioni simili.
Logging espone i campi con restrizioni agli utenti che hanno sia il ruolo
per visualizzare i log nel bucket e il ruolo logging.fieldAccessor
.
Puoi modificare il comportamento predefinito per limitare i sottoinsiemi di campi con restrizioni a utenti specifici.
Concessione dell'autorizzazione in tutti i campi con restrizioni
Per concedere agli utenti l'autorizzazione per tutti i campi con restrizioni, concedi agli utenti l'autorizzazione
ruolo logging.fieldAccessor
o un ruolo personalizzato contenente
Ruolo logging.fieldAccessor
.
Console
Per concedere 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 Console di amministrazione.
- Seleziona l'entità e fai clic su Modifica.
- Nel riquadro Modifica autorizzazioni, seleziona Funzione di accesso ai campi di log. per il ruolo.
- Seleziona Aggiungi condizione IAM.
- Inserisci un titolo e una descrizione nei campi Titolo e Descrizione.
Seleziona la scheda Editor 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 attuali in un file, esegui il
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. Di conseguenza, tutti i campi per le voci di log archiviate nel bucket di log vengono accessibile alle entità elencate 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à da utilizzare
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 gli identificatori entità. Nel campomembers
dellapolicy.json
, utilizza il formato"PRINCIPAL-TYPE":"ID"
. - DESCRIPTION: una descrizione della condizione.
- TITLE: un titolo per la condizione.
- PRINCIPAL: un identificatore per l'entità da utilizzare
concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma:
Per applicare il file
policy.json
aggiornato, esegui ilgcloud 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 le autorizzazioni per un sottoinsieme di campi con restrizioni, imposta i campi
gli utenti possono accedere quando viene concesso il ruolo logging.fieldAccessor
o quando
L'impostazione di un ruolo personalizzato che contenga 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 imposti il campo limitato su
jsonPayload
, devi concedere l'autorizzazione il campojsonPayload
, non il campoJsonpayload
.I percorsi dei campi, incluse le stringhe delle chiavi mappa, sono sensibili alle maiuscole, ma protobuf i percorsi dei campi possono essere espressi come snake (senza distinzione tra maiuscole e minuscole) (snake_case) o maiuscole/minuscole con distinzione tra maiuscole e minuscole (camelCase).
Ad esempio,
logName
è un campo nel protobufLogEntry
;log_name
fa riferimento allo stesso campo. Il campojsonPayload.fooBar
fa riferimento un campo diverso dajsonPayload.foo_bar
, poiché i nomi dei campi si trovano sottojsonPayload
sono chiavi di stringa della mappa; tuttavia, si riferiscejson_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. Se, ad esempio, specifichi una su
jsonPayload.foo
, devi configurare IAM autorizzazioni perjsonPayload.foo
e non perjson_payload.foo
.
Per ulteriori informazioni sui tipi di campi di log validi, consulta Lingua delle query di logging: valori e conversioni.
Console
Per concedere agli utenti l'accesso a un campo con restrizioni 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 Console di amministrazione.
- Seleziona l'entità e fai clic su Modifica.
- Nel riquadro Modifica autorizzazioni, seleziona Funzione di accesso ai campi di log. per il ruolo.
- Seleziona Aggiungi condizione IAM.
- Inserisci un titolo e una descrizione nei campi Titolo e Descrizione.
Seleziona la scheda Editor 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 limitato utilizzando gcloud CLI, completa i seguenti passaggi:
Per salvare le informazioni IAM in un file, esegui
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 denominato
policy.json
.Aggiorna il file
policy.json
con ulteriori associazioni.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à da utilizzare
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
dellapolicy.json
, utilizza il formato"PRINCIPAL-TYPE":"ID"
. - DESCRIPTION: una descrizione della condizione.
- TITLE: un titolo per la condizione.
- PRINCIPAL: un identificatore per l'entità da utilizzare
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 uno specifico campo secondario httpRequest
. Quando un utente
sta esaminando le proprie voci di log
Per gli utenti con l'autorizzazione di accesso a tutti i campi con restrizioni, a tutti i campi in una voce di log sono visibili.
Per gli utenti che hanno l'autorizzazione per accedere solo al campo con restrizioni
jsonPayload
LogEntry
, tutti i campi senza restrizioni sono visibili, e il campojsonPayload
è visibile.Per gli utenti senza autorizzazione di visualizzazione dei campi con restrizioni, sono visibili solo i campi senza restrizioni.
Se un utente scrive una query con un restrizione globale, le voci di log che contengono un campo con restrizioni vengono omesse dalla risposta.
Campi con limitazioni per le schede
Per elencare i campi con restrizioni in un bucket di log, esegui questo comando
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 imposti e utilizzi il 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.
- Dimensione dei campi limitati: il percorso del campo limitato deve essere inferiore a 800 B di lunghezza.
Per ulteriori informazioni sui limiti che potrebbero essere applicati al tuo utilizzo Cloud Logging, consulta Quote e limiti.