Google Cloud offre Identity and Access Management (IAM), che consente puoi concedere un accesso più granulare a risorse Google Cloud specifiche impedisce l'accesso indesiderato ad altre risorse. In questa pagina vengono descritti i Ruoli IAM di Firestore in modalità Datastore. Per una descrizione dettagliata di IAM, leggi le documentazione IAM.
IAM consente di adottare il principio di sicurezza del privilegio minimo, quindi solo l'accesso necessario alle tue risorse.
IAM consente di controllare chi (utenti) ha quale autorizzazione (ruoli) per
quali risorse impostando i criteri IAM. Concessione dei criteri IAM
ruoli specifici a un utente, offrendogli determinati ruoli
autorizzazioni aggiuntive. Ad esempio, puoi concedere il ruolo datastore.indexAdmin
a un
utente e utente possono 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 di Firestore in modalità Datastore Google Cloud.
Nome autorizzazione database | Descrizione | |
---|---|---|
datastore.databases.export |
Esporta le entità da un database. | |
datastore.databases.get |
Avvia 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 |
Creare 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 effettive per un database. | |
Nome autorizzazione entità | Descrizione | |
datastore.entities.allocateIds |
Alloca gli ID delle chiavi con un percorso della chiave incompleto. | |
datastore.entities.create |
Creare un'entità. | |
datastore.entities.delete |
Eliminare un'entità. | |
datastore.entities.get |
Legge un'entità. | |
datastore.entities.list |
Elenca le chiavi delle entità in un progetto. (Per accedere ai dati dell'entità è necessario datastore.entities.get .) |
|
datastore.entities.update |
Aggiornare un'entità. | |
Nome autorizzazione 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 autorizzazione spazio dei nomi | Descrizione | |
datastore.namespaces.get |
Recupera i metadati da uno spazio dei nomi. | |
datastore.namespaces.list |
Elenca gli spazi dei nomi di un progetto. | |
Nome autorizzazione 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 autorizzazione progetto | Descrizione | |
resourcemanager.projects.get |
Sfoglia le risorse del progetto. | |
resourcemanager.projects.list |
Elenca i progetti di proprietà. | |
Nome autorizzazione statistiche | Descrizione | |
datastore.statistics.get |
Recupera le entità statistiche. | |
datastore.statistics.list |
Elenca le chiavi delle entità per la statistica. (Per accedere ai dati delle entità statistiche è necessaria l'autorizzazione datastore.statistics.get ). |
|
Nome autorizzazione App Engine | Descrizione | |
appengine.applications.get |
Accesso in sola lettura alla configurazione e alle impostazioni di tutte le applicazioni App Engine. | |
Nome dell'autorizzazione di accesso alla posizione | Descrizione | |
datastore.locations.get |
Ottieni i dettagli sulla località di un database. Obbligatorio per la creazione un nuovo database. | |
datastore.locations.list |
Elenca le località disponibili dei database. Obbligatorio per la creazione un nuovo database. | |
Nome autorizzazione di Key Visualizer | Descrizione | |
datastore.keyVisualizerScans.get |
Ottieni dettagli sulle 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 del backup. | |
datastore.backupSchedules.list |
Elenca le pianificazioni di backup disponibili. | |
datastore.backupSchedules.create |
Crea una pianificazione del 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 |
Ripristinare un database da un backup. |
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 criteri che concedono ruoli a un utente, un gruppo o un account di servizio. Oltre ai ruoli di base, Proprietario, Editor e Visualizzatore, puoi concedere i ruoli per Firestore in modalità Datastore a gli utenti del tuo progetto.
La tabella seguente elenca i ruoli IAM di Firestore in modalità Datastore. Puoi concedere più ruoli a un account utente, gruppo o di servizio.
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 all'entità. |
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 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 di 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.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 posizione 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 in modalità Datastore in un nuovo database. Questo ruolo consente anche di creare nuovi database, non necessariamente eseguendo il ripristino da un backup. |
Ruoli personalizzati
Se i ruoli predefiniti non soddisfano i tuoi requisiti aziendali, puoi definire ruoli personalizzati con autorizzazioni da te specificati:
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 relativa a metadati o statistiche, consulta l'articolo Autorizzazioni richieste per metadati e statistiche. |
commit per una query |
datastore.entities.list datastore.entities.get (se la query non è una query solo per chiavi)Per una query relativa a metadati o statistiche, consulta la sezione Autorizzazioni obbligatorie per metadati e statistiche. |
lookup |
datastore.entities.get Per una ricerca relativa 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, consulta la sezione Autorizzazioni obbligatorie per metadati e statistiche. |
runQuery con una query inutile |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
Autorizzazioni richieste per metadati e statistiche
Nella tabella seguente sono elencate le autorizzazioni che il chiamante deve avere per chiamare i metodi su metadati e statistiche.
Metodo | Autorizzazioni richieste |
---|---|
lookup di entità con nomi di tipo corrispondenti a __Stat_*__ |
datastore.statistics.get |
runQuery utilizza 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, è necessario il valore Ruolo di Proprietario o il 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 contenente l'autorizzazione.
Latenza del cambio di ruolo
Firestore in modalità Datastore memorizza nella cache le autorizzazioni IAM per 5 minuti, quindi fino a 5 minuti per rendere effettiva la modifica del ruolo.
Gestione di IAM
Puoi recuperare e impostare i criteri IAM utilizzando la console Google Cloud, metodi IAM o Google Cloud CLI.
- Per la console Google Cloud, vedi Controllo dell'accesso tramite la console Google Cloud.
- Per i metodi IAM, vedi 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 applicare il controllo dell'accesso condizionale.
Ad esempio, la seguente condizione assegna a un'entità datastore.user
fino alla 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, consulta Configurare l'accesso temporaneo.
Per scoprire come configurare le condizioni IAM per l'accesso a una o più vedi i database Configurare le condizioni di accesso al database.
Passaggi successivi
- Scopri di più su IAM.
- Concedi ruoli IAM.