Identity and Access Management

Utilizzo

Questa pagina fornisce una panoramica di Identity and Access Management (IAM) e del suo utilizzo con il controllo dell'accesso a bucket, cartelle gestite e risorse degli oggetti di archiviazione ideale in Cloud Storage.

Panoramica

IAM ti consente di controllare chi ha accesso risorse nel tuo progetto Google Cloud. Le risorse includono i bucket Cloud Storage, le cartelle gestite all'interno dei bucket e gli oggetti memorizzati al loro interno, nonché altre entità di Google Cloud come le istanze Compute Engine.

Le entità sono la definizione di "chi" di IAM. Le entità possono essere individuali utenti, gruppi, domini e persino il pubblico nel suo complesso. Entità concesse roles, che consentono loro di eseguire Cloud Storage e Google Cloud più in generale. Ogni ruolo è una raccolta di una o più autorizzazioni. Le autorizzazioni sono le unità di base di IAM: ogni autorizzazione consente di eseguire una determinata azione.

Ad esempio, l'autorizzazione storage.objects.create ti consente di creare oggetti. Questa autorizzazione è disponibile in ruoli come Creatore di oggetti archiviazione (roles/storage.objectCreator), che concede le autorizzazioni utili per creare oggetti in un bucket, e Amministratore oggetti archiviazione (roles/storage.objectAdmin), che concede una vasta gamma di autorizzazioni per lavorare con gli oggetti.

La raccolta di ruoli IAM impostati su una risorsa è chiamata criterio IAM. L'accesso concesso da questi ruoli si applica sia alla risorsa su cui è impostato il criterio sia a tutte le risorse contenute al suo interno. Ad esempio, puoi impostare un criterio IAM su un bucket che conferisca a un utente il controllo amministrativo del bucket e dei relativi oggetti. Puoi anche impostare un criterio IAM per il progetto complessivo che dia a un altro utente la possibilità di visualizzare gli oggetti in qualsiasi bucket all'interno del progetto.

Se hai una risorsa dell'organizzazione Google Cloud, puoi anche utilizzare i criteri di negazione IAM per negare l'accesso alle risorse. Quando un criterio di negazione è collegato a una risorsa, l'entità del criterio non può utilizza l'autorizzazione specificata per accedere alla risorsa o a qualsiasi risorsa secondaria all'interno indipendentemente dal ruolo assegnato. I criteri di rifiuto sostituiscono qualsiasi criterio di autorizzazione IAM.

Autorizzazioni

Le autorizzazioni consentono alle entità di eseguire azioni specifiche sui bucket, cartelle o oggetti in Cloud Storage. Ad esempio, L'autorizzazione storage.buckets.list consente a un'entità di elencare i bucket in progetto. Non concedi direttamente le autorizzazioni agli account principali, ma concedi ruoli che contengono una o più autorizzazioni.

Per un elenco di riferimento delle autorizzazioni IAM che si applicano a Cloud Storage, consulta Autorizzazioni IAM per Cloud Storage.

Ruoli

I ruoli sono un insieme di una o più autorizzazioni. Ad esempio, il ruolo visualizzatore oggetti Storage (roles/storage.objectViewer) contiene le autorizzazioni storage.objects.get e storage.objects.list. Puoi concedere i ruoli a che consente di eseguire azioni sui bucket, cartelle e oggetti nel tuo progetto.

Per un elenco di riferimento dei ruoli IAM applicabili Cloud Storage, consulta Ruoli IAM per Cloud Storage.

Concessione di ruoli a livello di progetto, bucket o cartella gestita

Puoi concedere ruoli alle entità a livello di progetto, bucket a livello di cartella gestita. Le autorizzazioni concesse da questi ruoli si applicano in modo additivo in tutta la gerarchia delle risorse. Puoi concedere ruoli a diversi livelli la gerarchia delle risorse per una maggiore granularità nel modello di autorizzazioni.

Ad esempio, supponi di voler concedere a un utente l'autorizzazione a leggere oggetti in qualsiasi bucket all'interno di un progetto, ma creare oggetti solo nel bucket A. Per farlo, puoi assegnare all'utente il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) per il progetto, che gli consente di leggere qualsiasi oggetto archiviato in qualsiasi bucket all'interno del progetto, e il ruolo Creatore oggetti Storage (roles/storage.objectCreator) per il bucket A, che gli consente di creare oggetti solo in quel bucket.

