Introducción a la seguridad a nivel de las filas de BigQuery

En esta página, se explica el concepto de seguridad a nivel de las filas, cómo funciona en BigQuery, cuándo usar la seguridad a nivel de las filas para proteger los datos y otros detalles.

¿Qué es la seguridad a nivel de las filas?

La seguridad a nivel de las filas te permite filtrar datos y habilita el acceso a filas específicas en una tabla, según las condiciones de usuario aptas.

BigQuery ya admite controles de acceso a nivel de proyecto, conjunto de datos y tabla, además de seguridad a nivel de la columna mediante etiquetas de política. La seguridad a nivel de las filas extiende el principio de privilegio mínimo mediante la habilitación del control de acceso detallado a un subconjunto de datos en una tabla de BigQuery, por medio de las políticas de acceso a nivel de las filas.

Una tabla puede tener varias políticas de acceso a nivel de las filas. Las políticas de acceso a nivel de las filas pueden coexistir en una tabla con seguridad a nivel de columna y controles de acceso a nivel de las tablas, nivel del conjunto de datos y nivel de proyecto.

Cómo funciona la seguridad a nivel de las filas

En un nivel alto, la seguridad a nivel de las filas implica la creación de políticas de acceso a nivel de las filas en una tabla de BigQuery de destino. Esta política actúa como un filtro para ocultar o mostrar ciertas filas de datos, según si un usuario o un grupo está en una lista permitida.

Un usuario autorizado, con las funciones de administración de identidades y accesos (IAM), Administrador de BigQuery o Propietario de datos de BigQuery, puede crear políticas de acceso a nivel de las filas en una tabla de BigQuery.

Cuando creas una política de acceso a nivel de las filas, especificas la tabla por nombre y qué usuarios o grupos (llamados grantee-list) deben tener acceso a ciertos datos de fila. La política también incluye los datos en los que deseas filtrar, llamados filter_expression. La filter_expression funciona como una cláusula WHERE en una consulta típica.

Si deseas obtener instrucciones para crear y usar una política de acceso a nivel de las filas, consulta Trabaja con la seguridad a nivel de las filas.

Consulta la referencia de DDL para conocer la sintaxis, el uso y las opciones completas cuando se crean políticas de acceso a nivel de las filas.

Casos de uso de ejemplo

Filtra datos de las filas según la región

Considera el caso en el que una tabla contiene filas que pertenecen a diferentes regiones, indicada por la columna region en la tabla dataset1.table1.

La seguridad a nivel de fila permite a un propietario o administrador de datos implementar políticas, como “Los usuarios del group:apac solo pueden ver los socios de la región de APAC”.

Caso de uso de seguridad a nivel de las filas para las regiones

El comportamiento resultante es que los usuarios en el grupo sales-apac@example.com solo pueden ver filas en las que Region = "APAC". Del mismo modo, los usuarios del grupo sales-us@example.com solo pueden ver las filas en la región US. Los usuarios que no estén en grupos de APAC o US no verán ninguna fila.

Ten en cuenta que la política de acceso a nivel de la fila denominada us_filter otorga acceso a varias entidades, incluido el vendedor principal de EE.UU. jon@example.com, todos los usuarios a los que ahora pueden acceder las filas que pertenecen a la región US.

Filtra datos de las filas según los datos sensibles

Ahora, veamos otro caso de uso, donde tenemos una tabla de datos salariales.

Caso de uso de seguridad a nivel de las filas para los salarios

grantee_list restringe las consultas a los miembros del dominio de la empresa. Además, el uso de la función SESSION_USER() restringe aún más el acceso solo a las filas que pertenecen al usuario que ejecuta la consulta, según su propia dirección de correo electrónico. En este caso, es jim@example.com.

Cuándo usar la seguridad a nivel de las filas y otros métodos

Las vistas autorizadas, las políticas de acceso a nivel de las filas y el almacenamiento de datos en tablas separadas proporcionan diferentes niveles de seguridad, rendimiento y conveniencia. Elegir el mecanismo adecuado para tu caso de uso es importante a fin de garantizar el nivel adecuado de seguridad de tus datos.

Comparación con las vistas autorizadas: vulnerabilidades

La seguridad a nivel de las filas y la aplicación forzosa del acceso a nivel de las filas con una vista autorizada pueden tener vulnerabilidades si se usan de forma inadecuada.

Cuando usas las vistas autorizadas o las políticas de acceso a nivel de las filas para la seguridad a nivel de las filas, te recomendamos supervisar cualquier actividad sospechosa mediante el registro de auditoría.

  • Las consultas cuidadosas pueden filtrar información a través de mensajes de error. Por ejemplo, una consulta creada para activar una división por cero en un valor específico podría revelar la presencia de ese valor, incluso cuando la definición de la vista lo excluiría.

  • Otros canales laterales, como la duración de la consulta, pueden filtrar información sobre las filas que se encuentran en el perímetro de un fragmento de almacenamiento. Es probable que estos ataques requieran información sobre cómo la tabla está fragmentada o una gran cantidad de consultas.

Si deseas obtener más información para evitar esos ataques de canal lateral, consulta Limitaciones de seguridad y Prácticas recomendadas para la seguridad a nivel de las filas en BigQuery.

Comparación de las vistas autorizadas, la seguridad a nivel de las filas y las tablas separadas

En la siguiente tabla, se compara el rendimiento y la seguridad de las vistas autorizadas, las políticas de acceso a nivel de las filas y las tablas separadas.

Seguridad Recomendado para
Visitas
autorizadas
Vulnerable a consultas hechas con cuidado, la duración de las consultas y otros tipos de ataques de canal lateral. Cuando la flexibilidad y el rendimiento sean más importantes

