Le viste sicure parametrizzate in AlloyDB per PostgreSQL ti consentono di applicare controllo dell'accesso alle righe a livello di applicazione in modo che gli utenti possano visualizzare solo i dati a cui sono autorizzati ad accedere. Basate su un'estensione delle viste sicure di PostgreSQL, queste viste consentono di includere parametri denominati specifici dell'applicazione nelle definizioni delle viste e di passare valori dei parametri che si applicano durante l'esecuzione delle query.
Di seguito è riportato un esempio di vista sicura parametrizzata:
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 protette parametrizzate utilizzando la funzione execute_parameterized_query o l'istruzione EXECUTE .. WITH VIEW PARAMETERS.
Per saperne di più, consulta Gestisci la sicurezza dei dati delle applicazioni utilizzando le viste sicure parametrizzate di AlloyDB.
Vantaggi delle viste sicure parametrizzate
Le viste sicure parametrizzate sono ideali per gestire la sicurezza dei dati a livello di database, soprattutto quando si tratta di query ad hoc provenienti da origini non attendibili, come quelle tradotte dal linguaggio naturale. Queste viste offrono un modo flessibile per implementare controllo dell'accesso granulare dell'accesso.
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 che la query restituisca solo le righe accessibili all'utente che ha inviato la query, ad esempio le righe collegate all'ID utente 12345.
Mitigazione dei rischi per la sicurezza
Le viste sicure parametrizzate aiutano 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 dell'applicazione.
Query SQL ad ampio raggio: i modelli linguistici di grandi dimensioni (LLM) potrebbero generare query SQL che espongono dati sensibili, anche da query degli utenti con buone intenzioni.
Utilizzando le viste sicure parametrizzate, puoi limitare l'intervallo di righe disponibili per i singoli utenti dell'applicazione. Questo controllo aiuta a proteggere i dati dell'applicazione, indipendentemente da come gli utenti formulano le loro query.
Gestione dell'accesso ai dati
Le viste sicure parametrizzate affrontano le sfide comuni nella gestione dell'accesso ai dati per un numero elevato e in crescita di utenti.
Gestione semplificata degli utenti: con le viste sicure parametrizzate, puoi utilizzare un singolo ruolo del database per servire tutti gli utenti finali, anziché utilizzare metodi che potrebbero richiedere la creazione di un utente o un ruolo del database separato per ogni utente finale. Le viste sicure parametrizzate semplificano 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 parametrizzata in base all'identificatore dell'utente finale. Questa vista consente a un singolo ruolo del database, con accesso alla vista, non alla tabella sottostante, di servire tutti gli utenti, semplificando la gestione degli utenti e le connessioni al database.
Applicazione semplificata della sicurezza: le viste sicure parametrizzate incorporano intrinsecamente i controlli degli accessi. 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 è in contrasto con le 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 parametrizzate offrono agli sviluppatori di applicazioni la sicurezza dei dati e controllo dell'accesso alle righe utilizzando i seguenti metodi:
- Le viste create utilizzando l'opzione
WITH (security_barrier)forniscono sicurezza a livello di riga impedendo che funzioni e operatori scelti in modo dannoso ricevano valori dalle righe fino a quando la vista non ha terminato il suo lavoro. Per saperne di più sulla clausolaWITH (security_barrier), consulta Regole e privilegi. - La parametrizzazione che utilizza 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 degli utenti finali, come quelle generate dalla generazione di SQL da linguaggio naturale dell'AI. Questa applicazione impedisce alle query di uscire dall'envelope di sicurezza fornito dalle viste sicure con parametri e aiuta a gestire l'utilizzo delle risorse. Per saperne di più sulle limitazioni delle query, consulta Limitazioni applicate alle query.
Limitazioni
Devi attivare il flag della vista parametrizzata separatamente su ogni istanza di AlloyDB. Gli oggetti vista parametrizzata creati nell'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 su viste parametrizzate su un'istanza di pool di lettura o su una replica tra regioni prima di attivare il flag
parameterized_views.enabledsu ogni istanza.