Alcuni ruoli possono essere utilizzati a tutti i livelli della gerarchia delle risorse. Se utilizzati a livello di progetto, le autorizzazioni in essi contenute si applicano a tutti i bucket, le cartelle e gli oggetti del progetto. Se utilizzata a livello di bucket, le autorizzazioni si applicano solo a un bucket specifico e alle cartelle e agli oggetti al suo interno li annotino. Esempi di questi ruoli sono il ruolo Amministratore Storage (roles/storage.admin), il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) e il ruolo Creatore oggetti Storage (roles/storage.objectCreator).

Alcuni ruoli possono essere applicati a un solo livello. Ad esempio, puoi applicare il ruolo Proprietario di oggetti legacy di archiviazione (roles/storage.legacyObjectOwner) solo a livello di bucket o di cartella gestita. I ruoli IAM che consentono di controllare i criteri di negazione IAM possono essere applicati a livello di organizzazione.

Relazione con gli ACL

Oltre a IAM, i bucket e gli oggetti possono utilizzare un sistema di controllo dell'accesso precedente chiamato elenchi di controllo dell'accesso (ACL) se la funzionalità di accesso uniforme a livello di bucket non è abilitata per il bucket. In genere, evita di usare ACL e abilita l'accesso uniforme a livello di bucket per il tuo bucket. Questa sezione illustra cosa devi tenere presente se consenti l'utilizzo di ACL per un bucket e gli oggetti al suo interno.

I ruoli IAM bucket legacy funzionano in tandem con gli ACL dei bucket: Quando aggiungi o rimuovi un ruolo di un bucket legacy, vengono associati gli ACL per riflettere le modifiche. Analogamente, se cambi un ACL specifico di un bucket, al ruolo IAM del bucket legacy corrispondente per il bucket.

Ruolo Legacy Bucket ACL equivalente
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) Lettore bucket
Writer bucket legacy Storage (roles/storage.legacyBucketWriter) Writer del bucket
Proprietario bucket legacy Storage (roles/storage.legacyBucketOwner) Proprietario del bucket

Tutti gli altri ruoli IAM a livello di bucket, incluso Oggetto legacy I ruoli IAM funzionano in modo indipendente dagli ACL. Analogamente, tutti i ruoli IAM a livello di progetto funzionano indipendentemente dagli ACL. Per Ad esempio, se fornisci a un utente il Visualizzatore oggetti Storage, (roles/storage.objectViewer), gli ACL rimangono invariati.

Poiché gli ACL degli oggetti funzionano in modo indipendente dai ruoli IAM, sono visualizzati nella gerarchia dei criteri IAM. Quando valuti chi ha l'accesso a uno degli oggetti, assicurati di controllare gli ACL oltre a controllare a livello di progetto e di bucket i criteri IAM.

Confronto tra i criteri di rifiuto IAM e le ACL

I criteri di negazione IAM si applicano agli accessi concessi dagli ACL. Ad esempio, se crei un criterio di rifiuto che nega a un'entità l'autorizzazione storage.objects.get in un progetto, l'entità non può visualizzare gli oggetti nel progetto, anche se le viene concessa l'autorizzazione storage.objects.get per i singoli oggetti.

Autorizzazione IAM per la modifica degli ACL

Puoi utilizzare IAM per concedere alle entità l'autorizzazione necessaria e modificare gli ACL degli oggetti. Le seguenti autorizzazioni storage.buckets consentono agli utenti di lavorare con gli ACL dei bucket e gli ACL di oggetti predefiniti: .get, .getIamPolicy, .setIamPolicy e .update.

Analogamente, le seguenti autorizzazioni di storage.objects consentono agli utenti di funzionano con gli ACL degli oggetti: .get, .getIamPolicy, .setIamPolicy e .update.

Ruoli personalizzati

Sebbene IAM abbia molti ruoli predefiniti che coprono casi d'uso comuni, puoi definire ruoli personalizzati che contengono pacchetti di autorizzazioni da te specificato. A questo scopo, IAM offre ruoli personalizzati.

Tipi di entità

Esistono diversi tipi di entità. Ad esempio, gli account Google e i gruppi Google rappresentano due tipi generali, mentre allAuthenticatedUsers e allUsers sono due tipi specializzati. Per un elenco di tipi di entità in IAM, consulta Identificatori entità. Per maggiori informazioni sugli amministratori in generale, consulta Concetti correlati all'identità.

