Panoramica delle visualizzazioni protette parametrizzate

Questa pagina descrive le viste sicure parametrizzate in AlloyDB per PostgreSQL, che forniscono sicurezza dei dati delle applicazioni econtrollo dell'accessoo dell'accesso a livello di riga utilizzando le viste SQL e contribuiscono a garantire che gli utenti delle applicazioni possano visualizzare solo i dati a cui devono accedere.

Le viste sicure con parametri sono un'estensione delle viste sicure 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. L'interfaccia esegue la query con questi valori, che vengono utilizzati durante l'esecuzione della query.

Di seguito è riportato un esempio di visualizzazione 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 sicure con parametri utilizzando la stored procedure execute_parameterized_query o eseguendo l'istruzione EXECUTE .. WITH VIEW PARAMETERS. Per saperne di più, vedi Gestire la sicurezza dei dati delle applicazioni utilizzando le viste sicure con parametri di AlloyDB.

Vantaggi delle visualizzazioni sicure parametrizzate

Le visualizzazioni sicure parametrizzate sono ideali per gestire la sicurezza dei dati a livello di database, soprattutto quando si ha a che fare con query ad hoc provenienti da origini non attendibili, come quelle tradotte dal linguaggio naturale. Queste viste offrono un modo flessibile per implementare ilcontrollo dell'accessoo granulare.

Ad esempio, considera un'applicazione che monitora i bagagli registrati dei clienti. Un cliente con ID utente 12345 chiede: "Dov'è la mia borsa?" In questo scenario, le viste sicure con parametri garantiscono quanto segue:

La query restituisce solo le righe accessibili all'utente che l'ha inviata, ad esempio le righe collegate all'ID utente 12345.

Mitigazione dei rischi per la sicurezza

Le visualizzazioni sicure con parametri aiutano a mitigare i rischi per la sicurezza quando gli utenti finali eseguono query non attendibili, come query in linguaggio naturale, sul tuo database. Questi rischi includono:

  • Prompt dannosi: gli utenti potrebbero tentare di manipolare il modello sottostante per accedere a tutti i dati dell'applicazione.
  • Query SQL con ambito ampio: i modelli linguistici di grandi dimensioni (LLM) potrebbero generare query SQL che espongono dati sensibili, anche da query utente ben intenzionate.

Utilizzando le viste sicure con parametri, puoi limitare l'intervallo di righe disponibili per i singoli utenti dell'applicazione. Questo controllo garantisce la sicurezza dei dati, indipendentemente da come gli utenti formulano le query.

Gestione dell'accesso ai dati

Le viste sicure con parametri risolvono le sfide comuni nella gestione dell'accesso ai dati per un numero di utenti ampio e in crescita.

  • Gestione utenti semplificata:con le viste sicure parametrizzate, puoi utilizzare un singolo ruolo di database per tutti gli utenti finali, anziché utilizzare metodi che potrebbero richiedere la creazione di un utente o un ruolo di database separato per ogni utente finale. Le viste sicure con parametri aiutano a semplificare la gestione di utenti e connessioni per le applicazioni in cui ogni utente finale deve accedere solo ai propri dati.

    Ad esempio, in un'applicazione di una compagnia aerea in cui i clienti devono visualizzare solo le proprie prenotazioni, puoi definire una singola vista sicura con parametri parametrizzata dall'identificatore dell'utente finale. Questa vista consente a un singolo ruolo di database, con accesso alla vista, non alla tabella sottostante, di servire tutti gli utenti, il che semplifica la gestione degli utenti e le connessioni al database.

  • Applicazione semplificata della sicurezza: le visualizzazioni sicure parametrizzate incorporano intrinsecamente i controlli dell'accesso. Quando viene eseguita una query su una vista, i parametri di sicurezza definiti vengono applicati in modo coerente, indipendentemente dall'utente che accede alla vista. Questo approccio è diverso da situazioni in cui le norme di sicurezza sottostanti nelle tabelle di base potrebbero non applicarsi automaticamente alle viste senza configurazione aggiuntiva.

Per ulteriori informazioni sui meccanismi di sicurezza esistenti in PostgreSQL, ad esempio le policy di sicurezza a livello di riga (RLS), consulta Policy di sicurezza a livello di riga.

Meccanismo di sicurezza

Le viste sicure con parametri forniscono 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 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.
  • L'applicazione di ulteriori restrizioni alle query che accedono alle viste parametrizzate è utile per le applicazioni che eseguono query non attendibili da utenti finali, come quelle generate da una generazione di linguaggio naturale in SQL basata sull'AI. In questo modo si evita di uscire dall'envelope di sicurezza fornito dalle visualizzazioni sicure parametrizzate e si gestisce l'utilizzo delle risorse. Per ulteriori informazioni, vedi Restrizioni forzate sulle query.

Limitazioni

  • Devi attivare il flag della visualizzazione parametrizzata separatamente su ogni istanza di AlloyDB. Gli oggetti di visualizzazione parametrizzati creati nell'istanza principale vengono propagati alle istanze del pool di lettura e alle repliche tra regioni. Tuttavia, l'impostazione del flag parameterized_views.enabled non viene applicata automaticamente e deve essere impostata manualmente su ogni istanza. Per ulteriori informazioni, consulta Prima di iniziare.

    Non puoi eseguire query sulle viste parametrizzate in un'istanza di pool di lettura o in una replica multiregionale prima di attivare il flag parameterized_views.enabled su ogni istanza.

Passaggi successivi