Introducción a la seguridad a nivel de la columna de BigQuery

BigQuery proporciona un acceso detallado a columnas sensibles mediante etiquetas de política, o clasificación basada en tipos de datos. Con la seguridad a nivel de la columna de BigQuery, puedes crear políticas que verifiquen, en el momento de la consulta, si un usuario tiene acceso adecuado. Por ejemplo, una política puede aplicar verificaciones de acceso, como las siguientes:

  • Debes estar en group:high-access para ver las columnas que contienen TYPE_SSN.

Flujo de trabajo de seguridad a nivel de la columna

Flujo de trabajo

Para restringir el acceso a los datos a nivel de la columna, debes realizar las siguientes acciones:

  1. Define una taxonomía y etiquetas de política de datos. Usa Data Catalog a fin de crear y administrar una taxonomía y etiquetas de política para los datos. Si deseas conocer los lineamientos, consulta Prácticas recomendadas para las etiquetas de política.

  2. Asigna etiquetas de política a las columnas de BigQuery. En BigQuery, usa las anotaciones de esquema para asignar una etiqueta de política a cada columna en la que desees restringir el acceso.

  3. Administra el acceso a las etiquetas de política Usa las políticas de Cloud Identity and Access Management (Cloud IAM) para restringir el acceso a cada etiqueta de política. La política está vigente para cada columna que pertenece a la etiqueta de política.

Cuando un usuario intenta acceder a los datos de la columna en el momento de la consulta, BigQuery verifica la etiqueta de política de la columna y su política a fin de ver si el usuario tiene autorización para acceder a los datos.

Ejemplo de caso práctico

Considera una organización que necesita clasificar datos sensibles en tres categorías: Alta, Media y Baja.

Etiquetas de política

Para configurar la seguridad a nivel de la columna, se deben realizar los siguientes pasos:

  1. Un administrador de administración de datos define las etiquetas de política como Media y Alta en Data Catalog.

  2. En el caso de la etiqueta de política de acceso Alta, el administrador otorga acceso al grupo de acceso de alto nivel.

  3. El administrador asigna columnas a las etiquetas de política Alta. Por ejemplo, si la columna NSS está en la etiqueta de política Alta, el esquema para NSS contiene un campo policyTags. A continuación, se muestra cómo aparece una etiqueta de política en la página Current Schema (Esquema actual).

    IU de la etiqueta de política

    Si quieres obtener detalles sobre cómo usar la consola para establecer una etiqueta de política, consulta Establece una etiqueta de política en una columna.

    Como alternativa, puedes establecer la etiqueta de política con el comando bq update. El campo names de policyTags incluye el ID de la etiqueta de política Alta, projects/project- id/locations/location/taxonomies/taxonomy-id/policyTags//policytag-id:

    [
     ...
     {
       "name": "ssn",
       "type": "STRING",
       "mode": "REQUIRED",
       "policyTags": {
         "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags//policytag-id",]
       }
     },
     ...
    ]
    

    Si deseas obtener detalles sobre cómo usar el comando bq update para configurar una etiqueta de política, consulta Establece una etiqueta de política en una columna.

  4. El administrador realiza pasos similares para la etiqueta de política Media.

Con este acceso detallado, puedes administrar el acceso a muchas columnas mediante el control de solo una pequeña cantidad de etiquetas de política de clasificación de datos.

Para obtener detalles sobre estos pasos, consulta Restringe el acceso con la seguridad a nivel de la columna de BigQuery.

Funciones que se usan con la seguridad a nivel de la columna

Las siguientes funciones de Data Catalog se usan para la seguridad a nivel de la columna de BigQuery.

Función Cargo Se aplica a Descripción
roles/
datacatalog.policyTagsAdmin
Administrador de etiquetas de políticas Proyecto Tiene permiso para realizar las siguientes acciones:
  • crear, leer, actualizar y borrar taxonomías
  • establecer políticas de Cloud IAM en etiquetas de política
Esta función no tiene acceso de lectura al contenido de la columna.

Por lo general, un usuario con esta función se encarga de establecer políticas de administración de datos para la organización.
roles/
datacatalog.policyTagFineGrainedReader
Lector detallado Etiqueta de política Tiene permiso para acceder a las columnas de BigQuery con la etiqueta de política correspondiente.

Por lo general, un usuario con esta función consulta los datos.

Impacto de las escrituras

Para leer datos de una columna protegida por la seguridad a nivel de la columna, el usuario siempre debe tener permiso de lectura, a través del acceso de lectura detallado, en las etiquetas de política de la columna.

Esto aplica para las siguientes situaciones:

  • Tablas, incluidas las tablas comodín
  • Vistas
  • Copiar tablas

Para escribir datos en una fila de una columna protegida por la seguridad a nivel de columna, el requisito del usuario depende del tipo de escritura.

