En este documento, se describen las vistas seguras parametrizadas en AlloyDB para PostgreSQL, que brindan seguridad de los datos de la aplicación y control de acceso a nivel de las filas, a la vez que admiten SQL. Estas vistas admiten la extracción de valores de datos, que es el proceso de recuperar fragmentos de datos específicos de las columnas, y ayudan a proteger contra los ataques de inyección de instrucciones. Las vistas seguras con parámetros ayudan a garantizar que los usuarios finales solo puedan ver los datos a los que se supone que deben acceder.
Las vistas parametrizadas son una extensión de las vistas 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. Las vistas ejecutan la consulta con esos valores, que se usan durante toda la ejecución de esa 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 las vistas con el procedimiento almacenado execute_parameterized_query
o ejecutando la instrucción EXECUTE .. WITH VIEW PARAMETERS
.
Casos de uso
Las vistas seguras parametrizadas son adecuadas para la administración de la seguridad de los datos a nivel de la base de datos contra consultas ad hoc de fuentes no confiables, como las consultas traducidas de consultas en lenguaje natural. Por ejemplo, considera una aplicación cuya base de datos hace un seguimiento del equipaje facturado de los clientes que viajan. Estos clientes pueden enviar consultas a la aplicación. Por ejemplo, un cliente con el ID de usuario de la aplicación 12345 puede ingresar una consulta en la aplicación, como "¿Dónde está mi bolso?".
Puedes usar vistas seguras con parámetros para aplicar los siguientes requisitos a la forma en que AlloyDB ejecuta esta consulta:
- La consulta solo puede leer los objetos y las columnas de la base de datos que enumeraste en tus vistas seguras parametrizadas de la base de datos.
- La consulta solo puede leer las filas de la base de datos que están asociadas con el usuario que envió la consulta. Las filas devueltas tienen una relación de datos con la fila de la tabla del usuario cuyo valor de la columna de ID es
12345
.
Para obtener más información sobre cómo configurar la seguridad y el control de acceso, consulta Protege y controla el acceso a los datos de la aplicación con vistas seguras parametrizadas.
Las vistas seguras parametrizadas ayudan a mitigar los riesgos de seguridad que se producen cuando se permite a los usuarios finales ejecutar consultas no confiables, como consultas en lenguaje natural, en la tabla de la base de datos. Los riesgos de seguridad incluyen los siguientes:
- Los usuarios pueden enviar ataques de inyección de instrucciones y tratar de manipular el modelo subyacente para revelar todos los datos a los que tiene acceso la aplicación.
- Es posible que el LLM genere consultas en SQL que sean más amplias de lo que corresponde por motivos de seguridad de los datos. Este riesgo de seguridad puede exponer datos sensibles en respuesta a consultas de usuarios incluso bien intencionadas.
Con las vistas seguras con parámetros, puedes definir las tablas y las columnas de las que las consultas no confiables pueden extraer datos. Estas vistas te permiten restringir el rango de filas disponibles para un usuario de la aplicación individual. Estas restricciones también te permiten controlar de forma estricta los datos que los usuarios de la aplicación pueden ver a través de consultas en lenguaje natural, independientemente de cómo los usuarios formulen esas consultas.
Mecanismo de seguridad
Las vistas seguras parametrizadas brindan a los desarrolladores de aplicaciones seguridad de los datos y control de acceso a nivel de las filas con los siguientes métodos:
- Las vistas creadas con la opción
WITH (security barrier)
proporcionan seguridad a nivel de las filas, ya que evitan que se pasen valores de las filas a funciones y operadores elegidos de forma maliciosa 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.
- Se aplican restricciones adicionales a las consultas que acceden a vistas con parámetros, lo que evita ataques para eludir las verificaciones en las vistas según los valores de parámetros proporcionados. Para obtener más información, consulta Restricciones aplicadas en las búsquedas.
Limitaciones
Si se hace referencia a una vista parametrizada en una función definida por el usuario a la que se llama con cualquiera de las APIs que se usan en las vistas seguras parametrizadas, se produce un error. Debes hacer referencia directamente a la vista con parámetros en la consulta principal.
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 réplicas de solo lectura y a las réplicas entre regiones. Sin embargo, el parámetro de configuración de la marca
parameterized_views.enabled
no se replica automáticamente y debe replicarse manualmente en cada instancia. Para obtener más información, consulta Antes de comenzar. No puedes consultar vistas parametrizadas en la réplica antes de habilitar la marcaparameterized_views.enabled
en cada instancia de réplica. Esta limitación no se aplica a la instancia en espera.
¿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.