Con le regole di sicurezza di Cloud Firestore, puoi concentrarti sulla creazione di un'esperienza utente eccezionale senza dover gestire l'infrastruttura o scrivere codice di autenticazione e autorizzazione lato server.
Le regole di sicurezza forniscono il controllo degli accessi e la convalida dei dati in un formato semplice ma espressivo. Per creare sistemi di accesso basati su utenti e ruoli che mantengano i dati dei tuoi utenti al sicuro, devi utilizzare l'autenticazione Firebase con le regole di sicurezza di Cloud Firestore.
Regole di sicurezza versione 2
Da maggio 2019 è ora disponibile la versione 2 delle regole di sicurezza di Cloud Firestore. La versione 2 delle regole modifica il comportamento dei caratteri jolly ricorsivi {name=**}
. È necessario utilizzare la versione 2 se si prevede di utilizzare le query del gruppo di raccolta . È necessario aderire alla versione 2 impostando rules_version = '2';
la prima riga nelle regole di sicurezza:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Regole di scrittura
Scriverai e gestirai le regole di sicurezza di Cloud Firestore su misura per il modello di dati che creerai per il database predefinito e ogni database aggiuntivo nel tuo progetto.
Tutte le regole di sicurezza di Cloud Firestore sono costituite da istruzioni match
, che identificano i documenti nel database e allow
espressioni che controllano l'accesso a tali documenti:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Ogni richiesta di database da una libreria client mobile/web di Cloud Firestore viene valutata rispetto alle regole di sicurezza prima di leggere o scrivere qualsiasi dato. Se le regole negano l'accesso a uno qualsiasi dei percorsi dei documenti specificati, l'intera richiesta avrà esito negativo.
Di seguito sono riportati alcuni esempi di set di regole di base. Sebbene queste regole siano valide, non sono consigliate per le applicazioni di produzione:
Autenticazione richiesta
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Nega tutto
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Permettere tutto
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Il percorso {document=**}
utilizzato negli esempi precedenti corrisponde a qualsiasi documento nell'intero database. Continua con la guida per strutturare le regole di sicurezza per scoprire come abbinare percorsi dati specifici e lavorare con dati gerarchici.
Regole di prova
Cloud Firestore fornisce un simulatore di regole che puoi utilizzare per testare il tuo set di regole. Puoi accedere al simulatore dalla scheda Regole nella sezione Cloud Firestore della console Firebase.
Il simulatore di regole consente di simulare letture, scritture ed eliminazioni autenticate e non autenticate. Quando simuli una richiesta autenticata, puoi creare e visualizzare in anteprima token di autenticazione da vari provider. Le richieste simulate vengono eseguite rispetto al set di regole nel tuo editor, non al set di regole attualmente distribuito.
Distribuzione delle regole
Prima di poter iniziare a utilizzare Cloud Firestore dalla tua app mobile, dovrai implementare le regole di sicurezza. Puoi distribuire le regole nella console Firebase, utilizzando la CLI Firebase o con l'API REST di gestione di Cloud Firestore.
Gli aggiornamenti alle regole di sicurezza di Cloud Firestore possono richiedere fino a un minuto per influenzare nuove query e ascoltatori. Tuttavia, potrebbero essere necessari fino a 10 minuti per propagare completamente le modifiche e influenzare tutti gli ascoltatori attivi.
Utilizza la console Firebase
Per configurare e distribuire il primo set di regole, per il database predefinito nel tuo progetto, apri la scheda Regole nella sezione Cloud Firestore della console Firebase.
Scrivi le tue regole nell'editor online, quindi fai clic su Pubblica .
Utilizza la CLI di Firebase
Puoi anche distribuire le regole utilizzando la CLI Firebase . L'utilizzo della CLI ti consente di mantenere le regole sotto il controllo della versione con il codice dell'applicazione e di distribuire le regole come parte del processo di distribuzione esistente.
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
Migliora la sicurezza per Cloud Storage
Le tue app trarranno vantaggio dalle robuste funzionalità del database di Cloud Firestore e dalle funzionalità di archiviazione e gestione dei file di Cloud Storage. Utilizzati insieme, questi prodotti forniscono anche un rafforzamento della sicurezza delle app, poiché Cloud Firestore può acquisire i requisiti di autorizzazione utilizzabili dalle regole di sicurezza Firebase per entrambi i prodotti. Per ulteriori informazioni, consulta la guida per Cloud Storage .
Prossimi passi
- Scopri come strutturare le regole di sicurezza .
- Scrivi condizioni di regole di sicurezza personalizzate .
- Leggi il riferimento alle regole di sicurezza .