Las vistas seguras con parámetros en Cloud SQL para MySQL 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 MySQL, 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
En el siguiente ejemplo, se muestra cómo crear una vista segura con parámetros en una tabla agregando una variable de sesión a la cláusulaWHERE.
-- Create a view with a parameter
CREATE VIEW v_orders AS
SELECT * FROM orders
WHERE customer_id = @local_customer_id AND year >= @earliest_year;
Luego, puedes establecer el parámetro para la vista y ejecutar una consulta.
-- Set the parameter and query
SELECT /*+ SET_VIEW_VARS(local_customer_id=5, earliest_year=2021) */ * FROM v_orders;
-- Or query through a stored procedure
CALL mysql.execute_parameterized_query(
'SELECT * FROM db.v_orders',
'local_customer_id = 5, earliest_year = 2021');
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 MySQL 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 seguras con parámetros de MySQL proporcionan seguridad a nivel de las filas, ya que impiden que se pasen valores de las filas a funciones y operadores elegidos de forma maliciosa hasta que la vista haya completado su trabajo.
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.
Simplifica la administración de usuarios
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. Esto ayuda a simplificar la administración de usuarios y conexiones para las aplicaciones en las que cada usuario final solo necesita acceso a sus datos.
Por ejemplo, en una aplicación en la que un usuario solo debería ver los pedidos de un cliente específico, puedes definir una sola vista segura parametrizada por 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.
Limitaciones
Las vistas seguras con parámetros solo son compatibles con Cloud SQL para MySQL 8.0.43 y versiones posteriores. Si intentas crear una vista segura parametrizada en una versión anterior de MySQL, Cloud SQL mostrará un error.
No puedes especificar variables fuera de las cláusulas
WHERE,HAVINGoON.No puedes usar
EXPLAINen una vista segura parametrizada.
- Existen restricciones cuando consultas vistas seguras con parámetros. Para obtener más información, consulta Restricciones en las búsquedas.