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.
- Per la console Google Cloud , consulta Controllo dell'accesso tramite la console Google Cloud .
- Per i metodi IAM, consulta Controllo dell'accesso tramite l'API.
- Per gcloud CLI, consulta Controllo dell'accesso tramite lo strumento gcloud.
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
- Scopri di più su IAM.
- Concedi ruoli IAM.