Introduzione alle regole di sicurezza

Con le regole di sicurezza di 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 offrono il controllo dell'accesso e la convalida dei dati in un in un formato espressivo. Per creare sistemi di accesso basati su utenti e ruoli che proteggano i dati degli utenti, devi utilizzare Firebase Authentication con le regole di sicurezza di Firestore.

Versione 2 delle regole di sicurezza

A partire da maggio 2019, la versione 2 delle regole di sicurezza di Firestore è ora disponibile disponibili. La versione 2 delle regole cambia 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 impostando rules_version = '2'; come prima riga delle regole di sicurezza:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

Regole di scrittura

Scrivi e gestisci le regole di sicurezza Firestore personalizzate in base al modello di dati che crei per il database predefinito e per ogni database aggiuntivo nel tuo progetto.

Tutte le regole di sicurezza di Firestore sono costituite da istruzioni match, che identificano i documenti nel tuo database, ed 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 di database da una libreria client web/mobile di Firestore viene valutata in base a le regole di sicurezza prima di leggere o scrivere dati. Se le regole negano l'accesso a uno qualsiasi dei percorsi dei documenti specificati, l'intera richiesta non va a buon fine.

Di seguito sono riportati alcuni esempi di insiemi 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;
    }
  }
}

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 nell'intero database. Vai alla guida per la struttura delle regole di sicurezza per imparare a associare percorsi di dati specifici e a lavorare con i dati gerarchici.

Regole di test

Firestore fornisce un simulatore di regole che puoi utilizzare per testare un set di regole. Puoi accedere al simulatore dalla scheda Regole in nella sezione Firestore della console Firebase.

Il simulatore di regole consente di simulare letture, scrittura ed eliminazioni autenticate e non autenticate. Quando simuli una richiesta autenticata, puoi creare e visualizzare in anteprima i token di autenticazione di vari provider. Esecuzione di richieste simulate rispetto al set di regole dell'editor, non a quello attualmente distribuito.

Regole di deployment

Per poter iniziare a utilizzare Firestore dalla tua app mobile, ti serviranno per il deployment delle regole di sicurezza. Puoi eseguire il deployment delle regole nella console Firebase, utilizzando l'interfaccia a riga di comando di Firebase o l'API REST per la gestione di Firestore.

Gli aggiornamenti delle Regole di sicurezza di Firestore possono richiedere fino a un minuto per influire su nuove query e su nuovi ascoltatori. Tuttavia, potrebbero essere necessari fino a 10 minuti per la propagazione completa delle modifiche e per applicarle agli ascoltatori attivi.

Utilizzare la console Firebase

Per configurare ed eseguire il deployment del primo insieme di regole per il database predefinito nel progetto, apri la scheda Regole nella sezione 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 l'interfaccia a riga di comando di Firebase. L'utilizzo della CLI ti consente di mantenere le regole sotto controllo della versione con il codice dell'applicazione ed eseguire il deployment delle regole nell'ambito della procedura 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

Passaggi successivi