En esta página, se describen las vistas seguras con parámetros en AlloyDB para PostgreSQL, que proporcionan seguridad de los datos de la aplicación y control de acceso a las filas con vistas de SQL, y ayudan a garantizar que los usuarios de la aplicación solo puedan ver los datos a los que se supone que deben acceder.
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 de vista. Esta capacidad proporciona una interfaz que toma una búsqueda y valores para los parámetros con nombre. La interfaz ejecuta la consulta con esos valores, que se usan durante toda 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 con parámetros utilizando 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.
Beneficios de las vistas seguras parametrizadas
Las vistas seguras con parámetros son adecuadas para administrar la seguridad de los datos a nivel de la base de datos, en especial cuando se trata de 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 bolso?". En este caso, las vistas seguras con parámetros 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 las consultas en lenguaje natural) en tu base de datos. Estos riesgos incluyen los siguientes:
- Mensajes maliciosos: Es posible que los usuarios intenten manipular el modelo subyacente para acceder a todos los datos de la aplicación.
- Consultas de SQL de alcance amplio: Los modelos de lenguaje grandes (LLM) pueden generar consultas de SQL que exponen datos sensibles, incluso a partir de consultas de usuarios bien intencionadas.
Si usas vistas seguras con parámetros, puedes restringir el rango de filas disponibles para los usuarios de aplicaciones individuales. Este control garantiza la seguridad de los datos, independientemente de cómo los usuarios formulen sus preguntas.
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 las aplicaciones en las que cada usuario final solo necesita acceder a sus datos.
Por ejemplo, en una aplicación de aerolíneas en la que los clientes solo deben ver sus propias reservas, puedes definir una sola vista segura con parámetros que se parametriza según 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 forma 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 a nivel de la fila.
Mecanismo de seguridad
Las vistas seguras con parámetros les brindan a los desarrolladores de aplicaciones seguridad de los 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 reciban 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.
- Aplicar restricciones adicionales a 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 del 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 búsquedas.
Limitaciones
Debes habilitar la marca de vista parametrizada por separado en cada instancia de AlloyDB. Los objetos de vista parametrizados creados en la instancia principal se propagan a las instancias del grupo de lectura y a las réplicas entre regiones. Sin embargo, el parámetro de configuración de la marca
parameterized_views.enabled
no se aplica automáticamente y debe establecerse manualmente en cada instancia. Para obtener más información, consulta Antes de comenzar.No puedes consultar vistas parametrizadas en una instancia de grupo de lectura ni en una réplica entre regiones antes de habilitar la marca
parameterized_views.enabled
en 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.