Viste sicure con parametri in Cloud SQL

Le viste sicure parametrizzate in Cloud SQL per PostgreSQL forniscono sicurezza dei dati e controllo dell'accesso alle righe per le applicazioni, supportando al contempo SQL. Queste visualizzazioni supportano l'estrazione dei valori dei dati, ovvero il processo di recupero di dati specifici dalle colonne, e aiutano a proteggerti 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 viste 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 user_specific_items WITH (security_barrier) AS
       SELECT item_id, item_name, description
       FROM items t
       WHERE owner_id = $@app_user_id;

Puoi eseguire query sulle viste utilizzando la funzione execute_parameterized_query o eseguendo l'istruzione EXECUTE .. WITH VIEW PARAMETERS.

Casi d'uso

Le viste sicure con parametri forniscono sicurezza dei dati a livello di database contro query ad hoc provenienti da origini non attendibili, come query tradotte da query in linguaggio naturale. Ad esempio, puoi utilizzare le viste sicure con parametri per fornire sicurezza dei dati per le applicazioni in cui gli utenti possono eseguire query in linguaggio naturale, ad esempio "Mostra i miei ordini".

Puoi utilizzare le viste sicure parametrizzate per applicare i seguenti requisiti al modo in cui Cloud SQL per PostgreSQL esegue questa query:

  • La query legge solo gli oggetti e le colonne del database che hai elencato nelle viste sicure con parametri del database.
  • La query legge 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.

Per saperne di più sulla configurazione della sicurezza e controllo dell'accesso, vedi Gestire la sicurezza dei dati delle applicazioni utilizzando viste sicure parametrizzate.

Le visualizzazioni sicure parametrizzate contribuiscono a mitigare i rischi per la sicurezza che si verificano quando gli utenti finali possono 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.
  • Il modello di linguaggio naturale in SQL (NL2SQL) 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 degli utenti ben intenzionati.

Utilizzando le viste sicure parametrizzate, puoi definire le tabelle e le colonne da cui le query non attendibili possono estrarre i dati. Queste viste ti consentono di limitare l'intervallo di righe disponibili per un singolo utente dell'applicazione. Queste limitazioni ti consentono anche di controllare rigorosamente i dati che gli utenti dell'applicazione possono visualizzare tramite query in linguaggio naturale, indipendentemente da come gli utenti formulano queste query.

Sicurezza dei dati

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

  • Le visualizzazioni create utilizzando la clausola 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 saperne di più sulla clausola WITH (security barrier), consulta Regole e privilegi.
  • I parametri della visualizzazione denominata consentono una visualizzazione limitata del database parametrizzato in base ai valori. I valori vengono 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 per eludere i controlli nelle viste in base ai valori dei parametri specificati. Per ulteriori informazioni, vedi Restrizioni forzate sulle query.

Limitazioni

  • Per utilizzare le viste sicure parametrizzate, devi abilitare il flag di database cloudsql.enable_parameterized_views per l'istanza Cloud SQL, il che richiede il riavvio del database.

  • L'estensione parameterized_views deve essere creata in ogni database in cui intendi creare viste sicure con parametri.

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

Passaggi successivi