Ejemplo: compartir datos dentro del mismo grupo de trabajo.
Políticas de acceso a nivel de las filas Vulnerable a las consultas creadas con cuidado y a los ataques de canal lateral de duración de las consultas. Cuando sea conveniente que todos los usuarios consulten la misma tabla Por ejemplo, cuando todos comparten el mismo panel, pero algunos usuarios tienen acceso a más datos.

Para proporcionar seguridad adicional a las vistas.

Ejemplo: compartir porciones de una tabla dentro de tu organización.
Tablas separadas Aislamiento completo. Cuando el aislamiento es primordial. Por ejemplo, cuando la cantidad total de filas debe ser secreta.

Ejemplo: uso compartido de datos fuera de la organización, como con socios y proveedores externos.

Crea y administra políticas de acceso a nivel de las filas

Para obtener más información sobre cómo crear, actualizar (volver a crear), enumerar, ver, y borrar políticas de acceso a nivel de las filas en una tabla, así como detalles sobre cómo consultar tablas con políticas de acceso a nivel de las filas, consulta Trabaja con la seguridad de acceso a nivel de las filas.

Cuotas

Para obtener más información sobre las cuotas y los límites de seguridad a nivel de las filas, consulta Cuotas y límites de BigQuery.

Precios

La seguridad a nivel de las filas se incluye en BigQuery sin costo.

Los costos de facturación para acceder a la política de acceso a nivel de las filas de una tabla son similares a una consulta. Sin embargo, las políticas de acceso a nivel de las filas pueden afectar de forma indirecta la cantidad de bytes procesados, de las siguientes maneras.

  • Cuando se ejecuta una consulta en una tabla con una política de acceso a nivel de fila, los bytes facturados se calculan de la misma manera que si compusieras una consulta idéntica con una cláusula WHERE, en lugar de filtro.
  • Los filtros de políticas de acceso a nivel de las filas no participan en la reducción de tablas particionadas y agrupadas en clústeres.

Si deseas obtener más información sobre los precios de las consultas de BigQuery, consulta Precios de BigQuery.

Limitaciones

La seguridad a nivel de las filas está sujeta a las siguientes limitaciones.

Limitaciones de rendimiento

Para obtener más información sobre cómo interactúa la seguridad a nivel de las filas con algunas funciones y servicios de BigQuery, consulta Usa la seguridad a nivel de las filas con otras funciones de BigQuery.

Limitaciones de seguridad

Ejemplo

Supongamos que tienes una tabla con información de ingresos. Proteges estos datos sensibles con una política de acceso a nivel de las filas para filtrar filas según la unidad de negocios. Aunque existe un predicado de filtro de seguridad que evita que un usuario con acceso a esta tabla consulte directamente las filas protegidas, es posible que ese usuario derive la información de ingresos para otras unidades de negocios, mediante consultas repetidas y hechas con cuidado, y la observación de los mensajes de error de las consultas resultantes.

  • En particular, un usuario malicioso con acceso a la tabla subyacente puede derivar los valores de fila protegidos cuando la consulta muestra una excepción dividida por cero.
  • Una excepción de división por cero arroja como resultado una consulta, como la siguiente: SELECT * FROM dataset.table WHERE 1/(100000-revenue) = 1. El resultado podría permitir que el usuario malicioso descubra que existen los ingresos de $100,000 en la tabla.
  • Este tipo de ataque a menudo requiere una gran cantidad de intentos repetidos en una tabla con seguridad a nivel de las filas. Recomendamos que los administradores supervisen los registros de auditoría de Cloud para detectar actividad sospechosa en tablas con seguridad a nivel de las filas.

Para obtener más información sobre cómo limitar los ataques de canal lateral, consulta Prácticas recomendadas para la seguridad a nivel de las filas en BigQuery.

Otras limitaciones

  • Las políticas de acceso de fila no son compatibles con SQL heredado. Las consultas de tablas con políticas de acceso a nivel de las filas deben usar SQL estándar. Las consultas de SQL heredado se rechazan con un error.

  • Algunas funciones de BigQuery no son compatibles con la seguridad a nivel de las filas. Consulta Usa seguridad a nivel de las filas para obtener más información.

  • Las operaciones que no son de consulta, incluidos los trabajos de cuentas de servicio, que necesitan acceso completo a los datos de la tabla, pueden usar la seguridad a nivel de fila con el “true filter” (filtro verdadero). En los ejemplos, se incluyen copia de tablas, flujos de trabajo de Dataproc y mucho más. Para obtener más información, consulta Usa seguridad a nivel de las filas.

  • La creación, el reemplazo o la eliminación de políticas de acceso a nivel de las filas deben realizarse con declaraciones DDL. Las listas y la visualización de las políticas de acceso a nivel de las filas se pueden realizar a través de Cloud Console o la herramienta de línea de comandos de bq.

Registros y supervisión de auditoría

Cuando se leen los datos de una tabla con una o más políticas de acceso a nivel de las filas, las políticas de acceso a nivel de las filas autorizadas para el acceso de lectura aparecen en la información de autorización de IAM de esa solicitud de lectura.

La creación y la eliminación de las políticas de acceso a nivel de las filas se registran, y se puede acceder a ellas a través de Cloud Logging. Los registros de auditoría incluyen el nombre de la política de acceso a nivel de las filas. Sin embargo, las definiciones filter_expression y grantee_list de una política de acceso a nivel de las filas se omiten en los registros, ya que pueden contener información del usuario o cualquier otra información sensible. Las listas y la visualización de las políticas de acceso a nivel de las filas no se registran en la auditoría.

Para obtener más información sobre el registro en BigQuery, consulta Introducción a la supervisión de BigQuery.

Para obtener más información sobre el acceso en Google Cloud, consulta Cloud Logging.

¿Qué sigue?