Le viste sicure parametrizzate in AlloyDB per PostgreSQL ti consentono di limitare l'accesso degli utenti dell'applicazione a righe specifiche del database in base ai parametri denominati. In questo tutorial, creerai ed eseguirai query su una vista sicura parametrizzata utilizzando AlloyDB Studio o psql.
Gli esempi in questo tutorial illustrano le funzionalità delle viste sicure parametrizzate solo a scopo dimostrativo.
Obiettivi
- Crea viste parametrizzate sicure con parametri di visualizzazione denominati.
- Crea il ruolo del database utilizzato dall'applicazione per connettersi al database e accedere alle viste sicure con parametri.
- Concedi le autorizzazioni del nuovo ruolo alle viste sicure e revoca l'accesso alle tabelle di base.
- Connettiti utilizzando il nuovo ruolo e verifica che non sia possibile accedere alle tabelle con limitazioni.
- Esegui query sulla vista protetta con parametri utilizzando la funzione
execute_parameterized_query.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
Abilita la fatturazione e le API richieste
Nella console Google Cloud , seleziona un progetto.
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Cloud necessarie per creare e connetterti ad AlloyDB.
- Nel passaggio Conferma progetto, fai clic su Avanti per confermare il nome del progetto a cui apporterai le modifiche.
Nel passaggio Abilita API, fai clic su Abilita per abilitare quanto segue:
- API AlloyDB
Creare e connettersi a un database
prepara l'ambiente
Per prepararti a eseguire query su una vista sicura parametrizzata, devi prima configurare le viste parametrizzate, il database e i ruoli del database, l'estensione parameterized_views e lo schema dell'applicazione.
Attiva l'estensione richiesta
Attiva il flag di database parameterized_views.enabled, che carica le librerie di estensioni richieste. Per saperne di più, consulta Configura i flag di database di un'istanza.
Configura il database
Crea un database denominato database per i dati dell'applicazione e le viste parametrizzate. Per saperne di più sulla creazione di un database, consulta Crea un database.
Crea i ruoli del database, l'estensione e lo schema dell'applicazione
Per connetterti al database come utente
postgreso come utente con privilegi di super utente AlloyDB, utilizza AlloyDB Studio opsql.psql database -U postgresPer saperne di più, consulta Informazioni sulla gestione degli utenti del database in AlloyDB.
Crea l'estensione
parameterized_viewsnel database.-- Requires parameterized_views.enabled set to true CREATE EXTENSION parameterized_views;Quando viene creata l'estensione, il sistema crea anche uno schema denominato
parameterized_viewsin modo che le API siano contenute nello spazio dei nomi dello schema e non entrino in conflitto con le API esistenti.Crea il ruolo amministrativo di AlloyDB, che possiede e gestisce il database.
CREATE ROLE admin_user WITH LOGIN PASSWORD '...'; GRANT ALL PRIVILEGES ON DATABASE database TO admin_user;Per saperne di più, vedi
CREATE USER.Crea un nuovo ruolo del database per l'esecuzione di query su viste protette parametrizzate. Questo è un ruolo AlloyDB utilizzato dall'applicazione per connettersi e accedere al database per eseguire query con accesso limitato a funzioni o oggetti pubblici al set minimo richiesto.
CREATE ROLE psv_user WITH LOGIN PASSWORD '...';Per saperne di più sulla creazione di utenti PostgreSQL, consulta
CREATE USER.Connettiti come utente amministrativo.
SET role TO admin_user;Crea lo schema che contiene le tabelle.
CREATE SCHEMA schema;Crea le tabelle e inserisci i dati.
CREATE TABLE schema.checked_items(bag_id INT,timestamp TIMESTAMP, loc_code CHAR(3), scan_type CHAR(1), location TEXT, customer_id INT); INSERT INTO schema.checked_items (bag_id, timestamp, loc_code, scan_type, location, customer_id) VALUES (101, '2023-10-26 10:00:00', 'ABC', 'I', 'Warehouse A', 123), (102, '2023-10-26 10:15:30', 'DEF', 'O', 'Loading Dock B', 456), (103, '2023-10-26 10:30:45', 'GHI', 'I', 'Conveyor Belt 1', 789), (104, '2023-10-26 11:00:00', 'JKL', 'O', 'Shipping Area C', 101), (105, '2023-10-26 11:45:15', 'MNO', 'I', 'Sorting Station D', 202), (106, '2023-10-26 12:00:00', 'PQR', 'O', 'Truck Bay E', 303);
Crea viste parametrizzate sicure e configura i privilegi di accesso
Per creare viste parametrizzate sicure e configurare i privilegi di accesso appropriati per la tabella di base e le viste, segui questi passaggi:
Per connetterti al database come
admin_user, utilizza AlloyDB Studio opsql.psql database -U admin_userPer fornire un accesso limitato alla vista, crea una vista protetta parametrizzata:
CREATE VIEW schema.secure_checked_items WITH (security_barrier) AS SELECT bag_id, timestamp, location FROM schema.checked_items t WHERE customer_id = $@app_end_userid;Concedi l'accesso alla vista.
GRANT SELECT ON schema.secure_checked_items TO psv_user;Per accedere alla vista, concedi l'accesso allo schema.
GRANT USAGE ON SCHEMA schema TO psv_user;Revoca l'accesso diretto alla tabella di base.
REVOKE ALL PRIVILEGES ON schema.checked_items FROM psv_user;
Verifica la sicurezza dei dati
Per verificare che le viste sicure parametrizzate limitino l'accesso alle viste designate, esegui i seguenti comandi come psv_user. Si tratta di un ruolo del database AlloyDB utilizzato dall'applicazione per connettersi e accedere al database per eseguire query.
Connettiti come utente di viste sicure con parametri.
psql database -U psv_userVerifica che non sia possibile accedere alla tabella di base:
SELECT * FROM schema.checked_items;L'output è simile al seguente:
ERROR: permission denied for table checked_itemsAccedi alla vista protetta parametrizzata utilizzando la funzione
execute_parameterized_query:SELECT * FROM parameterized_views.execute_parameterized_query( query => 'SELECT * from schema.secure_checked_items', param_names => ARRAY ['app_end_userid'], param_values => ARRAY ['303'] );Per migliorare la sicurezza delle query generate in linguaggio naturale, integra le tue viste sicure parametrizzate utilizzando il linguaggio naturale di AlloyDB AI.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Se vuoi conservare il cluster e rimuovere solo gli oggetti del database che hai creato in questo tutorial, esegui questi comandi:
Per connetterti al database come
postgres, utilizza AlloyDB Studio opsql:psql database -U postgresElimina gli oggetti che hai creato:
DROP VIEW schema.secure_checked_items; DROP TABLE schema.checked_items; DROP SCHEMA schema; DROP ROLE psv_user; DROP ROLE admin_user; DROP EXTENSION parameterized_views;
Per eliminare l'intero cluster AlloyDB e la rete VPC, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Cluster.
Fai clic sul nome del tuo cluster,
my-cluster, nella colonna Nome risorsa.Fai clic su delete Elimina cluster.
In Elimina cluster my-cluster, inserisci
my-clusterper confermare che vuoi eliminare il cluster.Fai clic su Elimina.
Se hai creato una connessione privata quando hai creato un cluster, vai alla pagina Networking della console Google Cloud e fai clic su Elimina rete VPC.
Passaggi successivi
- Scopri di più sulle viste sicure parametrizzate.
- Scopri come gestire la sicurezza dei dati delle applicazioni utilizzando viste sicure parametrizzate.