Identity and Access Management

Vai agli esempi

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

Panoramica

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

Le entità sono "chi" di IAM. Le entità possono essere singoli utenti, gruppi, domini o persino il pubblico nel suo insieme. Ai entità sono assegnati i ruoli, che danno la possibilità di eseguire azioni in Cloud Storage e in Google Cloud in modo più 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 consente di creare oggetti. Questa autorizzazione si trova in ruoli come Creatore oggetti Storage, che concede le autorizzazioni utili per creare oggetti in un bucket, e Amministratore oggetti Storage, che concede un'ampia gamma di autorizzazioni per lavorare con gli oggetti.

La raccolta dei ruoli IAM che hai impostato su una risorsa è denominata criterio IAM. L'accesso concesso da questi ruoli si applica sia alla risorsa su cui è impostato il criterio sia alle risorse contenute al suo interno. Ad esempio, puoi impostare un criterio IAM su un bucket che fornisce al controllo utente un controllo amministrativo del bucket e dei suoi oggetti. Puoi anche impostare un criterio IAM sul progetto complessivo per concedere a un altro utente la possibilità di visualizzare gli oggetti in qualsiasi bucket all'interno di tale progetto.

Autorizzazioni

Le autorizzazioni consentono alle entità di eseguire azioni specifiche su bucket o oggetti in Cloud Storage. Ad esempio, l'autorizzazione storage.buckets.list consente a un'entità di elencare i bucket nel progetto. Non devi concedere direttamente le autorizzazioni principali, ma puoi concedere ruoli che dispongono di una o più autorizzazioni al loro interno.

Per un elenco di riferimento delle autorizzazioni IAM valide per Cloud Storage, consulta Autorizzazioni IAM per Cloud Storage.

Ruoli

I ruoli sono un gruppo di una o più autorizzazioni. Ad esempio, il ruolo Visualizzatore oggetti Storage contiene le autorizzazioni storage.objects.get e storage.objects.list. Puoi concedere ruoli alle entità, che consentono loro di eseguire azioni sui bucket e sugli oggetti nel progetto.

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

Ruoli a livello di progetto e ruoli a livello di bucket

La concessione dei ruoli a livello di bucket non influisce sui ruoli esistenti concessi a livello di progetto e viceversa. Puoi quindi utilizzare questi due livelli di granularità per personalizzare le autorizzazioni. Ad esempio, supponiamo che tu voglia consentire a un utente di leggere gli oggetti in qualsiasi bucket, ma creare oggetti solo in un bucket specifico. Per raggiungere questo obiettivo, assegna all'utente il ruolo Visualizzatore oggetti Storage a livello di progetto, consentendogli di leggere gli oggetti archiviati in qualsiasi bucket del progetto e di assegnare il ruolo Creatore oggetti Storage a livello di bucket per un bucket specifico, consentendo così all'utente di creare oggetti solo in quel bucket.

Alcuni ruoli possono essere utilizzati sia a livello di progetto che a livello di bucket. Se utilizzate a livello di progetto, le autorizzazioni che contengono si applicano a tutti i bucket e a tutti gli oggetti nel progetto. Se utilizzate a livello di bucket, le autorizzazioni si applicano solo a un bucket specifico e agli oggetti al suo interno. Esempi di tali ruoli sono le seguenti: Amministratore oggetti di archiviazione, Visualizzatore oggetti Storage e Creatore oggetti Storage.

Alcuni ruoli possono essere applicati a un solo livello. Ad esempio, puoi applicare il ruolo Proprietario oggetti legacy Storage solo a livello di bucket.

Relazione con gli ACL

I ruoli IAM precedenti funzionano in tandem con i ACL bucket: quando aggiungi o rimuovi un ruolo bucket precedente, gli ACL associati al bucket riflettono le modifiche. Allo stesso modo, la modifica di un ACL specifico del bucket aggiorna il ruolo IAM legacy di bucket corrispondente per il bucket.

Ruolo bucket precedente ACL equivalente
Lettore del bucket legacy di Storage Lettore di bucket
Writer bucket legacy Storage Writer bucket
Proprietario bucket Cloud Storage precedente Proprietario del bucket

