Se incluyen ejemplos para ilustrar las capacidades de las vistas seguras con parámetros. Estos ejemplos están destinados solo a fines de demostración.
Objetivos
- Crea vistas seguras con parámetros con parámetros de vista con nombre.
- Crea el rol de base de datos que usa la aplicación para conectarse a la base de datos y acceder a las vistas seguras con parámetros.
- Otorga permisos de rol nuevos a las vistas seguras y revoca el acceso a las tablas base.
- Conéctate con el rol nuevo y verifica que no se pueda acceder a las tablas restringidas.
- Ejecuta consultas en la vista segura con parámetros mediante la función
execute_parameterized_query.
Instala una base de datos y conéctate a ella
Prepara el entorno
Para prepararte para ejecutar consultas en una vista segura con parámetros, primero debes configurar las vistas con parámetros, la base de datos y los roles de base de datos, la extensión parameterized_view y el esquema de la aplicación.
Antes de usar vistas seguras con parámetros, debes hacer lo siguiente una vez en
tu entorno de Linux.
Cada configuración se puede aplicar con ALTER SYSTEM o editando postgresql.conf directamente:
- Agrega "parameterized_views" a
shared_preload_libraries. - Para habilitar la función, establece
parameterized_views.enabled=on. - Reinicia postgres para que los cambios surtan efecto.
Configura la base de datos
- Crea una base de datos llamada
databasepara los datos de la aplicación y las vistas con parámetros.
Crea roles de base de datos, la extensión y el esquema de la aplicación
Con psql, conéctate a la base de datos como el usuario
postgreso como un usuario con privilegios de superusuariode AlloyDB Omni./usr/lib/postgresql/18/bin/psql -h localhost -U postgresCrea la extensión
parameterized_viewsen la base de datos.-- Requires parameterized_views.enabled set to true CREATE EXTENSION parameterized_views;Cuando se crea la extensión, el sistema también crea un esquema llamado
parameterized_viewspara que las APIs se incluyan en el espacio de nombres de ese esquema y para que esas APIs no entren en conflicto con las APIs existentes.Crea el rol administrativo de AlloyDB Omni, que posee y administra la base de datos.
CREATE ROLE admin_user WITH LOGIN PASSWORD '...'; GRANT ALL PRIVILEGES ON DATABASE database TO admin_user;Para obtener más información, consulta
CREATE USER.Crea un rol de base de datos nuevo para ejecutar consultas en vistas seguras con parámetros. Este es un rol de AlloyDB Omni que la aplicación usa para conectarse y acceder a la base de datos para ejecutar consultas con acceso limitado a funciones u objetos públicos al conjunto mínimo requerido.
Para obtener más información, consulta
CREATE USER.Conéctate como usuario administrativo.
SET role TO admin_user;Crea el esquema que contiene las tablas.
CREATE SCHEMA schema;Crea las tablas y, luego, inserta datos.
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 vistas seguras con parámetros y configura privilegios de acceso
Para crear vistas seguras con parámetros y configurar los privilegios de acceso adecuados para la tabla y las vistas base, sigue estos pasos:
Con psql, conéctate a la base de datos como
admin_user./usr/lib/postgresql/18/bin/psql -h localhost -U admin_userPara proporcionar acceso limitado a la vista, crea una vista segura con parámetros.
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;Otorga acceso a la vista.
GRANT SELECT ON schema.secure_checked_items TO psv_user;Para acceder a la vista, otorga acceso al esquema.
GRANT USAGE ON SCHEMA schema TO psv_user;Revoca el acceso directo a la tabla base.
REVOKE ALL PRIVILEGES ON schema.checked_items FROM psv_user;
Verifica la seguridad de los datos
Para verificar que las vistas seguras con parámetros restrinjan el acceso a las vistas designadas, ejecuta los siguientes comandos como psv_user. Este es un rol de base de datos de AlloyDB Omni que la aplicación usa para conectarse y acceder a la base de datos para ejecutar consultas.
Conéctate como usuario de vistas seguras con parámetros.
/usr/lib/postgresql/18/bin/psql -h localhost -U psv_userVerifica que no se pueda acceder a la tabla base.
SELECT * FROM schema.checked_items; ERROR: permission denied for table checked_itemsAccede a la vista segura con parámetros mediante la función
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'] );Para mejorar la seguridad de las consultas generadas en lenguaje natural, integra tus vistas seguras con parámetros mediante lenguaje natural.
Limpia
Para liberar espacio, puedes desinstalar la instancia de AlloyDB Omni o conservarla y borrar los objetos individuales.
¿Qué sigue?
- Obtén información sobre las vistas seguras con parámetros.
- Obtén información para administrar la seguridad de los datos de la aplicación con vistas seguras con parámetros vistas.