Si la operación de escritura es una de inserción, no se requiere acceso de lectura detallado. Sin embargo, el usuario no tendrá acceso para leer los datos que se insertaron, a menos que tenga un acceso de lectura detallado.

Si la operación de escritura es una de actualización, eliminación o combinación, el usuario no puede realizar la operación, a menos que tenga acceso de lectura detallado.

Un usuario no puede cargar datos desde archivos locales o desde Cloud Storage, a menos que tenga acceso de lectura detallado. Sin embargo, un usuario puede cargar datos desde una transmisión, ya que las cargas de transmisión no revisan las etiquetas de política. El usuario no tendrá acceso para leer los datos que se cargaron desde una transmisión, a menos que tenga acceso de lectura detallado.

Consulta tablas

Si un usuario tiene acceso a un conjunto de datos y tiene la función de Lector detallado de Data Catalog, los datos de la columna estarán disponibles para el usuario. El usuario ejecuta una consulta como de costumbre.

Si un usuario tiene acceso a un conjunto de datos, pero no tiene la función Lector detallado de Data Catalog, los datos de la columna no están disponibles para el usuario. Si ese usuario ejecuta SELECT *, recibirá un error que enumera las columnas a las que no puede acceder. Para resolver el error, puedes realizar una de las siguientes acciones:

  • Modifica la consulta para excluir las columnas a las que el usuario no puede acceder. Por ejemplo, si el usuario no tiene acceso a la columna ssn, pero tiene acceso a las columnas restantes, puede ejecutar la siguiente consulta:

    SELECT * EXCEPT (ssn) FROM ...
    

    En el ejemplo anterior, la cláusula EXCEPT excluye la columna ssn.

  • Solicita a un administrador de Data Catalog que agregue al usuario como un lector detallado de Data Catalog a la clase de datos relevantes. El mensaje de error proporciona el nombre completo de la etiqueta de política a la que el usuario necesitaría acceder.

Consulta las vistas

El impacto de la seguridad a nivel de la columna en las vistas es independiente de si la vista es una vista autorizada o no. En ambos casos, la seguridad a nivel de columna se aplica con transparencia.

Si la vista no es una vista autorizada, sucede lo siguiente:

Si el usuario tiene acceso a nivel de columna a las columnas en las tablas subyacentes de la vista, el usuario puede consultar las columnas en la vista. De lo contrario, no puede consultar las columnas en la vista.

Si la vista es una vista autorizada, sucede lo siguiente:

El acceso se controla solo mediante la seguridad a nivel de la columna en las columnas de las tablas subyacentes de la vista. Las políticas de Cloud IAM a nivel de la tabla y del conjunto de datos, si las hay, no se usan para verificar el acceso. Si el usuario tiene acceso a las etiquetas de política que se usan en las tablas subyacentes de la vista autorizada, este puede consultar las columnas en la vista autorizada.

En el siguiente diagrama, se muestra cómo se evalúa el acceso a una vista.

Accede a las vistas

Impacto de las instantáneas

BigQuery permite que los usuarios consulten una tabla en un estado anterior. Esta función te permite consultar las filas de una instantánea anterior de la tabla. También te permite revertir la tabla a la fecha en la que se tomó la instantánea.

En SQL heredado, debes usar el decorador de instantáneas en el nombre de la tabla para consultar una instantánea. En SQL estándar, debes usar la cláusula FOR SYSTEM_TIME AS OF en la tabla para consultar una instantánea.

El límite de tiempo para consultar una instantánea es la más reciente de las siguientes opciones:

  • Los últimos 7 días
  • El momento de creación de la tabla

No puedes consultar una tabla anterior si la tabla se borró y se volvió a crear con el mismo nombre de tabla.

Para ver cómo funcionan las instantáneas con la seguridad a nivel de la columna, supongamos que se cumple lo siguiente:

  • Tienes un punto de origen, que es una tabla existente en el momento actual.

  • Tienes la instantánea de la misma tabla.

  • El esquema de la instantánea es idéntico al esquema del origen o es un subconjunto de este. Es decir, todas las columnas de la instantánea se incluyen en el origen.

Con estas suposiciones, los permisos dependen de la seguridad a nivel de la columna más reciente en la tabla de origen (actual). Si el usuario puede leer las columnas actuales, podrá consultar una instantánea de esas columnas.

Si el esquema del origen y la instantánea difieren en las columnas en la consulta, la solicitud para recuperar una instantánea fallará.

Limitaciones

  • No puedes usar SQL heredado si habilitaste la seguridad a nivel de la columna. Cualquier consulta de SQL heredado se rechaza si hay alguna etiqueta de política en una columna consultada.

  • Una columna puede tener solo una etiqueta de política.

Próximos pasos