Tutti gli altri ruoli IAM a livello di bucket, inclusi i ruoli IAM Oggetto legacy, funzionano in modo indipendente dagli ACL. Analogamente, tutti i ruoli IAM a livello di progetto funzionano in modo indipendente dagli ACL. Ad esempio, se assegni a un utente il ruolo Visualizzatore oggetti Storage, gli ACL rimarranno invariati. Ciò significa che puoi utilizzare i ruoli IAM a livello di bucket per concedere l'accesso generale a tutti gli oggetti all'interno di un bucket, e i ACL degli oggetti granulari per personalizzare l'accesso a oggetti specifici all'interno del bucket.

Autorizzazione IAM per la modifica degli ACL

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

Allo stesso modo, le seguenti autorizzazioni storage.objects consentono agli utenti di lavorare con gli ACL degli oggetti: .get, .getIamPolicy, .setIamPolicy e .update.

Ruoli personalizzati

IAM presenta molti ruoli predefiniti che coprono i casi d'uso più comuni, ma ti consigliamo di definire ruoli personalizzati contenenti i set di autorizzazioni specificati. A questo scopo, IAM offre ruoli personalizzati.

Tipi di entità

Esistono diverse tipologie di entità. Ad esempio, gli Account Google e i gruppi di Google rappresentano due tipi generali, mentre allAuthenticatedUsers e allUsers sono due tipi specializzati. Per un elenco dei tipi di entità tipici in IAM, consulta Concetti relativi all'identità.

Valori di convenienza

Cloud Storage supporta i valori di convenienza, ovvero un insieme speciale di criteri che possono essere applicati in modo specifico ai criteri del bucket IAM. In genere, evita di utilizzare valori di convenienza negli ambienti di produzione, poiché 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 convenienza funge da ponte tra le entità concesse per il ruolo di base e un ruolo IAM: il ruolo IAM concesso al valore di convenienza 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 Visualizzatore 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 per my-bucket al valore di projectViewer:my-example-project, sia jane@example.com sia john@example.com ottengono le autorizzazioni associate a Storage Object Creator 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 consentono di impostare le condizioni che controllano il modo in cui le autorizzazioni vengono concesse alle entità. Cloud Storage supporta i seguenti tipi di attributi di condizione:

  • resource.name: concedi l'accesso ai bucket e agli oggetti in base al nome del bucket o dell'oggetto. Puoi anche utilizzare resource.type per concedere l'accesso a bucket o oggetti, ma il funzionamento è principalmente ridondante con resource.name. La seguente condizione di esempio applica un'impostazione IAM a 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 espressioni logiche che utilizzano un sottoinsieme del Common Expression Language (CEL). Puoi specificare le condizioni nelle associazioni di ruoli del criterio IAM di un bucket.

Tieni presenti queste limitazioni:

  • Devi abilitare l'accesso uniforme a livello di bucket su un bucket prima di aggiungere condizioni a livello di bucket. Anche se le condizioni sono consentite a livello di progetto, devi eseguire la migrazione di tutti i bucket nel progetto per rendere l'accesso uniforme a livello di bucket per evitare che gli ACL di Cloud Storage eseguano l'override delle condizioni IAM a livello di progetto. Puoi applicare un vincolo di accesso uniforme a livello di bucket per abilitare l'accesso uniforme a livello di bucket per tutti i nuovi bucket nel progetto.
  • Il comando gsutil iam ch non funziona con i criteri che contengono condizioni. Per modificare un criterio che contiene condizioni, utilizza gsutil iam get per recuperare il criterio per il bucket pertinente, modificalo a livello locale, quindi utilizza gsutil iam set per applicarlo di nuovo.
  • Per poter utilizzare le condizioni, gsutil deve essere alla versione 4.38 o successiva.
  • Quando utilizzi l'API JSON per chiamare getIamPolicy e setIamPolicy nei bucket con condizioni, devi impostare la versione del criterio IAM su 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 dell'elenco di oggetti a un sottoinsieme di oggetti nel bucket. Gli utenti senza autorizzazione storage.objects.list a livello di bucket possono riscontrare funzionalità ridotte per la console e gsutil.
  • Le condizioni scadute rimangono nel criterio IAM finché non le rimuovi.

Utilizzo con gli strumenti di Cloud Storage

Anche se le autorizzazioni IAM non possono essere impostate tramite l'API XML, gli utenti che hanno concesso l'autorizzazione IAM possono comunque utilizzare l'API XML e qualsiasi altro strumento di accesso a Cloud Storage.

Per riferimenti alle autorizzazioni IAM che consentono agli utenti di eseguire azioni con diversi strumenti di Cloud Storage, vedi IAM con Cloud Console, IAM con gsutil, IAM con JSON e IAM con XML.

Passaggi successivi