En esta página se describen las vistas seguras parametrizadas de AlloyDB para PostgreSQL, que proporcionan seguridad de los datos de las aplicaciones y control de acceso a las filas mediante vistas SQL, y ayudan a garantizar que los usuarios de las aplicaciones solo puedan ver los datos a los que tienen acceso.
Las vistas seguras parametrizadas son una extensión de las vistas seguras de PostgreSQL, que te permiten usar parámetros de vista con nombre específicos de la aplicación en las definiciones de vista. Esta función proporciona una interfaz que toma una consulta y los valores de los parámetros con nombre. La interfaz ejecuta la consulta con esos valores, que se utilizan durante toda la ejecución de la consulta.
A continuación, se muestra 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;
Puede consultar vistas seguras con parámetros mediante el procedimiento almacenado execute_parameterized_query
o ejecutando la instrucción EXECUTE .. WITH VIEW PARAMETERS
.
Para obtener más información, consulta Gestionar la seguridad de los datos de las aplicaciones con vistas seguras parametrizadas de AlloyDB.
Ventajas de las vistas seguras parametrizadas
Las vistas seguras parametrizadas son adecuadas para gestionar la seguridad de los datos a nivel de base de datos, sobre todo cuando se trata de consultas ad hoc de fuentes no fiables, como las que se traducen del lenguaje natural. Estas vistas ofrecen una forma flexible de implementar un control de acceso pormenorizado.
Por ejemplo, supongamos que tienes una aplicación que monitoriza el equipaje facturado de los clientes. Un cliente con el ID de usuario 12345 pregunta: "¿Dónde está mi bolso?" En este caso, las vistas seguras parametrizadas garantizan lo siguiente:
La consulta solo devuelve las filas a las que puede acceder el usuario que la ha enviado (por ejemplo, las filas vinculadas al ID de usuario 12345).
Mitigación de riesgos de seguridad
Las vistas seguras parametrizadas ayudan a mitigar los riesgos de seguridad cuando los usuarios finales ejecutan consultas no fiables (como consultas en lenguaje natural) en tu base de datos. Entre estos riesgos se incluyen los siguientes:
- Peticiones maliciosas: los usuarios pueden intentar manipular el modelo subyacente para acceder a todos los datos de la aplicación.
- Consultas de SQL de ámbito amplio: los modelos de lenguaje extensos (LLMs) pueden generar consultas de SQL que expongan datos sensibles, incluso a partir de consultas de usuarios bienintencionados.
Si usas vistas seguras parametrizadas, puedes restringir el intervalo de filas disponibles para usuarios concretos de la aplicación. Este control garantiza la seguridad de los datos, independientemente de cómo formulen los usuarios sus consultas.
Gestión del acceso a datos
Las vistas seguras parametrizadas resuelven los problemas habituales que surgen al gestionar el acceso a los datos de un número de usuarios cada vez mayor.
Gestión de usuarios simplificada: con las vistas seguras parametrizadas, puede usar un solo rol de base de datos para todos los usuarios finales, en lugar de usar métodos que pueden requerir que cree un usuario o un rol de base de datos independiente para cada usuario final. Las vistas seguras parametrizadas ayudan a simplificar la gestión de usuarios y conexiones en aplicaciones en las que cada usuario final solo necesita acceder a sus datos.
Por ejemplo, en una aplicación de una aerolínea en la que los clientes solo deberían ver sus propias reservas, puede 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) sirva a todos los usuarios, lo que simplifica la gestión de usuarios y las conexiones de bases de datos.
Implementación de seguridad optimizada: las vistas seguras parametrizadas incorporan controles de acceso de forma inherente. Cuando se consulta una vista, los parámetros de seguridad definidos se aplican de forma coherente, independientemente del usuario que acceda a la vista. Este enfoque contrasta con las situaciones en las que las políticas de seguridad subyacentes de las tablas base no se aplican automáticamente a las vistas sin configuración adicional.
Para obtener más información sobre los mecanismos de seguridad de PostgreSQL, como las políticas de seguridad a nivel de fila, consulta Políticas de seguridad de filas.
Mecanismo de seguridad
Las vistas seguras parametrizadas ofrecen a los desarrolladores de aplicaciones seguridad de los datos y control de acceso a las filas mediante los siguientes métodos:
- Las vistas creadas con la opción
WITH (security barrier)
proporcionan seguridad a nivel de fila, ya que impiden que se pasen valores de filas a funciones y operadores elegidos de forma malintencionada hasta que la vista haya terminado su trabajo. Para obtener más información sobre la cláusulaWITH (security barrier)
, consulta Reglas y privilegios. - La parametrización mediante parámetros de vista con nombre permite una vista restringida de la base de datos parametrizada por los valores proporcionados por la aplicación en función de la seguridad a nivel de aplicación, como la autenticación de usuarios finales.
- Aplicar restricciones adicionales a las consultas que acceden a vistas parametrizadas es útil para las aplicaciones que ejecutan consultas no fiables de usuarios finales, como las que genera una IA que traduce lenguaje natural a SQL. De esta forma, se evita que se salga del envoltorio de seguridad proporcionado por las vistas seguras parametrizadas y se gestiona el uso de los recursos. Para obtener más información, consulta Restricciones obligatorias en las consultas.
Limitaciones
Debes habilitar la marca de vista parametrizada por separado en cada instancia de AlloyDB. Los objetos de vista parametrizados creados en la instancia principal se propagan a las instancias de grupo de lectura y a las réplicas interregionales. Sin embargo, el ajuste de la marca
parameterized_views.enabled
no se aplica automáticamente y debe configurarse manualmente en cada instancia. Para obtener más información, consulta la sección Antes de empezar.No puedes consultar vistas parametrizadas en una instancia de grupo de lectura ni en una réplica entre regiones antes de habilitar la marca
parameterized_views.enabled
en cada instancia.
Siguientes pasos
- Gestionar la seguridad de los datos de las aplicaciones mediante vistas seguras parametrizadas.
- Protege y controla el acceso a los datos de las aplicaciones mediante vistas seguras parametrizadas.