Las vistas seguras parametrizadas en Cloud SQL para PostgreSQL proporcionan seguridad de los datos y control de acceso a nivel de las filas para las aplicaciones, 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 parametrizadas ayudan a garantizar que los usuarios finales solo puedan ver los datos a los que se supone que deben acceder.
Las vistas seguras 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.Ejemplo de vista segura parametrizada
A continuación, se muestra un ejemplo de una vista segura parametrizada:CREATE VIEW user_specific_items WITH (security_barrier) AS
SELECT item_id, item_name, description
FROM items t
WHERE owner_id = $@app_user_id;
Puedes consultar las vistas con la función execute_parameterized_query o ejecutando la instrucción EXECUTE .. WITH VIEW PARAMETERS.
Casos de uso
Los modelos de lenguaje grandes (LLM) pueden generar consultas en SQL que expongan datos sensibles.
Las vistas seguras parametrizadas administran la seguridad de los datos a nivel de la base de datos, en especial las consultas ad hoc de fuentes no confiables, como las que se traducen del lenguaje natural. Por ejemplo, puedes usar vistas seguras con parámetros para brindar seguridad de los datos a las aplicaciones en las que los usuarios pueden emitir consultas en lenguaje natural, como "Mostrar mis pedidos".
Puedes usar vistas seguras con parámetros para aplicar los siguientes requisitos a la forma en que Cloud SQL para PostgreSQL ejecuta esta consulta:
- La consulta solo lee 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 lee 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.
Para obtener más información sobre cómo configurar la seguridad y el control de acceso, consulta Usa vistas seguras con parámetros.
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.
- El modelo de lenguaje natural a SQL (NL2SQL) puede generar consultas en SQL que son más amplias en alcance 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 incluso bien intencionadas.
Con las vistas seguras parametrizadas, 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.
Por ejemplo, podrías tener una aplicación que haga un seguimiento de los pedidos de los clientes. Un agente de asistencia al cliente pregunta en la aplicación: "¿Cuál es el estado del pedido del cliente 12345?". En este caso, la aplicación puede usar una vista segura parametrizada con una variable de sesión basada en un ID de cliente. La vista segura parametrizada usa una consulta que solo devuelve las filas vinculadas al ID de cliente 12345 y a las que se puede acceder con ese ID.
Con las 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 preguntas.
Seguridad de los datos
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 cláusula
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.
Los parámetros de vista con nombre permiten una vista restringida de la base de datos parametrizada por valores. La aplicación proporciona los valores según 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 en las búsquedas.
Limitaciones
Para usar vistas seguras con parámetros, debes habilitar la marca de base de datos
cloudsql.enable_parameterized_viewspara tu instancia de Cloud SQL, lo que requiere un reinicio de la base de datos.La extensión
parameterized_viewsse debe crear en cada base de datos en la que pretendas crear vistas seguras con parámetros.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 parametrizada en la consulta principal.
- Existen restricciones cuando consultas vistas seguras con parámetros. Para obtener más información, consulta Restricciones en las búsquedas.