Las vistas seguras parametrizadas son una extensión de las vistas seguras de PostgreSQL, que te permiten usar parámetros de vista con nombre específicos de la aplicación en las definiciones. Esta capacidad proporciona una interfaz que toma una consulta y valores para los parámetros con nombre. La interfaz ejecuta la consulta con esos valores, que se usan durante la ejecución de la consulta.
A continuación, se muestra un ejemplo de una vista segura parametrizada:
CREATE VIEW secure_checked_items WITH (security_barrier) AS
SELECT bag_id, timestamp, location
FROM checked_items t
WHERE customer_id = $@app_end_userid;
Puedes consultar vistas seguras parametrizadas con el procedimiento almacenado execute_parameterized_query o ejecutando la instrucción EXECUTE .. WITH VIEW PARAMETERS.
Para obtener más información, consulta Administra la seguridad de los datos de la aplicación con
vistas seguras parametrizadas de AlloyDB Omni.
Beneficios de las vistas seguras parametrizadas
Las vistas seguras parametrizadas son adecuadas para administrar la seguridad de los datos a nivel de la base de datos, en especial cuando trabajas con consultas ad hoc de fuentes no confiables, como las que se traducen del lenguaje natural. Estas vistas ofrecen una forma flexible de implementar el control de acceso detallado.
Por ejemplo, considera una aplicación que hace un seguimiento del equipaje facturado de los clientes. Un cliente con el ID de usuario 12345 pregunta: "¿Dónde está mi maleta?". En este caso, las vistas seguras parametrizadas garantizan lo siguiente:
La consulta solo devuelve las filas a las que puede acceder el usuario que la envió, por ejemplo, las filas vinculadas al ID de usuario 12345.
Mitigación de riesgos de seguridad
Las vistas seguras parametrizadas ayudan a mitigar los riesgos de seguridad cuando los usuarios finales ejecutan consultas no confiables, como consultas en lenguaje natural, en tu base de datos. Estos riesgos incluyen los siguientes:
- Instrucciones maliciosas: Los usuarios pueden intentar manipular el modelo subyacente para acceder a todos los datos de la aplicación.
- Consultas de SQL de alcance amplio: Los modelos de lenguaje grande (LLM) pueden generar consultas de SQL que expongan datos sensibles, incluso a partir de consultas de usuarios bien intencionadas.
Si usas vistas seguras parametrizadas, puedes restringir el rango de filas disponibles para los usuarios individuales de la aplicación. Este control garantiza la seguridad de los datos, independientemente de cómo los usuarios formulen sus consultas.
Administración de acceso a los datos
Las vistas seguras parametrizadas abordan los desafíos comunes en la administración del acceso a los datos para una cantidad grande y creciente de usuarios.
- Administración de usuarios simplificada: Con las vistas seguras parametrizadas, puedes usar un solo rol de base de datos para atender a todos los usuarios finales, en lugar de usar métodos que podrían requerir que crees un usuario o rol de base de datos independiente para cada usuario final. Las vistas seguras parametrizadas ayudan a simplificar la administración de usuarios y conexiones para aplicaciones en las que cada usuario final solo necesita acceder a sus datos. Por ejemplo, en una aplicación de aerolínea en la que los clientes solo deben ver sus propias reservas, puedes definir una sola vista segura parametrizada que esté parametrizada por el identificador del usuario final. Esta vista permite que un solo rol de base de datos (con acceso a la vista, no a la tabla subyacente) atienda a todos los usuarios, lo que simplifica la administración de usuarios y las conexiones de bases de datos.
- Aplicación de seguridad optimizada: Las vistas seguras parametrizadas incorporan controles de acceso de forma inherente. Cuando se consulta una vista, los parámetros de seguridad definidos se aplican de manera coherente, independientemente del usuario que acceda a la vista. Este enfoque contrasta con las situaciones en las que las políticas de seguridad subyacentes en las tablas base podrían no aplicarse automáticamente a las vistas sin configuración adicional.
Para obtener más información sobre los mecanismos de seguridad existentes en PostgreSQL, como las políticas de seguridad a nivel de la fila (RLS), consulta Políticas de seguridad de filas.
Mecanismo de seguridad
Las vistas seguras parametrizadas agregan una capa adicional de seguridad, ya que controlan cómo las consultas acceden a los datos subyacentes. Les brindan a los desarrolladores de aplicaciones seguridad de datos y control de acceso a las filas con los siguientes métodos:
- Las vistas creadas con la opción
WITH (security barrier)proporcionan seguridad a nivel de la fila, ya que evitan que las funciones y los operadores elegidos de forma maliciosa pasen valores de las filas hasta que la vista haya terminado su trabajo. Para obtener más información sobre la cláusulaWITH (security barrier), consulta Reglas y privilegios. - La parametrización con parámetros de vista con nombre permite una vista restringida de la base de datos parametrizada por valores proporcionados por la aplicación en función de la seguridad a nivel de la aplicación, como la autenticación del usuario final.
- La aplicación de restricciones adicionales en las consultas que acceden a vistas parametrizadas es útil para las aplicaciones que ejecutan consultas no confiables de usuarios finales, como las que genera una IA de lenguaje natural a SQL. Esto evita que se escape el sobre de seguridad que proporcionan las vistas seguras parametrizadas y que se administre el uso de recursos. Para obtener más información, consulta Restricciones aplicadas en las consultas.
Limitaciones
- Debes habilitar la marca de vista parametrizada por separado en cada instancia de AlloyDB Omni. Los objetos de vista parametrizada creados en la instancia principal se propagan a las instancias del grupo de lectura y a las réplicas entre regiones.
Sin embargo, la configuración de la marca
parameterized_views.enabledno se aplica automáticamente y debe configurarse de forma manual en cada instancia. Para obtener más información, consulta Antes de comenzar. No puedes consultar vistas parametrizadas en una instancia del grupo de lectura ni en una réplica entre regiones antes de habilitar la marcaparameterized_views.enableden cada instancia.
¿Qué sigue?
- Administra la seguridad de los datos de la aplicación con vistas seguras parametrizadas.
- Protege y controla el acceso a los datos de la aplicación con vistas seguras parametrizadas.