Vistas seguras con parámetros en Cloud SQL

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 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.

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

Las vistas seguras con parámetros proporcionan 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, 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 cómo configurar la seguridad y el control de acceso, consulta Administra la seguridad de los datos de la aplicación con 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 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 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 estrictamente 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.

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 WITH (security barrier) cláusula proporcionan seguridad a nivel de las filas, ya que impiden 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 la WITH (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 proporcionados. Para obtener más información, consulta Restricciones aplicadas en las consultas.

Limitaciones

  • Para usar vistas seguras con parámetros, debes habilitar la marca de base de datos cloudsql.enable_parameterized_views para tu instancia de Cloud SQL, lo que requiere un reinicio de la base de datos.

  • La extensión parameterized_views se 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 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.

¿Qué sigue?