Questo documento descrive le viste sicure parametrizzate in AlloyDB per PostgreSQL, che forniscono sicurezza dei dati dell'applicazione e controllo dell'accesso alle righe, supportando al contempo SQL. Queste visualizzazioni supportano l'estrazione del valore dei dati, ovvero il processo di recupero di elementi di dati specifici dalle colonne, e aiutano a proteggersi dagli attacchi di prompt injection. Le visualizzazioni sicure parametrizzate contribuiscono a garantire che gli utenti finali possano visualizzare solo i dati a cui devono accedere.
Le viste parametrizzate sono un'estensione delle viste PostgreSQL, che ti consentono di utilizzare parametri di vista denominati specifici dell'applicazione nelle definizioni delle viste. Questa funzionalità fornisce un'interfaccia che accetta una query e i valori per i parametri denominati. Le visualizzazioni eseguono la query con questi valori, che vengono utilizzati durante l'esecuzione della query.
Di seguito è riportato un esempio di vista sicura con parametri:
CREATE VIEW secure_checked_items WITH (security_barrier) AS
SELECT bag_id, timestamp, location
FROM checked_items t
WHERE customer_id = $@app_end_userid;
Puoi eseguire query sulle viste utilizzando la procedura memorizzata execute_parameterized_query
o eseguendo l'istruzione EXECUTE .. WITH VIEW PARAMETERS
.
Casi d'uso
Le viste sicure parametrizzate sono molto adatte per l'amministrazione della sicurezza dei dati a livello di database contro query ad hoc provenienti da origini non attendibili, come le query tradotte da query in linguaggio naturale. Ad esempio, considera un'applicazione il cui database tiene traccia dei bagagli registrati dei clienti in viaggio. Questi clienti possono inviare query all'applicazione. Ad esempio, un cliente con l'ID utente dell'applicazione 12345 può inserire una query nell'applicazione, ad esempio "Dov'è la mia borsa?".
Puoi utilizzare le viste sicure con parametri per applicare i seguenti requisiti al modo in cui AlloyDB esegue questa query:
- La query può leggere solo gli oggetti e le colonne del database elencati nelle visualizzazioni sicure parametrizzate del database.
- La query può leggere solo le righe del database associate all'utente che ha inviato la query. Le righe restituite hanno una relazione di dati con la riga della tabella dell'utente il cui valore della colonna ID è
12345
.
Per ulteriori informazioni sulla configurazione della sicurezza e del controllo dell'accesso, consulta Proteggere e controllare l'accesso ai dati dell'applicazione utilizzando viste sicure parametrizzate.
Le viste sicure parametrizzate contribuiscono ad attenuare i rischi per la sicurezza che si verificano quando gli utenti finali sono autorizzati a eseguire query non attendibili, come quelle in linguaggio naturale, sulla tabella del database. I rischi per la sicurezza includono quanto segue:
- Gli utenti possono inviare attacchi di inserimento di prompt e tentare di manipolare il modello sottostante per rivelare tutti i dati a cui ha accesso l'applicazione.
- L'LLM potrebbe generare query SQL di ambito più ampio di quanto sia appropriato per motivi di sicurezza dei dati. Questo rischio per la sicurezza può esporre dati sensibili in risposta a query degli utenti anche ben intenzionate.
Utilizzando le visualizzazioni sicure parametrizzate, puoi definire le tabelle e le colonne da cui le query non attendibili possono estrarre i dati. Queste visualizzazioni ti consentono di limitare l'intervallo di righe disponibile per un singolo utente dell'applicazione. Queste limitazioni ti consentono inoltre di controllare in modo rigoroso i dati che gli utenti dell'applicazione possono visualizzare tramite query in linguaggio naturale, indipendentemente dal modo in cui gli utenti formulano queste query.
Meccanismo di sicurezza
Le viste sicure parametrizzate offrono agli sviluppatori di applicazioni la sicurezza dei dati e il controllo dell'accesso alle righe utilizzando i seguenti metodi:
- Le visualizzazioni create utilizzando l'opzione
WITH (security barrier)
forniscono sicurezza a livello di riga impedendo che funzioni e operatori selezionati con dolo trasmettano valori dalle righe fino a quando la visualizzazione non ha terminato il proprio compito. Per ulteriori informazioni sulla clausolaWITH (security barrier)
, consulta Regole e privilegi. - La parametrizzazione mediante parametri di visualizzazione denominati consente una visualizzazione limitata del database parametrizzato in base ai valori forniti dall'applicazione in base alla sicurezza a livello di applicazione, ad esempio l'autenticazione degli utenti finali. Per ulteriori informazioni, consulta
- Applicazione di restrizioni aggiuntive alle query che accedono alle visualizzazioni parametrizzate per impedire attacchi che aggirino i controlli nelle visualizzazioni in base ai valori dei parametri specificati. Per ulteriori informazioni, consulta Restrizioni applicate alle query.
Limitazioni
Se viene fatto riferimento a una vista con parametri in una funzione definita dall'utente chiamata utilizzando una delle API utilizzate nelle visualizzazioni sicure con parametri, si verifica un errore. Devi fare riferimento direttamente alla vista con parametri nella query principale.
Devi attivare il flag della vista con parametri separatamente in ogni istanza di AlloyDB. Gli oggetti di visualizzazione con parametri creati nell'istanza principale vengono propagati alle repliche di sola lettura e alle repliche tra regioni. Tuttavia, l'impostazione del flag
parameterized_views.enabled
non viene replicata automaticamente e deve essere replicata manualmente in ogni istanza. Per ulteriori informazioni, consulta la sezione Prima di iniziare. Non puoi eseguire query sulle visualizzazioni parametrizzate nella replica prima di attivare il flagparameterized_views.enabled
su ogni istanza della replica. Questa limitazione non si applica all'istanza in standby.
Passaggi successivi
- Gestisci la sicurezza dei dati delle applicazioni utilizzando visualizzazioni sicure parametrizzate.
- Proteggi e controlla l'accesso ai dati dell'applicazione utilizzando viste sicure parametrizzate.