Le viste sicure con parametri in Cloud SQL per MySQL forniscono sicurezza dei dati e controllo dell'accesso alle righe per le applicazioni, supportando al contempo SQL. Queste viste supportano l'estrazione dei valori dei dati, ovvero il processo di recupero di dati specifici dalle colonne, e aiutano 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 sono autorizzati ad accedere.
Le viste sicure con parametri sono un'estensione di viste MySQL, che 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.Esempio di vista sicura con parametri
L'esempio seguente mostra come creare una vista sicura con parametri su una tabella aggiungendo una variabile di sessione alla clausolaWHERE.
-- Create a view with a parameter
CREATE VIEW v_orders AS
SELECT * FROM orders
WHERE customer_id = @local_customer_id AND year >= @earliest_year;
Poi puoi impostare il parametro per la vista ed eseguire una query.
-- Set the parameter and query
SELECT /*+ SET_VIEW_VARS(local_customer_id=5, earliest_year=2021) */ * FROM v_orders;
-- Or query through a stored procedure
CALL mysql.execute_parameterized_query(
'SELECT * FROM db.v_orders',
'local_customer_id = 5, earliest_year = 2021');
Casi d'uso
I modelli linguistici di grandi dimensioni (LLM) potrebbero generare query SQL che espongono dati sensibili.
Le viste sicure con parametri gestiscono la sicurezza dei dati a livello di database, in particolare le query ad hoc provenienti da fonti non attendibili, come quelle tradotte dal linguaggio naturale. Ad esempio, puoi utilizzare le viste sicure con parametri per fornire la sicurezza dei dati per le applicazioni in cui gli utenti possono inviare query in linguaggio naturale, ad esempio "Mostra i miei ordini".
Puoi utilizzare le viste sicure con parametri per applicare i seguenti requisiti al modo in cui Cloud SQL per MySQL esegue questa query:
- La query legge solo gli oggetti e le colonne del database elencati 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 ulteriori informazioni sulla configurazione della sicurezza e del controllo dell'accesso, consulta Utilizzare le viste sicure con parametri.
Le viste sicure con parametri contribuiscono a mitigare i rischi per la sicurezza che si verificano quando gli utenti finali sono autorizzati a eseguire query non attendibili, come le query in linguaggio naturale, sulla tabella del database. I rischi per la sicurezza includono:
- 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 da linguaggio naturale a 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 utente ben intenzionate.
Utilizzando le viste sicure con parametri, puoi definire le tabelle e le colonne da cui le query non attendibili possono estrarre i dati. Queste viste consentono di limitare l'intervallo di righe disponibili per un singolo utente dell'applicazione. Queste limitazioni consentono anche di controllare attentamente i dati che gli utenti dell'applicazione possono visualizzare tramite query in linguaggio naturale, indipendentemente da come gli utenti formulano queste query.
Ad esempio, potresti avere un'applicazione che tiene traccia degli ordini dei clienti. Un agente dell'assistenza chiede nell'applicazione: "Qual è lo stato dell'ordine per il cliente 12345?" In questo scenario, l'applicazione può utilizzare una vista sicura con parametri con una variabile di sessione basata su un ID cliente. La vista sicura con parametri utilizza una query che restituisce solo le righe collegate e accessibili all'ID cliente 12345.
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.
Sicurezza dei dati
Le viste sicure con parametri offrono agli sviluppatori di applicazioni la sicurezza dei dati e il controllo dell'accesso alle righe utilizzando i seguenti metodi:
- Le viste sicure con parametri di MySQL 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.
I parametri di visualizzazione denominati consentono una visualizzazione limitata del database con parametri 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 alle viste con parametri che impediscono attacchi contro l'escape dei controlli nelle viste in base ai valori dei parametri specificati. Per ulteriori informazioni, consulta Limitazioni delle query.
Semplificare la gestione degli utenti
Con le viste sicure con parametri, 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. In questo modo è più facile gestire gli utenti e le connessioni per le applicazioni in cui ogni utente finale deve accedere solo ai propri dati.
Ad esempio, in un'applicazione in cui un utente deve visualizzare solo gli ordini di un cliente specifico, puoi definire una singola vista sicura con parametri che viene 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, semplificando la gestione degli utenti e le connessioni al database.
Limitazioni
Le viste sicure con parametri sono supportate solo in Cloud SQL per MySQL versione 8.0.43 e successive. Se provi a creare una vista sicura con parametri in una versione precedente di MySQL, Cloud SQL restituisce un errore.
Non puoi specificare variabili al di fuori delle clausole
WHERE,HAVINGoON.Non puoi utilizzare
EXPLAINsu una vista sicura con parametri.
- Esistono limitazioni quando esegui query sulle viste sicure con parametri. Per ulteriori informazioni, consulta Limitazioni delle query.