Questa pagina fornisce una panoramica di Identity and Access Management (IAM) e del suo utilizzo con il controllo dell'accesso ai bucket, alle cartelle gestite e alle risorse degli oggetti in Cloud Storage.
Per scoprire altri modi per controllare l'accesso in Cloud Storage, consulta la Panoramica del controllo dell'accesso.
Per una discussione dettagliata di IAM e delle sue funzionalità in generale, consulta Identity and Access Management.
Panoramica
IAM consente di controllare chi può accedere alle risorse nel tuo progetto Google Cloud. Le risorse includono i bucket Cloud Storage, le cartelle gestite all'interno dei bucket e gli oggetti archiviati all'interno dei bucket, nonché altre entità di Google Cloud come le istanze di Compute Engine.
Le entità sono i "chi" di IAM. Le entità possono essere singoli utenti, gruppi, domini o persino il pubblico nel suo insieme. Alle entità vengono concessi i ruoli, che offrono loro la possibilità di eseguire azioni in Cloud Storage e in Google Cloud più in generale. Ogni ruolo è una raccolta di una o più autorizzazioni. Le autorizzazioni sono le unità di base di IAM: ciascuna 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 (roles/storage.objectCreator
), che concede le autorizzazioni utili per creare oggetti in un bucket, e Amministratore oggetti Storage (roles/storage.objectAdmin
, che concede un'ampia gamma di autorizzazioni per lavorare con gli oggetti.
La raccolta di ruoli IAM che imposti su una risorsa è denominata criterio IAM. L'accesso concesso da questi ruoli si applica sia alla risorsa su cui è impostato il criterio sia a tutte le risorse contenute all'interno di quella risorsa. Ad esempio, puoi impostare un criterio IAM su un bucket che concede a un utente il controllo amministrativo su quel bucket e sui 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 quel progetto.
Se disponi di una risorsa organizzazione Google Cloud, puoi utilizzare anche i criteri di negazione IAM per negare l'accesso alle risorse. Quando un criterio di negazione è associato a una risorsa, l'entità nel criterio non può utilizzare l'autorizzazione specificata per accedere alla risorsa o a qualsiasi risorsa secondaria al suo interno, indipendentemente dai ruoli loro assegnati. I criteri di negazione sostituiscono tutti i criteri di autorizzazione IAM.
Autorizzazioni
Le autorizzazioni consentono alle entità di eseguire azioni specifiche su bucket, cartelle gestite o oggetti in Cloud Storage. Ad esempio, l'autorizzazione storage.buckets.list
consente a un'entità di elencare i bucket nel tuo progetto. Non concedi direttamente le autorizzazioni alle entità, ma concedi i ruoli che hanno una o più autorizzazioni raggruppate al loro interno.
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 pacchetto 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 alle entità, in modo che possano eseguire azioni sui bucket, sulle cartelle gestite e sugli oggetti nel progetto.
Per un elenco di riferimento dei ruoli IAM che si applicano a 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 o cartella gestita. Le autorizzazioni concesse dai ruoli si applicano in modo additivo a tutta la gerarchia. Puoi concedere ruoli a diversi livelli della gerarchia delle risorse per una maggiore granularità nel modello di autorizzazioni.
Ad esempio, supponiamo di voler concedere a un utente l'autorizzazione per leggere oggetti in qualsiasi bucket all'interno di un progetto, ma creare oggetti solo nel bucket A. A questo scopo, puoi concedere all'utente il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer
) per il progetto, che consente all'utente di leggere qualsiasi oggetto archiviato in qualsiasi bucket all'interno del progetto, e il ruolo Autore oggetti Storage (roles/storage.objectCreator
) per il bucket A, che consente all'utente di creare oggetti solo in quel bucket.
Alcuni ruoli possono essere utilizzati a tutti i livelli della gerarchia delle risorse. Quando utilizzate
a livello di progetto, le autorizzazioni che contengono si applicano a tutti i bucket,
cartelle e oggetti nel progetto. Se utilizzate a livello di bucket, le autorizzazioni si applicano solo a un bucket specifico e alle cartelle e agli oggetti al suo interno. Esempi di questi ruoli sono il ruolo Amministratore Storage (roles/storage.admin
),
Visualizzatore oggetti Storage (roles/storage.objectViewer
) e
Creatore oggetti Storage (roles/storage.objectCreator
).
Alcuni ruoli possono essere applicati a un solo livello. Ad esempio, puoi applicare il ruolo Proprietario oggetti legacy di Storage (roles/storage.legacyObjectOwner
) solo a livello di bucket o a livello di cartella gestita. I ruoli IAM che consentono di controllare i criteri di negazione IAM possono essere applicati solo a livello di organizzazione.
Relazione con ACL
I ruoli IAM Bucket legacy funzionano in tandem con gli ACL dei bucket: quando aggiungi o rimuovi un ruolo Bucket legacy, gli ACL associati al bucket riflettono le modifiche. Analogamente, la modifica di un ACL specifico per un bucket aggiorna il ruolo IAM del bucket legacy corrispondente per il bucket.
Ruolo legacy del bucket | ACL equivalente |
---|---|
Lettore bucket legacy Storage (roles/storage.legacyBucketReader ) |
Lettore bucket |
Writer bucket legacy di Storage (roles/storage.legacyBucketWriter ) |
Writer bucket |
Proprietario bucket legacy Storage (roles/storage.legacyBucketOwner ) |
Proprietario bucket |
Tutti gli altri ruoli IAM a livello di bucket, inclusi i ruoli IAM Oggetto legacy, funzionano in modo indipendente dagli ACL. Allo stesso modo, tutti i ruoli IAM a livello di progetto funzionano in modo indipendente dagli ACL. Ad esempio, se assegni a un utente il ruolo roles/storage.objectViewer
Visualizzatore oggetti Storage, gli ACL rimangono invariati. Ciò significa che puoi utilizzare i ruoli IAM a livello di bucket per concedere l'accesso ampio a tutti gli oggetti all'interno di un bucket e utilizzare ACL degli oggetti granulari per personalizzare l'accesso a oggetti specifici all'interno del bucket.
Confronto tra criteri di negazione IAM e ACL
I criteri di negazione IAM si applicano all'accesso concesso dagli ACL. Ad esempio, se crei un criterio di negazione che nega a un'entità l'autorizzazione storage.objects.get
su un progetto, l'entità non può visualizzare gli oggetti nel progetto, anche se viene concessa l'autorizzazione READER
ai singoli oggetti.
Autorizzazione IAM per la modifica degli ACL
Puoi utilizzare IAM per concedere alle entità l'autorizzazione necessaria per
modificare gli ACL sugli oggetti. Le seguenti autorizzazioni storage.buckets
insieme
consentono agli utenti di lavorare con gli ACL dei bucket e gli ACL degli oggetti predefiniti: .get
,
.getIamPolicy
, .setIamPolicy
e .update
.
Analogamente, le seguenti autorizzazioni storage.objects
consentono insieme agli utenti di lavorare con gli ACL degli oggetti: .get
, .getIamPolicy
, .setIamPolicy
e .update
.
Ruoli personalizzati
Sebbene IAM abbia molti ruoli predefiniti per casi d'uso comuni, è possibile definire ruoli personali che contengono pacchetti di autorizzazioni da te specificati. A questo scopo, IAM offre ruoli personalizzati.
Tipi di entità
Esistono vari 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 dei tipi di entità in IAM, consulta Identificatori delle entità. Per ulteriori informazioni sulle entità in generale, consulta Concetti relativi all'identità.
Valori di convenienza
Cloud Storage supporta valori di convenienza, ovvero un insieme speciale di entità che possono essere applicati specificamente ai criteri dei bucket IAM. In genere è consigliabile evitare di utilizzare valori di convenienza negli ambienti di produzione, in quanto richiedono la concessione di ruoli di base, una pratica sconsigliata negli ambienti di produzione.
Un valore di convenienza è un identificatore di due parti composto 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à a cui è stato concesso il ruolo di base e un ruolo IAM: il ruolo IAM concesso al valore di convenienza è, 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 base Visualizzatore (roles/viewer
) per un progetto denominato my-example-project
e supponiamo che tu disponga di un bucket in quel progetto denominato my-bucket
. Se concedi il ruolo Creatore oggetti Storage (roles/storage.objectCreator
) per my-bucket
al valore di convenienza projectViewer:my-example-project
, sia jane@example.com che john@example.com ottengono le autorizzazioni associate al ruolo Creatore oggetti Storage per my-bucket
.
Puoi concedere e revocare l'accesso a valori di convenienza per i bucket, ma tieni presente che Cloud Storage li applica automaticamente in determinate circostanze. Per ulteriori informazioni, consulta il 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 o negate alle entità. Cloud Storage supporta i seguenti tipi di attributi della condizione:
resource.name
: concedi o nega l'accesso ai bucket e agli oggetti in base al nome del bucket o dell'oggetto. Puoi anche utilizzareresource.type
per concedere l'accesso ai bucket o agli oggetti, ma farlo è per lo più ridondante con l'uso diresource.name
. La condizione di esempio seguente 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 istruzioni logiche che utilizzano un sottoinsieme del linguaggio CEL (Common Expression Language). Puoi specificare le condizioni nelle associazioni di ruolo dei criteri IAM di un bucket.
Tieni presente le seguenti restrizioni:
- Devi abilitare l'accesso uniforme a livello di bucket su un bucket prima di aggiungere condizioni a livello di bucket. Sebbene le condizioni siano consentite a livello di progetto, devi eseguire la migrazione di tutti i bucket nel progetto per uniformare l'accesso a livello di bucket per impedire agli ACL di Cloud Storage di sostituire le 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 tuo progetto.
- Quando utilizzi l'API JSON per chiamare
getIamPolicy
esetIamPolicy
sui 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 della condizioneresource.name
per limitare l'accesso degli elenchi di oggetti a un sottoinsieme di oggetti nel bucket. - Le condizioni scadute rimangono nel criterio IAM finché non le rimuovi.
Utilizzo con gli strumenti di Cloud Storage
Sebbene le autorizzazioni IAM non possano essere impostate tramite l'API XML, gli utenti con le autorizzazioni IAM concesse possono comunque utilizzare l'API XML, nonché qualsiasi altro strumento per accedere a Cloud Storage.
Per i riferimenti su quali autorizzazioni IAM consentono agli utenti di eseguire azioni con strumenti Cloud Storage diversi, consulta i Riferimenti IAM per Cloud Storage.
Passaggi successivi
- Scopri come utilizzare IAM con Cloud Storage.
- Esamina la tabella di riferimento IAM per Cloud Storage.
- Scopri le best practice per l'utilizzo di IAM.
- Gestisci i criteri IAM per tutte le tue risorse Google Cloud.