Le viste sicure con parametri sono un'estensione delle viste sicure di PostgreSQL, che consentono di utilizzare i parametri delle viste 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 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 sicure con parametri utilizzando la procedura memorizzata execute_parameterized_query o eseguendo l'istruzione EXECUTE .. WITH VIEW PARAMETERS.
Per saperne di più, consulta Gestire la sicurezza dei dati delle applicazioni utilizzando
le viste sicure con parametri di AlloyDB Omni.
Vantaggi delle viste sicure con parametri
Le viste sicure con parametri sono adatte alla gestione della sicurezza dei dati a livello di database, soprattutto quando si tratta di query ad hoc da origini non attendibili, come quelle tradotte dal linguaggio naturale. Queste viste offrono un modo flessibile per implementare il controllo dell'accesso granulare.
Prendi ad esempio un'applicazione che tiene traccia dei 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 viste sicure con parametri contribuiscono a mitigare i rischi per la sicurezza quando gli utenti finali eseguono query non attendibili, come le 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 delle applicazioni.
- 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 delle applicazioni. 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 elevato e in crescita.
- Gestione semplificata degli utenti: con le viste sicure con parametri, puoi utilizzare un singolo ruolo database per tutti gli utenti finali, anziché utilizzare metodi che potrebbero richiedere la creazione di un utente o un ruolo database separato per ogni utente finale. Le viste sicure con parametri contribuiscono a semplificare la gestione degli utenti e delle 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 che viene parametrizzata dall'identificatore dell'utente finale. Questa vista consente a un singolo ruolo 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 viste sicure con parametri 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 dalle situazioni in cui le policy di sicurezza sottostanti sulle tabelle di base potrebbero non essere applicate automaticamente alle viste senza una configurazione aggiuntiva.
Per saperne di più sui meccanismi di sicurezza esistenti in PostgreSQL, come 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 aggiungono un ulteriore livello di sicurezza controllando il modo in cui le query accedono ai dati sottostanti. Offrono agli sviluppatori di applicazioni la sicurezza dei dati e il controllo dell'accesso alle righe utilizzando i seguenti metodi:
- Le viste create utilizzando l'opzione
WITH (security barrier)forniscono la sicurezza a livello di riga impedendo che le funzioni e gli operatori scelti in modo dannoso vengano passati valori dalle righe fino a quando la vista non ha completato il suo lavoro. Per saperne di più sulla clausolaWITH (security barrier), consulta Regole e privilegi. - La parametrizzazione tramite i parametri delle viste denominati consente una visualizzazione limitata del database parametrizzata dai valori forniti dall'applicazione in base alla sicurezza a livello di applicazione, ad esempio l'autenticazione dell'utente finale.
- L'applicazione di ulteriori limitazioni alle query che accedono alle viste con parametri è utile per le applicazioni che eseguono query non attendibili dagli utenti finali, come quelle generate da un'AI che converte il linguaggio naturale in SQL. In questo modo si impedisce di uscire dall'envelope di sicurezza fornito dalle viste sicure con parametri e di gestire l'utilizzo delle risorse. Per saperne di più, consulta Limitazioni applicate alle query.
Limitazioni
- Devi attivare il flag della vista con parametri separatamente su ogni istanza di AlloyDB Omni. Gli oggetti delle viste con parametri creati sull'istanza principale vengono propagati alle istanze del pool di lettura e alle repliche tra regioni.
Tuttavia, l'impostazione del flag
parameterized_views.enablednon viene applicata automaticamente e deve essere impostata manualmente su ogni istanza. Per saperne di più, consulta Prima di iniziare. Non puoi eseguire query sulle viste con parametri su un'istanza del pool di lettura o su una replica tra regioni prima di attivare il flagparameterized_views.enabledsu ogni istanza.
Passaggi successivi
- Gestire la sicurezza dei dati delle applicazioni utilizzando le viste sicure con parametri.
- Proteggere e controllare l'accesso ai dati delle applicazioni utilizzando le viste sicure con parametri views.