Identity and Access Management (IAM)

Gestisci l'accesso alle tue risorse con Identity and Access Management (IAM). IAM ti consente di concedere un accesso più granulare a determinate risorseGoogle Cloud e impedisce l'accesso indesiderato ad altre risorse. Questa pagina descrive i ruoli e le autorizzazioni IAM per Cloud Firestore. Per una descrizione dettagliata di IAM, leggi la documentazione di IAM.

IAM ti consente di adottare il principio di sicurezza del privilegio minimo, in modo da concedere solo l'accesso necessario alle tue risorse.

IAM ti consente di controllare chi (utente) ha quale (ruolo) autorizzazione per quali risorse impostando i criteri IAM. I criteri IAM concedono uno o più ruoli a un utente, concedendogli determinate autorizzazioni. Ad esempio, puoi concedere a un utente il ruolo datastore.indexAdmin, che gli consente di creare, modificare, eliminare, elencare o visualizzare gli indici.

Autorizzazioni e ruoli

Questa sezione riepiloga le autorizzazioni e i ruoli supportati da Cloud Firestore.

Autorizzazioni richieste per i metodi API

La seguente tabella elenca le autorizzazioni che il chiamante deve avere per eseguire ogni azione:

Metodo Autorizzazioni obbligatorie
projects.databases.MongoDBCompatible
ListDatabases datastore.databases.getMetadata
ListIndexes datastore.indexes.list
Find datastore.entities.get
datastore.entities.list
Aggregate datastore.entities.get
datastore.entities.list
GetMore

Le stesse autorizzazioni richieste dalla chiamata che ha creato il cursore.

ListCollections datastore.entities.list
Count datastore.entities.list
Distinct datastore.entities.get
datastore.entities.list
CommitTransaction datastore.databases.get
AbortTransaction datastore.databases.get
EndSessions datastore.databases.get
KillCursors datastore.databases.get
Insert datastore.entities.create
Update datastore.entities.get
datastore.entities.list
datastore.entities.update
datastore.entities.create (solo per upsert)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (solo per sostituzione o aggiornamento)
datastore.entities.create (solo per upsert)
datastore.entities.delete (solo per eliminazione)
CreateCollection datastore.entities.create
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list
projects.databases
create datastore.databases.create
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
ripristina datastore.backups.restoreDatabase
clone datastore.databases.clone Clonare un database.

Se la tua richiesta clone contiene un valore tags, sono necessarie le seguenti autorizzazioni aggiuntive:

  • datastore.databases.createTagBinding

Se vuoi verificare se i binding dei tag sono stati impostati correttamente elencandoli, sono necessarie le seguenti autorizzazioni aggiuntive:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
projects.locations
get datastore.locations.get
list datastore.locations.list
projects.databases.backupschedules
get datastore.backupSchedules.get
list datastore.backupSchedules.list
create datastore.backupSchedules.create
update datastore.backupSchedules.update
delete datastore.backupSchedules.delete
projects.locations.backups
get datastore.backups.get
list datastore.backups.list
delete datastore.backups.delete
projects.databases.usercreds
get datastore.userCreds.get
list datastore.userCreds.list
create datastore.userCreds.create
enable datastore.userCreds.update
disable datastore.userCreds.update
resetPassword datastore.userCreds.update
delete datastore.userCreds.delete

Ruoli predefiniti

Con IAM, ogni metodo dell'API Cloud Firestore richiede che l'account che effettua la richiesta API disponga delle autorizzazioni appropriate per utilizzare la risorsa. Le autorizzazioni vengono concesse impostando policy che assegnano ruoli a un utente, un gruppo o un service account. Oltre ai ruoli primitivi, proprietario, editor e visualizzatore, puoi concedere i ruoli Cloud Firestore agli utenti del tuo progetto.

La tabella seguente elenca i ruoli IAM Cloud Firestore. Puoi concedere più ruoli a un utente, un gruppo o un account di servizio.

Ruolo Autorizzazioni Descrizione
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Accesso completo a Cloud Firestore.
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Accesso in lettura/scrittura ai dati in un database Cloud Firestore. Destinato agli sviluppatori di applicazioni e ai service account.
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Accesso in lettura a tutte le risorse Cloud Firestore.
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.indexes.*

datastore.operations.list
datastore.operations.get
resourcemanager.projects.get
resourcemanager.projects.list
Accesso completo per la gestione delle definizioni di indice.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Accesso in lettura alle pianificazioni dei backup in un database Cloud Firestore.
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Accesso completo alle pianificazioni dei backup in un database Cloud Firestore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Accesso in lettura alle informazioni di backup in una posizione Cloud Firestore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Accesso completo ai backup in una posizione Cloud Firestore.
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Possibilità di ripristinare un backup di Cloud Firestore in un nuovo database. Questo ruolo consente anche di creare nuovi database, non necessariamente ripristinando da un backup.
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Possibilità di clonare un database Cloud Firestore in un nuovo database. Questo ruolo consente anche di creare nuovi database, non necessariamente tramite la clonazione.
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
Accesso in lettura a Insight, Statistiche e scansioni di Key Visualizer.
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Accesso in lettura alle credenziali utente in un database Cloud Firestore.
roles/datastore.userCredsAdmin datastore.userCreds.get
datastore.userCreds.list
datastore.userCreds.create
datastore.userCreds.update
datastore.userCreds.delete
datastore.databases.list
datastore.databases.getMetadata
Accesso completo alle credenziali utente in un database Cloud Firestore.

Ruoli personalizzati

