Identity and Access Management (IAM)

Google Cloud offre Identity and Access Management (IAM), che 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 IAM di Firestore in modalità Datastore. 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 l'accesso necessario alle tue risorse.

IAM consente di controllare chi (utenti) ha quale (ruoli) autorizzazione per quali risorse impostando i criteri IAM. I criteri IAM concedono ruoli specifici a un utente, conferendogli determinati permessi. Ad esempio, puoi assegnare il ruolo datastore.indexAdmin a un utente e l'utente può creare, modificare, eliminare, elencare o visualizzare gli indici.

Autorizzazioni e ruoli

Questa sezione riassume le autorizzazioni e i ruoli supportati da Firestore in modalità Datastore.

Autorizzazioni

La tabella seguente elenca le autorizzazioni supportate da Firestore in modalità Datastore.

Nome autorizzazione database Descrizione
datastore.databases.export Esporta entità da un database.
datastore.databases.bulkDelete Elimina in blocco le entità da un database.
datastore.databases.get Inizia o esegui il rollback di una transazione.
Esegui il commit con mutazioni vuote.
datastore.databases.import Importa entità in un database.
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.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.allocateIds Assegna ID alle chiavi con un percorso della chiave incompleto.
datastore.entities.create Crea un'entità.
datastore.entities.delete Eliminare un'entità.
datastore.entities.get Leggere un'entità.
datastore.entities.list Elenca le chiavi delle entità in un progetto.
(datastore.entities.get è necessario per accedere ai dati delle entità.)
datastore.entities.update Aggiorna un'entità.
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 dello spazio dei nomi Descrizione
datastore.namespaces.get Recupera i metadati da uno spazio dei nomi.
datastore.namespaces.list Elenca gli spazi dei nomi in un progetto.
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 per le statistiche Descrizione
datastore.statistics.get Recupera le entità statistiche.
datastore.statistics.list Elenca le chiavi delle entità statistics.
(datastore.statistics.get è necessario per accedere ai dati delle entità statistiche.)
Nome dell'autorizzazione App Engine Descrizione
appengine.applications.get Accesso in sola lettura a tutte le impostazioni e configurazioni delle applicazioni App Engine.
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

Ruoli predefiniti

Con IAM, ogni metodo dell'API Datastore 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, a un gruppo o a unaccount di serviziot. Oltre ai ruoli di base Proprietario, Editor e Visualizzatore, puoi concedere ruoli Firestore in modalità Datastore agli utenti del tuo progetto.

La tabella seguente elenca i ruoli IAM di Firestore in modalità Datastore. Puoi concedere più ruoli a un utente, a un gruppo o a unaccount di serviziot.

Ruolo Autorizzazioni Descrizione
roles/datastore.owner appengine.applications.get
datastore.*
resourcemanager.projects.get
resourcemanager.projects.list
Accesso completo all'istanza del database.
Per l'accesso Amministratore Datastore, concedi il ruolo appengine.appAdmin al principal.
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 in modalità Datastore. 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
datastore.insights.get
Accesso in lettura a tutte le risorse del database in modalità Datastore.
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.bulkAdmin resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.databases.bulkDelete
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
Accesso completo per gestire le operazioni collettive.
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.keyVisualizerViewer datastore.databases.getMetadata
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
resourcemanager.projects.get
resourcemanager.projects.list
Accesso completo alle scansioni di Key Visualizer.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Accesso in lettura alle pianificazioni dei backup in un database in modalità Datastore.
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 in modalità Datastore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Accesso in lettura alle informazioni di backup in una località in modalità Datastore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Accesso completo ai backup in una località in modalità Datastore.
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 della modalità Datastore in un nuovo database. Questo ruolo consente anche di creare nuovi database, non necessariamente ripristinando 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.

Ruoli personalizzati

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

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.

Visualizzare i 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 richieste per i metodi API

La tabella seguente elenca le autorizzazioni di cui il chiamante deve disporre per chiamare ciascun metodo:

Metodo Autorizzazioni richieste
allocateIds datastore.entities.allocateIds
beginTransaction datastore.databases.get
commit con mutazioni vuote datastore.databases.get
commit per un inserto datastore.entities.create
commit per un upsert datastore.entities.create
datastore.entities.update
commit per un aggiornamento datastore.entities.update
commit per un'eliminazione datastore.entities.delete
commit per una ricerca datastore.entities.get

Per una ricerca correlata a metadati o statistiche, consulta Autorizzazioni richieste per metadati e statistiche.
commit per una query datastore.entities.list
datastore.entities.get (se la query non è una query solo chiavi)

Per una query relativa a metadati o statistiche, vedi Autorizzazioni richieste per metadati e statistiche.
lookup datastore.entities.get

Per una ricerca correlata a metadati o statistiche, consulta Autorizzazioni richieste per metadati e statistiche.
rollback datastore.databases.get
runQuery datastore.entities.list
datastore.entities.get (se la query non è una query solo chiavi)

Per una query relativa a metadati o statistiche, vedi Autorizzazioni richieste per metadati e statistiche.
runQuery con una query senza tipo datastore.entities.get
datastore.entities.list
datastore.statistics.get
datastore.statistics.list

Autorizzazioni richieste per metadati e statistiche

La seguente tabella elenca le autorizzazioni che il chiamante deve avere per chiamare i metodi su Metadata e Statistics.

Metodo Autorizzazioni richieste
lookup di entità con nomi di tipo corrispondenti a __Stat_*__ datastore.statistics.get
runQuery utilizzando tipi con nomi corrispondenti a __Stat_*__ datastore.statistics.get
datastore.statistics.list
runQuery utilizzando il tipo __namespace__ datastore.namespaces.get
datastore.namespaces.list

Ruoli richiesti per creare un'istanza di database in modalità Datastore

Per creare una nuova istanza di database in modalità Datastore, devi disporre del ruolo Proprietario o del ruolo Proprietario Datastore.

I database in modalità Datastore richiedono un'applicazione App Engine attiva. Se il progetto non ha un'applicazione, Firestore in modalità Datastore ne crea una per te. In questo caso, devi disporre dell'autorizzazione appengine.applications.create del ruolo Proprietario o di un ruolo personalizzato IAM che contenga l'autorizzazione.

Latenza della modifica del ruolo

Firestore in modalità Datastore memorizza nella cache le autorizzazioni IAM per 5 minuti, quindi possono essere necessari fino a 5 minuti prima che una modifica del ruolo diventi effettiva.

Gestione di IAM

Puoi ottenere e impostare i criteri IAM utilizzando la console Google Cloud , i metodi IAM o Google Cloud CLI.

Configurare le autorizzazioni di accesso condizionale

Puoi utilizzare le condizioni IAM per definire e applicarecontrollo dell'accessoo 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