Panoramica delle visualizzazioni con parametri
In Bigtable, puoi utilizzare le visualizzazioni con parametri per filtrare dinamicamente gli intervalli di dati per visualizzazioni logiche in base al contesto dell'applicazione. Questo approccio protegge le applicazioni da SQL injection e riduce la necessità di più visualizzazioni statiche.
Per gestire le informazioni sensibili, le visualizzazioni con parametri di Bigtable utilizzano un contesto isolato separato dal testo della query SQL. Poiché il database associa questi valori sul lato server, gli utenti e gli agenti AI non possono manipolare parametri di ricerca. Il database limita automaticamente l'accesso ai dati al tuo contesto specifico, indipendentemente da come scrivi la query.
Vantaggi delle visualizzazioni con parametri
Le visualizzazioni con parametri sono adatte alla gestione dell'ambito dei dati a livello di database, in particolare nelle applicazioni che elaborano query in formato libero tradotte dal linguaggio naturale. L'ambito dei dati è il processo di limitazione dei risultati delle query a un sottoinsieme specifico di dati. Queste visualizzazioni offrono un modo flessibile per implementare quanto segue:
- Propagazione dell'identità a livello profondo: applica autorizzazioni dei dati granulari a livello di utente, che garantiscono che gli utenti possano accedere solo al proprio contesto di dati. Ad esempio, un'applicazione può garantire che gli utenti o i tenant recuperino solo le righe che si trovano all'interno del limite designato.
- Gestione semplificata degli utenti: utilizza un singolo ruolo di database per tutti gli utenti del database anziché un ruolo separato per ogni utente.
- Isolamento dei parametri: le visualizzazioni con parametri riducono i rischi passando i valori come contesto isolato che rimane al di fuori del controllo dell'LLM o dell'utente finale. Poiché questi valori vengono tenuti separati dal testo della query, un utente o un agente AI che genera la query non può manipolarli.
- Mitigazione di SQL injection: quando crei applicazioni, la sostituzione dei parametri sul lato client all'interno del testo della query può portare alla manipolazione delle query. Le visualizzazioni con parametri riducono questo rischio eseguendo l'associazione dei parametri sul lato server dopo l'analisi della struttura della query. In questo modo si impedisce SQL injection perché i valori controllati dall'aggressore non possono modificare la struttura della query.
Ad esempio, considera un'applicazione di monitoraggio della salute che archivia le cartelle cliniche dei pazienti, inclusi i livelli di colesterolo. Se i pazienti eseguono query sui propri dati, un agente dannoso o con un comportamento errato potrebbe generare o richiedere una query che tenta di recuperare le cartelle di altri pazienti. Utilizzando una visualizzazione con parametri, l'applicazione applica l'isolamento dei pazienti a livello di database. La visualizzazione è definita con un parametro di visualizzazione patient_id:
CREATE VIEW patient_health_pv AS
(SELECT * FROM patient_health_records WHERE patient_id = CAST(VIEW_PARAMETERS('patient_id') AS BYTES))
Quando il client vuole eseguire una query sulla lettura del cholesterol di un paziente:
SELECT readings['value'], readings['date']
FROM patient_health_pv
WHERE readings['test_name'] = 'cholesterol'
Poiché viene eseguita una query sulla visualizzazione, Bigtable associa e applica automaticamente il valore patient_id dalla mappa dei parametri isolata. L'LLM o l'utente finale non ha la possibilità di modificare o eliminare questo filtro, garantendo un ambito robusto a livello di utente ed eliminando i vettori di SQL injection.
Come funzionano le visualizzazioni con parametri
Le visualizzazioni con parametri utilizzano un meccanismo chiamato parametri di visualizzazione per passare in modo sicuro al database il contesto a livello di applicazione, ad esempio un ID utente. Le visualizzazioni con parametri lo fanno passando i valori dei parametri di visualizzazione come contesto separato e isolato con la richiesta di query. Bigtable può quindi accedere a questo contesto durante l'esecuzione della query, ma la query stessa non può leggere o modificare il contesto.
La funzione VIEW_PARAMETERS() è l'interfaccia SQL per accedere a questi parametri all'interno di una definizione di visualizzazione. Ad esempio, per filtrare i dati in base all'ID dell'utente che esegue la query, puoi includere quanto segue nella clausola WHERE della visualizzazione:
CREATE VIEW purchase_history_pv AS
(SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES))
Puoi anche utilizzare VIEW_PARAMETERS() per parametrizzare i qualificatori di colonna. In questo modo, la visualizzazione restituisce campi specifici in modo dinamico in base al contesto dell'applicazione fornito.
CREATE VIEW specific_test_result_pv AS
SELECT
tests[VIEW_PARAMETERS('test_name')] AS reading,
_timestamp AS reading_time
FROM patients
Differenza rispetto ai parametri di ricerca standard
I parametri di visualizzazione funzionano in modo diverso rispetto ai parametri di ricerca standard:
- Sintassi e contesto: parametri di ricerca standard sono definiti utilizzando la
@paramsintassi e non possono essere dichiarati all'interno di una definizione di visualizzazione, ma solo in una query. I parametri di visualizzazione sono accessibili utilizzando la funzioneVIEW_PARAMETERS('key'), che può essere chiamata in qualsiasi contesto di query o visualizzazione. - Comportamento di chiusura in caso di errore: se viene eseguita una query su una definizione di visualizzazione che contiene un
VIEW_PARAMETERS('key')riferimento ma il valore corrispondente non viene fornito nella mappa dei parametri di visualizzazione della richiesta, la query non riesce immediatamente con un errorenot found / missing parameter. In questo modo si evita l'esposizione accidentale dei dati se la configurazione non viene applicata correttamente.
Limitazioni
Alle visualizzazioni con parametri si applicano le seguenti limitazioni:
- Puoi creare visualizzazioni con parametri solo da visualizzazioni logiche. Crea una nuova visualizzazione logica con parametri utilizzando Google Cloud CLI. Non modificare una visualizzazione logica esistente.
- I parametri di visualizzazione supportano solo valori di tipo stringa. Se un parametro
rappresenta un tipo di dati diverso nella definizione SQL della visualizzazione, devi
passare il valore parametro come stringa ed eseguirne il cast all'interno della definizione della visualizzazione, ad esempio
CAST(VIEW_PARAMETERS('parameter_name') AS INT64).