Se i ruoli predefiniti non soddisfano i tuoi requisiti aziendali, puoi definire ruoli personalizzati con le autorizzazioni che specifichi:

Ruoli richiesti per creare e gestire i tag

Se un tag è rappresentato nelle azioni di creazione o ripristino, sono necessari alcuni ruoli. Per ulteriori dettagli sulla creazione di coppie chiave-valore tag prima di associarle alle risorse del database, consulta Creare e gestire i tag.

Sono richieste le seguenti autorizzazioni elencate.

Visualizza tag
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
Gestire i tag sulle risorse

Per la risorsa di database a cui stai collegando il valore del tag è necessaria la seguente autorizzazione.

  • datastore.databases.createTagBinding

Autorizzazioni

La tabella seguente elenca le autorizzazioni supportate da Cloud Firestore.

Nome autorizzazione database Descrizione
datastore.databases.get Avvia o esegui il rollback di una transazione.
datastore.databases.getMetadata Leggi i metadati da un database.
datastore.databases.list Elenca i database in un progetto.
datastore.databases.create Crea un database.
datastore.databases.update Aggiorna un database.
datastore.databases.delete Elimina un database.
datastore.databases.clone Clonare un database.
datastore.databases.createTagBinding Crea un'associazione di tag per un database.
datastore.databases.deleteTagBinding Elimina un'associazione di tag per un database.
datastore.databases.listTagBindings Elenca tutti i binding dei tag per un database.
datastore.databases.listEffectiveTagBindings Elenca i binding dei tag efficaci per un database.
Nome autorizzazione entità Descrizione
datastore.entities.create Crea un documento.
datastore.entities.delete Eliminare un documento.
datastore.entities.get Leggere un documento.
datastore.entities.list Elenca i nomi dei documenti in un progetto.
(datastore.entities.get è necessario per accedere ai dati del documento.)
datastore.entities.update Aggiorna un documento.
Nome dell'autorizzazione dell'indice Descrizione
datastore.indexes.create Crea un indice.
datastore.indexes.delete Elimina un indice.
datastore.indexes.get Leggi i metadati da un indice.
datastore.indexes.list Elenca gli indici in un progetto.
datastore.indexes.update Aggiorna un indice.
Nome dell'autorizzazione dell'operazione Descrizione
datastore.operations.cancel Annulla un'operazione a lunga esecuzione.
datastore.operations.delete Elimina un'operazione a lunga esecuzione.
datastore.operations.get Recupera lo stato più recente di un'operazione a lunga esecuzione.
datastore.operations.list Elenca le operazioni a lunga esecuzione.
Nome dell'autorizzazione per il progetto Descrizione
resourcemanager.projects.get Sfoglia le risorse del progetto.
resourcemanager.projects.list Elenca i progetti di proprietà.
Nome dell'autorizzazione di accesso alla posizione Descrizione
datastore.locations.get Visualizzare i dettagli di una posizione del database. Obbligatorio per creare un nuovo database.
datastore.locations.list Elenca le posizioni del database disponibili. Obbligatorio per creare un nuovo database.
Nome dell'autorizzazione Key Visualizer Descrizione
datastore.keyVisualizerScans.get Visualizza i dettagli delle scansioni di Key Visualizer.
datastore.keyVisualizerScans.list Elenca le scansioni di Key Visualizer disponibili.
Nome autorizzazione pianificazione di backup Descrizione
datastore.backupSchedules.get Visualizza i dettagli di una pianificazione dei backup.
datastore.backupSchedules.list Elenca le pianificazioni di backup disponibili.
datastore.backupSchedules.create Crea una pianificazione di backup.
datastore.backupSchedules.update Aggiorna una pianificazione del backup.
datastore.backupSchedules.delete Elimina una pianificazione del backup.
Nome autorizzazione di backup Descrizione
datastore.backups.get Visualizza i dettagli di un backup.
datastore.backups.list Elenca i backup disponibili.
datastore.backups.delete Eliminare un backup.
datastore.backups.restoreDatabase Ripristina un database da un backup.
Nome autorizzazione approfondimenti Descrizione
datastore.insights.get Ottenere approfondimenti su una risorsa
Nome dell'autorizzazione delle credenziali utente Descrizione
datastore.userCreds.get Visualizza i dettagli delle credenziali utente.
datastore.userCreds.list Elenca le credenziali utente disponibili.
datastore.userCreds.create Crea le credenziali utente.
datastore.userCreds.update Attiva o disattiva le credenziali utente oppure reimposta la password di un utente.
datastore.userCreds.delete Elimina le credenziali utente.

Latenza della modifica del ruolo

Cloud Firestore memorizza nella cache le autorizzazioni IAM per 5 minuti, quindi sono necessari fino a 5 minuti prima che una modifica del ruolo diventi effettiva.

Gestione di IAM Cloud Firestore

Puoi ottenere e impostare i criteri IAM utilizzando la console Google Cloud, l'API IAM o lo strumento a riga di comando gcloud. Per maggiori dettagli, consulta Concessione, modifica e revoca dell'accesso ai membri del progetto.

Configurare le autorizzazioni di accesso condizionale

Puoi utilizzare le condizioni IAM per definire e applicare il controllo dell'accesso condizionale.

Ad esempio, la seguente condizione assegna a un'entità il ruolo datastore.user fino a una data specificata:

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

Per scoprire come definire le condizioni IAM per l'accesso temporaneo, vedi Configurare l'accesso temporaneo.

Per scoprire come configurare le condizioni IAM per l'accesso a uno o più database, consulta Configurare le condizioni di accesso al database.

Passaggi successivi