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 risorse Google Cloud specifiche e impedisce l'accesso indesiderato ad altre risorse. Questa pagina descrive i ruoli e le autorizzazioni IAM per Firestore. Per una descrizione dettagliata di IAM, consulta la documentazione di IAM.IAM ti consente di adottare il principio di sicurezza del privilegio minimo, in modo da concedere solo il livello di accesso necessario per le 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, assegnandogli determinate autorizzazioni. Ad esempio, puoi concedere il ruolo datastore.indexAdmin
a un utente, 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 Firestore.
.Autorizzazioni richieste per i metodi API
Nella tabella seguente sono elencate le autorizzazioni di cui deve disporre l'utente che chiama 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 l'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 |
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 in Firestore richiede che l'account che effettua la richiesta dell'API disponga delle autorizzazioni appropriate per utilizzare la risorsa. Le autorizzazioni vengono concesse impostando criteri che assegnano ruoli a un utente, a un gruppo o a un account di servizio. Oltre ai ruoli di base, proprietario, editor e visualizzatore, puoi assegnare i ruoli Firestore agli utenti del tuo progetto.
La tabella seguente elenca i ruoli IAM di Firestore. Puoi concedere più ruoli a un utente, a un gruppo o a un account 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.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 Firestore. Destinato agli sviluppatori di applicazioni e agli account di servizio. |
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 Firestore. |
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. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Accesso in lettura alle pianificazioni dei backup in un database 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 Firestore. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Accesso in lettura alle informazioni di backup in una posizione Firestore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Accesso completo ai backup in una posizione 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 Firestore in un nuovo database. Questo ruolo offre anche la possibilità di creare nuovi database, non necessariamente tramite il ripristino da un backup. |
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 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 Firestore. |
Ruoli personalizzati
Se i ruoli predefiniti non soddisfano i tuoi requisiti aziendali, puoi definire i tuoi ruoli personalizzati con le autorizzazioni da te specificate:
Autorizzazioni
La tabella seguente elenca le autorizzazioni supportate da Firestore.
Nome dell'autorizzazione del database | Descrizione | |
---|---|---|
datastore.databases.get |
Avvia o esegui il rollback di una transazione. | |
datastore.databases.getMetadata |
Legge i metadati da un database. | |
datastore.databases.list |
Elenca i database di un progetto. | |
datastore.databases.create |
Crea un database. | |
datastore.databases.update |
Aggiorna un database. | |
datastore.databases.delete |
Eliminare 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 tutte le associazioni di tag per un database. | |
datastore.databases.listEffectiveTagBindings |
Elenca le associazioni di tag efficaci per un database. | |
Nome dell'autorizzazione dell'entità | Descrizione | |
datastore.entities.create |
Crea un documento. | |
datastore.entities.delete |
Elimina un documento. | |
datastore.entities.get |
Leggi 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 di 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 di un progetto. | |
datastore.indexes.update |
Aggiorna un indice. | |
Nome dell'autorizzazione di operazione | Descrizione | |
datastore.operations.cancel |
Annullare 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 del progetto | Descrizione | |
resourcemanager.projects.get |
Sfoglia le risorse del progetto. | |
resourcemanager.projects.list |
Elenca i progetti di tua proprietà. | |
Nome dell'autorizzazione di accesso alla posizione | Descrizione | |
datastore.locations.get |
Visualizza i dettagli sulla posizione di un database. Obbligatorio per creare un nuovo database. | |
datastore.locations.list |
Elenca le posizioni dei 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 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 dei backup. | |
datastore.backupSchedules.update |
Aggiornare 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 dell'autorizzazione Approfondimenti | Descrizione | |
datastore.insights.get |
Ottenere informazioni su una risorsa | |
Nome dell'autorizzazione per le 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 o reimposta la password di un utente. | |
datastore.userCreds.delete |
Elimina le credenziali utente. |
Latenza della modifica del ruolo
Firestore memorizza nella cache le autorizzazioni IAM per 5 minuti, quindi sono necessari fino a 5 minuti affinché una modifica del ruolo diventi effettiva.
Gestione di IAM di Firestore
Puoi recuperare 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
Concedere, modificare e revocare l'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:[email protected]"
],
"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, consulta 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
- Scopri di più su IAM.
- Concedi i ruoli IAM.
- Scopri di più sull'autenticazione.