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

En este documento, se explica el concepto de seguridad a nivel de fila, cómo funciona en BigQuery, cuándo usar la seguridad a nivel de fila 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. Estas políticas actúan como filtros para ocultar o mostrar ciertas filas de datos, según si un usuario o 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 fila, especificas la tabla por nombre y qué usuarios o grupos (lo que se denomina grantee-list) pueden acceder 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 dataset1.table1 contiene filas que pertenecen a diferentes regiones (denotadas por la columna region).

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.

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.

Canales secundarios, 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 quieres obtener más información para evitar esos ataques en el canal secundario, consulta Prácticas recomendadas para la seguridad a nivel de fila.

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
Vistas
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 fila

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

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

Para obtener información sobre los límites de seguridad a nivel de la fila, consulta Límites de seguridad a nivel de la fila de BigQuery. En las siguientes secciones, se documentan las limitaciones de seguridad adicionales a nivel de las filas.

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

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

  • Una tabla puede tener hasta 100 políticas de acceso de fila.

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

  • No puedes aplicar políticas de acceso a nivel de fila en las columnas JSON.

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

  • Las operaciones que no son de consulta, incluidos los trabajos de cuentas de servicio, que necesitan acceso completo a los datos de las tablas pueden usar la seguridad a nivel de fila con el filtro TRUE. 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 la seguridad a nivel de fila.

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

  • El muestreo de tablas no es compatible con la seguridad a nivel de fila.

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?