Introduzione alle regole di sicurezza
Con le regole di sicurezza di Firestore, puoi concentrarti sulla creazione di un'ottima esperienza utente 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 sugli utenti e sui ruoli che proteggono i dati degli utenti, devi utilizzare l'autenticazione Firebase con le regole di sicurezza di Firestore.
Versione 2 delle regole di sicurezza
A partire da maggio 2019, è ora disponibile la versione 2 delle regole di sicurezza di Firestore. La versione 2 delle regole modifica il comportamento dei caratteri jolly ricorrenti {name=**}
. Devi utilizzare la versione 2 se intendi utilizzare le query del gruppo di raccolte. Devi attivare la versione 2 impostando rules_version = '2';
come prima riga nelle regole di sicurezza:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Scrittura di regole
Tutte le regole di sicurezza di Firestore sono composte da istruzioni match
, che identificano i documenti nel
database, e da espressioni allow
, che controllano l'accesso ai 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 web/per Firestore viene valutata in base alle regole di sicurezza prima di leggere o scrivere dati. Se le regole negano l'accesso a uno dei percorsi del documento specificati, l'intera richiesta non riesce.
Di seguito sono riportati alcuni esempi di insiemi di regole di base. Anche se queste regole sono valide, non sono consigliate per le applicazioni di produzione:
Autenticazione obbligatoria
// 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 tutti
// 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 sopra corrisponde a qualsiasi documento nell'intero database. Continua con la guida per strutturare le regole di sicurezza per scoprire come abbinare percorsi di dati specifici e utilizzare i dati gerarchici.
Verifica delle regole in corso...
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 Firestore della console Firebase.
Il simulatore di regole ti consente di simulare letture, scritture ed eliminazioni autenticate e non autenticate. Quando simula una richiesta autenticata, puoi creare e visualizzare in anteprima i token di autenticazione da vari provider. Le richieste simulate vengono eseguite sul set di regole nell'editor, non sul set di regole attualmente sottoposto a deployment.
Deployment delle regole in corso...
Prima di poter iniziare a utilizzare Firestore dalla tua app per dispositivi mobili, devi eseguire il deployment delle regole di sicurezza. Puoi eseguire il deployment delle regole nella Console Firebase o utilizzando l'interfaccia a riga di comando di Firebase.
Gli aggiornamenti alle regole di sicurezza di Firestore possono richiedere fino a un minuto per influire sulle nuove query e sui nuovi utenti. Tuttavia, possono trascorrere fino a 10 minuti per propagare completamente le modifiche e influenzare tutti i listener attivi.
Utilizzare la Console Firebase
Per configurare ed eseguire il deployment del primo insieme di regole, apri la scheda Regole nella sezione Firestore della console Firebase.
Scrivi le regole nell'editor online e poi fai clic su Pubblica.
Utilizza l'interfaccia a riga di comando di Firebase
Puoi anche eseguire il deployment delle regole utilizzando l'interfaccia a riga di comando di Firebase. L'interfaccia a riga di comando consente di tenere le regole sotto il controllo della versione con il codice dell'applicazione e di eseguirne il deployment nell'ambito 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 your .rules file
firebase deploy --only firestore:rules
Passaggi successivi
- Scopri come strutturare le regole di sicurezza.
- Scrivi le condizioni relative alle regole di sicurezza personalizzate.
- Leggi il riferimento sulle regole di sicurezza.