Panoramica delle visualizzazioni protette parametrizzate

Questo documento descrive le viste sicure con parametri in AlloyDB per PostgreSQL, che offrono la sicurezza dei dati delle applicazioni e il controllo dell'accesso a livello di riga supportando SQL. Queste visualizzazioni supportano l'estrazione dei valori dei dati, ovvero il processo di recupero di dati specifici dalle colonne, e contribuiscono a proteggere dagli attacchi di prompt injection. Le viste sicure con parametri 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 visualizzazione 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 stored procedure execute_parameterized_query o eseguendo l'istruzione EXECUTE .. WITH VIEW PARAMETERS.

Casi d'uso

Le viste sicure con parametri sono adatte per l'amministrazione della sicurezza dei dati a livello di database contro query ad hoc provenienti da fonti non attendibili, come 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 alla modalità di esecuzione di questa query da parte di AlloyDB:

  • La query può leggere solo gli oggetti e le colonne del database che hai elencato nelle viste sicure con parametri 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 saperne di più sulla configurazione della sicurezza e controllo dell'accesso, vedi Proteggere e controllare l'accesso ai dati delle applicazioni utilizzando viste sicure parametrizzate.

Le visualizzazioni sicure parametrizzate contribuiscono a mitigare i rischi per la sicurezza che si verificano quando agli utenti finali è consentito eseguire query non attendibili, come query in linguaggio naturale, sulla tabella del database. I rischi per la sicurezza includono quanto segue:

  • Gli utenti possono inviare attacchi di prompt injection e tentare di manipolare il modello sottostante per rivelare tutti i dati a cui l'applicazione ha accesso.
  • L'LLM potrebbe generare query SQL con un ambito più ampio di quanto sia appropriato per motivi di sicurezza dei dati. Questo rischio per la sicurezza può esporre dati sensibili in risposta anche a query utente ben intenzionate.

Utilizzando le viste 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 disponibili per un singolo utente dell'applicazione. Queste limitazioni ti consentono inoltre di controllare in modo preciso i dati che gli utenti dell'applicazione possono visualizzare tramite query in linguaggio naturale, indipendentemente da come gli utenti formulano queste query.

Meccanismo di sicurezza

Le viste sicure con parametri offrono agli sviluppatori di applicazioni sicurezza dei dati e controllo dell'accesso alle righe utilizzando i seguenti metodi:

  • Le visualizzazioni create utilizzando l'opzione WITH (security barrier) forniscono la sicurezza a livello di riga impedendo che funzioni e operatori scelti in modo dannoso ricevano valori dalle righe finché la visualizzazione non ha terminato il suo lavoro. Per maggiori informazioni sulla clausola WITH (security barrier), consulta Regole e privilegi.
  • La parametrizzazione tramite 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 dell'utente finale.
  • Applicazione di ulteriori limitazioni alle query che accedono a viste parametrizzate che impediscono attacchi contro l'escape dei controlli nelle viste in base ai valori dei parametri specificati. Per ulteriori informazioni, vedi Restrizioni forzate sulle query.

Limitazioni

  • Se viene fatto riferimento a una vista parametrizzata in una funzione definita dall'utente dall'utente chiamata utilizzando una delle API utilizzate nelle viste sicure parametrizzate, si verifica un errore. Devi fare riferimento direttamente alla vista con parametri nella query principale.

  • Devi attivare il flag della visualizzazione parametrizzata separatamente su ogni istanza di AlloyDB. Gli oggetti vista parametrizzati 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 su ogni istanza. Per ulteriori informazioni, consulta Prima di iniziare. Non puoi eseguire query sulle viste parametrizzate sulla replica prima di attivare il flag parameterized_views.enabled su ogni istanza di replica. Questa limitazione non si applica all'istanza di standby.

Passaggi successivi