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 las filas, a la vez que admiten SQL. Estas vistas admiten la extracción de valores de datos, el proceso de recuperar datos específicos de las columnas, y ayudan a proteger contra ataques de inyección de instrucciones. Las vistas seguras parametrizadas 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 nombrados específicos de la aplicación en las definiciones de vista. Esta función proporciona una interfaz que toma una consulta y valores para los parámetros nombrados. Las vistas ejecutan la consulta con esos valores, que se usan durante la ejecución de esa consulta.
El siguiente es 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 sentencia 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 realiza un seguimiento del equipaje facturado de los clientes que viajan. Estos clientes pueden realizar 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 bolsa?".
Puedes usar vistas seguras parametrizadas para aplicar los siguientes requisitos a la manera en que AlloyDB ejecuta esta consulta:
- La consulta solo puede leer los objetos y las columnas de la base de datos que enumeraste en las vistas seguras parametrizadas de tu base de datos.
- La consulta solo puede leer las filas de la base de datos asociadas con el usuario que envió la consulta. Las filas que se muestran tienen una relación de datos con la fila de la tabla del usuario cuyo valor de la columna ID es
12345
.
Para obtener más información sobre cómo configurar la seguridad y el control de acceso, consulta Cómo proteger y controlar 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 a los usuarios finales se les permite ejecutar consultas no confiables, como las de lenguaje natural, en la tabla de la base de datos. Entre los riesgos de seguridad, se incluyen los siguientes:
- Los usuarios pueden enviar ataques de inserción de instrucciones y tratar de manipular el modelo subyacente para revelar todos los datos a los que tiene acceso la aplicación.
- El LLM podría generar consultas de SQL que tengan un alcance más amplio de lo que es apropiado por motivos de seguridad de los datos. Este riesgo de seguridad puede exponer datos sensibles en respuesta a consultas de usuarios con buenas intenciones.
Con las vistas seguras parametrizadas, puedes definir las tablas y columnas de las que pueden extraer datos las consultas no confiables. Estas vistas te permiten restringir el rango de filas disponibles para un usuario individual de la aplicación. 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 formulen esas consultas.
Mecanismo de seguridad
Las vistas seguras parametrizadas 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 las filas, ya que impiden que se pasen valores de filas a funciones y operadores elegidos de forma maliciosa hasta que la vista haya hecho 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 nombrados permite una vista restringida de la base de datos parametrizada por valores que proporciona la aplicación según la seguridad a nivel de la aplicación, como la autenticación del usuario final. Para obtener más información, consulta
- Aplicación de restricciones adicionales en las consultas que acceden a vistas parametrizadas que evita ataques contra la evasión de las verificaciones en las vistas según los valores de parámetros determinados. Para obtener más información, consulta Restricciones aplicadas a las consultas.
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 vistas seguras parametrizadas, se produce un error. Debes hacer referencia directamente a la vista parametrizada en la consulta superior.
Debes habilitar la marca de vista parametrizada por separado en cada instancia de AlloyDB. Los objetos de vista parametrizados que se crean en la instancia principal se propagan a las réplicas de solo lectura y a las réplicas entre regiones. Sin embargo, la configuración de la marca
parameterized_views.enabled
no se replica automáticamente y se debe replicar de forma manual 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.