Con Cloud Firestore Security Rules, puoi concentrarti sulla creazione di un'esperienza utente ottimale senza dover gestire l'infrastruttura o scrivere codice di autenticazione e autorizzazione lato server.
Le regole di sicurezza forniscono il controllo dell'accesso e la convalida dei dati in un formato semplice ma espressivo. Per creare sistemi di accesso basati su utenti e ruoli che mantengano al sicuro i dati degli utenti, devi utilizzare Firebase Authentication con Cloud Firestore Security Rules.
Regole di sicurezza versione 2
A partire da maggio 2019, è disponibile la versione 2 delle regole di sicurezza Cloud Firestore. La versione 2 delle regole modifica il comportamento dei caratteri jolly
ricorsivi {name=**}
. Devi utilizzare la versione 2 se prevedi di
utilizzare le query sui gruppi di raccolte. Devi attivare la
versione 2 inserendo rules_version = '2';
come prima riga delle regole di sicurezza:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Regole di scrittura
Scriverai e gestirai Cloud Firestore Security Rules personalizzati in base al modello di dati che crei per il database predefinito e per ogni database aggiuntivo nel tuo progetto.
Tutte le Cloud Firestore Security Rules sono costituite da istruzioni match
, che identificano i documenti nel tuo database, e da espressioni allow
, che controllano l'accesso a questi documenti:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Ogni richiesta al database da una libreria client mobile/web Cloud Firestore viene valutata in base alle tue regole di sicurezza prima di leggere o scrivere dati. Se le regole negano l'accesso a uno dei percorsi dei documenti specificati, l'intera richiesta non va a buon fine.
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:
Autorizzazione 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;
}
}
}
Consenti 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 dell'intero database. Continua a leggere la guida per strutturare le regole di sicurezza per
scoprire come abbinare percorsi di dati specifici e lavorare con dati gerarchici.
Regole di test
Cloud Firestore fornisce un simulatore di regole che puoi utilizzare per testare il tuo insieme 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 i token di autenticazione di vari provider. Le richieste simulate vengono eseguite rispetto al set di regole nell'editor, non rispetto al set di regole attualmente implementato.
Deployment delle regole
Prima di poter iniziare a utilizzare Cloud Firestore dall'app mobile, devi implementare le regole di sicurezza. Puoi eseguire il deployment delle regole nella console Firebase, utilizzando la CLI Firebase o l'API REST di gestione Cloud Firestore.
Gli aggiornamenti a Cloud Firestore Security Rules possono richiedere fino a un minuto per influire su nuove query e listener. Tuttavia, potrebbero essere necessari fino a 10 minuti per propagare completamente le modifiche e interessare gli ascoltatori attivi.
Utilizzare la console Firebase
Per configurare ed eseguire il deployment del primo insieme di regole, per il database predefinito nel tuo progetto, apri la scheda Regole nella sezione Cloud Firestore della console Firebase.
Scrivi le regole nell'editor online, quindi fai clic su Pubblica.
Utilizza l'interfaccia a riga di comando di Firebase
Puoi anche eseguire il deployment delle regole utilizzando la Firebase CLI. L'utilizzo della CLI ti consente di mantenere le regole sotto il controllo della versione con il codice dell'applicazione e di eseguire il deployment delle regole come parte del processo di deployment 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 solide funzionalità di database di Cloud Firestore e dalle funzionalità di archiviazione e gestione dei file di Cloud Storage. Utilizzati insieme, questi prodotti forniscono anche una maggiore sicurezza delle app, poiché Cloud Firestore può acquisire i requisiti di autorizzazione utilizzabili dalle regole di sicurezza Firebase per entrambi i prodotti. Per saperne di più, consulta la guida per Cloud Storage.
Passaggi successivi
- Scopri come strutturare le regole di sicurezza.
- Scrivi condizioni per le regole di sicurezza personalizzate.
- Leggi il riferimento alle regole di sicurezza.