Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Sicurezza per le librerie client del server

Quando utilizzi le librerie client server per Firestore, puoi gestire l'accesso alle tue risorse con Identity and Access Management (IAM). IAM ti offre un accesso più granulare a determinate risorse di Google Cloud Platform e impedisce l'accesso indesiderato ad altre risorse. In questa pagina vengono descritti i diritti e i ruoli IAM di Firestore. Per una descrizione dettagliata di IAM, consulta la documentazione di IAM.

IAM ti consente di adottare il principio di sicurezza del privilegio minimo, quindi concedi solo l'accesso necessario alle tue risorse.

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

Autorizzazioni e ruoli

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

Autorizzazioni obbligatorie per i metodi API

Nella tabella seguente sono elencate le autorizzazioni che il chiamante deve eseguire per ogni azione:

Metodo Autorizzazioni obbligatorie
projects.databases.documents
batchGet datastore.entities.get
beginTransaction datastore.databases.get
commit si aggiorna o si trasforma con condizionamento esistente impostato su false datastore.entities.create
commit si aggiorna o si trasforma con condizionamento esistente impostato su true datastore.entities.update
commit si aggiorna o si trasforma senza precondizione datastore.entities.create
datastore.entities.update
commit elimina datastore.entities.delete
createDocument datastore.entities.create
delete datastore.entities.delete
get datastore.entities.get
list datastore.entities.get
datastore.entities.list
listCollectionIds datastore.entities.list
patch datastore.entities.update
rollback datastore.databases.get
runQuery datastore.entities.get
datastore.entities.list
write (RPC) si aggiorna o si trasforma con condizionamento esistente impostato su false datastore.entities.create
write (RPC) si aggiorna o si trasforma con condizionamento esistente impostato su true datastore.entities.update
write (RPC) si aggiorna o si trasforma senza precondizione datastore.entities.create
datastore.entities.update
write (RPC) elimina datastore.entities.delete
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list
projects.databases
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
projects.locations
get datastore.locations.get
list datastore.locations.list

Ruoli predefiniti

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

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

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

datastore.*

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

datastore.databases.get
datastore.databases.getMetadata
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 Firestore. Ideale per sviluppatori di applicazioni e account di servizio.
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
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 Firestore.
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.getMetadata
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
Accesso completo per la gestione di importazioni ed esportazioni.
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.indexes.*

resourcemanager.projects.get
resourcemanager.projects.list
Accesso completo per la gestione delle definizioni di indice.

Ruoli personalizzati

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

Autorizzazioni

La tabella seguente elenca le autorizzazioni supportate da Firestore.

Nome autorizzazione database Descrizione
datastore.databases.get Iniziare o eseguire il rollback di una transazione.
datastore.databases.import Importa le entità in un database.
datastore.databases.export Esporta le entità da un database.
datastore.databases.getMetadata Leggere i metadati da un database.
datastore.databases.list Elenca i database in un progetto.
datastore.databases.create Creare un database.
datastore.databases.update Aggiornare un database.
Nome autorizzazione entità Descrizione
datastore.entities.create Crea un documento.
datastore.entities.delete Eliminare un documento.
datastore.entities.get Leggi un documento.
datastore.entities.list Elenca i nomi dei documenti di un progetto.
(datastore.entities.get è necessaria per accedere ai dati del documento).
datastore.entities.update Aggiorna un documento.
Nome autorizzazione di indicizzazione Descrizione
datastore.indexes.create Crea un indice.
datastore.indexes.delete Eliminare un indice.
datastore.indexes.get Leggere i metadati da un indice.
datastore.indexes.list Elenca gli indici in un progetto.
datastore.indexes.update Aggiornare un indice.
Nome autorizzazione operazione Descrizione
datastore.operations.cancel Annulla un'operazione a lunga esecuzione.
datastore.operations.delete Eliminare un'operazione a lunga esecuzione.
datastore.operations.get Visualizza lo stato più recente di un'operazione a lunga esecuzione.
datastore.operations.list Elenca operazioni a lunga esecuzione.
Nome autorizzazione progetto Descrizione
resourcemanager.projects.get Sfoglia le risorse nel progetto.
resourcemanager.projects.list Elenca i progetti di proprietà.
Nome autorizzazione posizione Descrizione
datastore.locations.get Visualizza i dettagli relativi alla posizione di un database. necessaria per creare un nuovo database.
datastore.locations.list Elenca le posizioni dei database disponibili. necessaria per creare un nuovo database.

Latenza di modifica del ruolo

Firestore memorizza nella cache le autorizzazioni IAM per 5 minuti, quindi l'attivazione della modifica del ruolo richiede fino a 5 minuti.

Gestione di IAM per Firestore

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

Dipendenza delle regole di sicurezza da IAM

Le regole di sicurezza di Firestore per i client web o per dispositivi mobili dipendono dal seguente account di servizio e dall'associazione IAM:

Account di servizio Ruolo IAM
service-project_number@firebase-rules.iam.gserviceaccount.com roles/firebaserules.system

Firebase configura automaticamente questo account di servizio. Se rimuovi il ruolo firebaserules.system da questo account di servizio, le regole di sicurezza rifiutano tutte le richieste. Per ripristinare questa associazione IAM, utilizza il seguente comando gcloud CLI:

gcloud projects add-iam-policy-binding project_id \
--member=serviceAccount:service-project_number@firebase-rules.iam.gserviceaccount.com \
--role=roles/firebaserules.system

Per determinare project_id e project_number, consulta la pagina Identificazione dei progetti.

Utilizza Google Cloud CLI anziché Google Cloud Console, perché il ruolo firebaserules.system è nascosto nella console per impostazione predefinita.

Passaggi successivi