Las vistas seguras con parámetros en Cloud SQL para PostgreSQL proporcionan seguridad de los datos y control de acceso a las filas para las aplicaciones, al mismo tiempo que admiten SQL. Estas vistas admiten la extracción de valores de datos, el proceso de recuperación de 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 seguras con parámetros 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 consulta y valores para los parámetros con nombre. Las vistas ejecutan la consulta con esos valores, que se usan durante la ejecución de esa consulta.Ejemplo de vista segura con parámetros
A continuación, se muestra un ejemplo de una vista segura con parámetros: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 con parámetros 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 proporcionar seguridad de los datos para 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 con parámetros 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 que se muestran tienen una relación de datos con la fila de la tabla del usuario.
Para obtener más información sobre la configuración de la seguridad y el control de acceso, consulta Usa vistas seguras con parámetros.
Las vistas seguras con parámetros 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 lo siguiente:
- 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 tengan un alcance más amplio de lo que es adecuado por motivos de seguridad de los datos. Este riesgo de seguridad puede exponer datos sensibles en respuesta incluso a consultas de usuarios 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 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, sin importar cómo formulen esas consultas los usuarios.
Por ejemplo, es posible que tengas una aplicación que haga un seguimiento de los pedidos de los clientes. Un agente de asistencia 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 con parámetros con una variable de sesión que se basa en un ID de cliente. La vista segura con parámetros usa una consulta que solo muestra las filas vinculadas al ID de cliente 12345 y a las que se puede acceder.
Si usas vistas seguras con parámetros, puedes restringir el rango de filas disponibles para usuarios individuales de la aplicación. Este control garantiza la seguridad de los datos, sin importar cómo formulen sus consultas los usuarios.
Seguridad de los datos
Las vistas seguras con parámetros 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 cláusula
WITH (security barrier)proporcionan seguridad a nivel de las filas, 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 laWITH (security barrier)cláusula, consulta Reglas y privilegios.
Los parámetros de vista con nombre permiten una vista restringida de la base de datos con parámetros por valores. La aplicación proporciona los valores en función de la seguridad a nivel de la aplicación, como la autenticación del usuario final.
Aplicación de restricciones adicionales en las consultas que acceden a vistas con parámetros que impiden ataques contra la omisión de las verificaciones en las vistas en función de los valores de parámetros dados. Para obtener más información, consulta Restricciones en las consultas.
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 deseas crear vistas seguras con parámetros.Si se hace referencia a una vista con parámetros en una función definida por el usuario a la que se llama con cualquiera de las APIs que se usan en vistas seguras con parámetros, se produce un error. Debes hacer referencia directamente a la vista con parámetros en la consulta superior.
- Existen restricciones cuando consultas vistas seguras con parámetros. Para obtener más información, consulta Restricciones en las consultas.