Valori di convenienza

Cloud Storage supporta i valori di convenienza, che sono un insieme speciale di che possono essere applicate in modo specifico al tuo bucket IAM criteri. In genere dovresti evitare di utilizzare valori di convenienza in produzione ambienti, perché richiedono la concessione di ruoli di base, una pratica sconsigliata negli ambienti di produzione.

Un valore di convenienza è un identificatore di due parti costituito da un ruolo di base e un ID progetto:

  • projectOwner:PROJECT_ID
  • projectEditor:PROJECT_ID
  • projectViewer:PROJECT_ID

Un valore di praticità funge da ponte tra le entità a cui è stato concesso il ruolo di base e un ruolo IAM: il ruolo IAM concesso al valore di praticità viene, in effetti, concesso anche a tutte le entità del ruolo di base specificato per l'ID progetto specificato.

Ad esempio, supponiamo che jane@example.com e john@example.com abbiano il ruolo di visualizzatore (roles/viewer) di base per un progetto denominato my-example-project e che tu abbia un bucket in quel progetto denominato my-bucket. Se concedi il ruolo Creatore oggetti Storage (roles/storage.objectCreator) per my-bucket al valore pratico projectViewer:my-example-project, sia jane@example.com che john@example.com acquisiscono le autorizzazioni associate al ruolo Creatore oggetti Storage per my-bucket.

Puoi concedere e revocare l'accesso ai valori di convenienza per i tuoi bucket, ma tieni presente che Cloud Storage li applica automaticamente in determinate circostanze. Per ulteriori informazioni, consulta Comportamento modificabile per i ruoli di base in Cloud Storage.

Condizioni

Le condizioni IAM ti consentono di impostare condizioni che controllano come le autorizzazioni vengono concesse o negate agli entità. Cloud Storage supporta i seguenti tipi di attributi condizione:

  • resource.name: concedi o nega l'accesso a bucket e oggetti in base al nome del bucket o dell'oggetto. Puoi anche utilizzare resource.type per concedere l'accesso ai bucket o agli oggetti, ma questo è per lo più ridondante con l'utilizzo di resource.name. La seguente condizione di esempio applica un Impostazione IAM per tutti gli oggetti con lo stesso prefisso:

    resource.name.startsWith('projects/_/buckets/BUCKET_NAME/objects/OBJECT_PREFIX')

  • Data/ora: imposta una data di scadenza per l'autorizzazione.

    request.time < timestamp('2019-01-01T00:00:00Z')

Queste espressioni condizionali sono istruzioni logiche che utilizzano un sottoinsieme Common Expression Language (CEL). Specifichi le condizioni nelle associazioni di ruolo del criterio IAM di un bucket.

Tieni presenti queste limitazioni:

  • Devi abilitare l'accesso uniforme a livello di bucket su un bucket prima di aggiungerlo a livello di bucket. Sebbene le condizioni siano consentite a livello di progetto, devi eseguire la migrazione di tutti i bucket del progetto a un accesso uniforme a livello di bucket per impedire agli ACL di Cloud Storage di eseguire l'override delle condizioni IAM a livello di progetto. Puoi applicare un vincolo di accesso uniforme a livello di bucket per consentire un accesso uniforme a livello di bucket per tutti i nuovi bucket nel progetto.
  • Quando utilizzi l'API JSON per chiamare getIamPolicy e setIamPolicy sui bucket con condizioni, devi impostare il valore Criterio IAM alla 3.
  • Poiché l'autorizzazione storage.objects.list viene concessa a livello di bucket, non puoi utilizzare l'attributo condizione resource.name per limitare l'accesso all'elenco di oggetti a un sottoinsieme di oggetti nel bucket.
  • Le condizioni scadute rimangono nel criterio IAM finché non la rimuovi che li rappresentano.

Utilizzo con gli strumenti di Cloud Storage

Sebbene le autorizzazioni IAM non possano essere impostate tramite l'API XML, gli utenti a cui sono state concesse possono comunque utilizzare l'API XML, nonché qualsiasi altro strumento per accedere a Cloud Storage.

Per i riferimenti sulle autorizzazioni IAM che consentono agli utenti di eseguire azioni con diversi strumenti Cloud Storage, consulta Riferimenti IAM per Cloud Storage.

Passaggi successivi