Google Cloud offre Identity and Access Management (IAM), che ti permette di concedere un accesso più granulare a determinate risorse Google Cloud e 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 la documentazione di IAM.
IAM 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 l'autorizzazione cosa (ruoli) per quali risorse impostando i criteri IAM. I criteri IAM concedono uno o più ruoli specifici a un utente, concedendo all'utente determinate autorizzazioni. Ad esempio, puoi concedere il ruolo datastore.indexAdmin
a un
utente, che potrà 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 le entità da un database. | |
datastore.databases.get |
Iniziare o eseguire il rollback di una transazione. | |
datastore.databases.import |
Importa le entità in un database. | |
datastore.databases.getMetadata |
Leggere i metadati da un database. | |
datastore.databases.list |
Elencare i database in un progetto. | |
datastore.databases.create |
Creare un database. | |
datastore.databases.update |
Aggiornare un database. | |
Nome autorizzazione entità | Descrizione | |
datastore.entities.allocateIds |
Alloca ID per le chiavi con un percorso chiave incompleto. | |
datastore.entities.create |
Creare un'entità. | |
datastore.entities.delete |
Eliminare un'entità. | |
datastore.entities.get |
Lettura di un'entità. | |
datastore.entities.list |
Elenca le chiavi delle entità in un progetto. (Per accedere ai dati delle entità è necessario datastore.entities.get .) |
|
datastore.entities.update |
Aggiorna un'entità. | |
Nome autorizzazione indice | Descrizione | |
datastore.indexes.create |
Crea un indice. | |
datastore.indexes.delete |
Eliminare un indice. | |
datastore.indexes.get |
Leggere i metadati di un indice. | |
datastore.indexes.list |
Elenca gli indici in un progetto. | |
datastore.indexes.update |
Aggiornare un indice. | |
Nome autorizzazione spazio dei nomi | Descrizione | |
datastore.namespaces.get |
Recupera i metadati da uno spazio dei nomi. | |
datastore.namespaces.list |
Elencare gli spazi dei nomi di un progetto. | |
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 le 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 statistiche | Descrizione | |
datastore.statistics.get |
Recupera le entità delle statistiche. | |
datastore.statistics.list |
Elenca le chiavi delle entità delle statistiche. (Per accedere ai dati delle entità delle statistiche, è necessaria la proprietà datastore.statistics.get ). |
|
Nome autorizzazione App Engine | Descrizione | |
appengine.applications.get |
Accesso in sola lettura a tutte le impostazioni e alla configurazione delle applicazioni di App Engine. | |
Nome autorizzazione posizione | Descrizione | |
datastore.locations.get |
Visualizza dettagli sulla località del database. necessaria per creare un nuovo database. | |
datastore.locations.list |
Elenca le località dei database disponibili. necessaria per creare un nuovo database. | |
Nome 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. |
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 assegnano ruoli a un utente, un gruppo o un account di servizio. Oltre ai ruoli di base, Proprietario, Editor e Visualizzatore, puoi concedere i ruoli Firestore in modalità Datastore agli utenti del progetto.
La tabella seguente elenca i ruoli IAM di Firestore in modalità Datastore. Puoi concedere più ruoli a un account utente, gruppo o servizio.
Ruolo | Autorizzazioni | Descrizione |
---|---|---|
roles/datastore.owner |
appengine.applications.get datastore.* resourcemanager.projects.get resourcemanager.projects.list |
Accesso completo all'istanza di 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.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. Destinati agli sviluppatori di applicazioni e agli 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 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.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. |
Ruoli personalizzati
Se i ruoli predefiniti non soddisfano i tuoi requisiti aziendali, puoi definire ruoli personalizzati con autorizzazioni specificate:
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 per un inserto |
datastore.entities.create |
commit per una carica |
datastore.entities.create datastore.entities.update |
commit per un aggiornamento |
datastore.entities.update |
commit per l'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 su chiavi)Per una query relativa ai metadati o alle 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 su chiavi)Per una query relativa ai metadati o alle 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
Nella tabella seguente sono elencate le autorizzazioni che il chiamante deve chiamare per i metodi su Metadati e Statistiche.
Metodo | Autorizzazioni richieste |
---|---|
lookup delle 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 obbligatori per creare un'istanza di database in modalità Datastore
Per creare una nuova istanza del 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
dal ruolo Proprietario o da 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 saranno necessari fino a 5 minuti prima che la 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, vedi Controllo dell'accesso tramite la console Google Cloud.
- Per i metodi IAM, consulta Controllo dell'accesso tramite l'API.
- Per l'interfaccia a riga di comando gcloud, vedi Controllo dell'accesso tramite lo strumento gcloud.
Condizioni IAM
Puoi utilizzare le condizioni IAM per definire e applicare forzatamente 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: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.
Passaggi successivi
- Scopri di più su IAM.
- Concedi i ruoli IAM.