L'obiettivo principale del supporto delle regole per le query della pipeline è quello di corrispondere alle funzionalità di filtro del motore delle regole esistente. Sebbene le query pipeline offrano un ricco set di funzionalità, il motore di regole è limitato al riconoscimento di filtri semplici per garantire la soddisfacibilità e la sicurezza delle query.
Espressioni di filtro supportate
Affinché una query sia vincolata dalle tue regole, deve utilizzare operatori di confronto standard rispetto a costanti. Il motore delle regole riconosce i seguenti tipi di filtri:
- Uguaglianza e disuguaglianza:
eq,neq. - Confronti:
gt,gte,lt,lte. - Abbonamento:
in,arrayContains.
Ecco alcuni esempi:
where(eq("foo", 2))where(lt("foo", 2))documents("/user/1", "/user/2").where(...)
Proprietà della richiesta
Puoi continuare a utilizzare l'oggetto request per convalidare l'autenticazione e
il contesto delle query, anche se alcune proprietà disponibili nelle query standard non sono
supportate nelle pipeline.
Proprietà supportate
Il nuovo motore continua a supportare le seguenti proprietà:
request.auth: Accedi ai dati del token e dell'UID utente.request.method: identifica l'operazione (ad esempio,get,list).request.path: il percorso della risorsa a cui viene eseguito l'accesso.request.time: il timestamp lato server della richiesta.
Proprietà non supportate
Le proprietà request.query come limit, offset e orderBy non sono supportate per i controlli delle regole di Pipelines a causa della complessità della determinazione di questi valori nelle query in più fasi.
Gestione e autorizzazioni delle fasi della pipeline
Esistono diverse fasi della pipeline che corrispondono a operazioni granulari specifiche nelle regole di sicurezza:
- Autorizzazioni
allow list: attivate dalle fasicollection(),collectionGroup()edatabase(). allow get: attivate dalla fasedocuments(), che viene trattata in modo simile a un'operazione batchget.- Fasi di modifica dei campi: le regole operano solo sui dati archiviati e non sui valori derivati. Se una pipeline include fasi che modificano i campi (ad esempio,
AddFields,ReplaceWith,Select), il motore delle regole smette di applicare i vincoli di filtro dopo che viene rilevata la fase. - Fase dei valori letterali: la fase
literals()non legge dal database, ma può comportare costi. Per evitare abusi, deve essere abbinato a un'altra fase (comecollection()) che può essere verificata dalle regole.