Restringe el acceso con seguridad a nivel de columnas de BigQuery

En esta página, se explica cómo usar la seguridad a nivel de columnas de BigQuery para restringir el acceso a los datos de BigQuery en el nivel de la columna. Para obtener información, consulta Introducción a la seguridad a nivel de columnas de BigQuery.

En las instrucciones de esta página, se usan BigQuery y Data Catalog. Para obtener información sobre los precios de estos productos, consulta los siguientes temas:

Actualiza el esquema de tabla para establecer una etiqueta de política en una columna. Puedes usar la IU web de BigQuery en Cloud Console, la herramienta de línea de comandos de bq y la API de BigQuery para establecer una etiqueta de política en una columna. Además, puedes crear una tabla, especificar el esquema y especificar etiquetas de política dentro de una operación mediante las siguientes técnicas:

  • Los comandos bq mk y bq load.
  • El método tables.insert de la API.
  • La página Crear tabla en la IU web de BigQuery Si usas esta IU, debes seleccionar Editar como texto cuando agregues o edites el esquema.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita la API Data Catalog.

    Habilita la API

  5. BigQuery se habilita de forma automática en proyectos nuevos. Para activar BigQuery en un proyecto existente, ve a Habilita la API BigQuery.

    Habilita la API

Otorga funciones

Los usuarios o las cuentas de servicio que administran etiquetas de política deben tener la función Administrador de etiquetas de política de Data Catalog. Los usuarios o cuentas de servicio que consultan datos protegidos con seguridad a nivel de columna deben tener la función Lector detallado de Data Catalog. En las siguientes secciones, se muestra cómo otorgar estas funciones.

Para obtener información general sobre estas funciones, consulta Funciones con seguridad a nivel de columna.

Otorga la función de administrador de etiquetas de política

Para un administrador que creará y administrará etiquetas de política de datos, otorga la función Administrador de etiquetas de política de Data Catalog. Antes de realizar los siguientes pasos, debes tener permisos resourcemanager.projects.setIamPolicy en el proyecto en el que se otorgará la función Administrador de etiquetas de política. Si no tienes el permiso resourcemanager.projects.setIamPolicy, solicita al propietario del proyecto que te otorgue el permiso o que realice los siguientes pasos por ti.

  1. En Google Cloud Console, ve a la página de IAM.

    Abrir la página IAM

  2. Si la dirección de correo electrónico del usuario al que se le otorga la función está en la lista, selecciónala y haz clic en Editar (el ícono de lápiz). Si la dirección de correo electrónico del usuario no está en la lista, primero agrega el usuario a tu proyecto antes de continuar con el siguiente paso.

  3. En la página Editar permisos, haz clic en Agregar otra función.

  4. Haz clic en Data Catalog y, luego, en Administrador de etiquetas de política.

  5. Haz clic en Guardar.

Para obtener más información sobre esta función, consulta Funciones con seguridad a nivel de columnas.

Otorga la función de lector de categorías de recursos

Para los usuarios que necesitan acceso a los datos protegidos con seguridad a nivel de columnas, otorga la función Lector detallado de Data Catalog. Antes de realizar los siguientes pasos, debes tener permisos resourcemanager.projects.setIamPolicy en el proyecto en el que otorgarás la función Lector detallado. Si no tienes el permiso resourcemanager.projects.setIamPolicy, solicita al propietario del proyecto que te otorgue el permiso o que realice los siguientes pasos por ti.

  1. Abre la página IAM en Cloud Console.

    Abrir la página IAM

  2. Si la dirección de correo electrónico del usuario al que se le otorga la función está en la lista, selecciónala y haz clic en Editar (el ícono de lápiz). Si la dirección de correo electrónico del usuario no está en la lista, primero agrega el usuario a tu proyecto antes de continuar con el siguiente paso.

  3. En la página Editar permisos, haz clic en Agregar otra función.

  4. Haz clic en Data Catalog y, luego, en Lector detallado.

  5. Haz clic en Guardar.

Para obtener más información sobre esta función, consulta Funciones con seguridad a nivel de columnas.

Crea una taxonomía

Usa Data Catalog a fin de crear una taxonomía y agregar etiquetas de política para tus datos.

La cuenta de usuario para los siguientes pasos debe tener la función de administrador de etiquetas de política de Data Catalog.

  1. Abre la página Taxonomías de Data Catalog en Cloud Console.

    Abrir la página Taxonomías

  2. Haz clic en Crear taxonomía.

  3. En la página Nueva taxonomía, sigue estos pasos:

    1. En Nombre de taxonomía, ingresa el nombre de la taxonomía que deseas crear.
    2. En Descripción, ingresa una descripción.
    3. Si es necesario, cambia el proyecto que aparece en Proyecto.
    4. Si es necesario, cambia la ubicación que aparece en Ubicación.
    5. En Etiquetas de política, ingresa un nombre y una descripción para la etiqueta de política.
    6. Si quieres agregar una etiqueta de política secundaria para una etiqueta de política, haz clic en Agregar etiqueta de política secundaria.
    7. Si deseas agregar una nueva etiqueta de política al mismo nivel que otra, haz clic en el ícono +.

      A continuación, se muestra la página New taxonomy (Nueva taxonomía) para un ejemplo de taxonomía.

      Página de creación de una taxonomía

    8. Sigue agregando etiquetas de política y etiquetas de política secundarias según sea necesario para tu taxonomía.

    9. Cuando termines de crear etiquetas de política para tu jerarquía, haz clic en Guardar.

Visualiza etiquetas de política

Si quieres ver las etiquetas de política que creaste para una taxonomía, realiza los siguientes pasos:

  1. Abre la página Taxonomías de Data Catalog en Cloud Console.

    Abrir la página Taxonomías

  2. Haz clic en la taxonomía cuyas etiquetas de política deseas ver. La página Taxonomías muestra las etiquetas de política en la taxonomía.

    Etiquetas de política

Visualiza los permisos para las etiquetas de política

Para ver los permisos en una etiqueta de política realiza los siguientes pasos:

  1. Abre la página Taxonomías de Data Catalog en Cloud Console.

    Abrir la página Taxonomías

  2. Haz clic en la taxonomía con las etiquetas de política a las que deseas asignarles permisos.

  3. Haz clic en las etiquetas de política a las que deseas asignarles permisos.

    Etiqueta de política seleccionada

  4. En el panel derecho, puedes ver los miembros y los permisos de las etiquetas de política seleccionadas.

    Permisos de las etiquetas de política

Actualiza los permisos de las etiquetas de política

Para actualizar el permiso a una etiqueta de política, realiza los siguientes pasos:

  1. Abre la página Taxonomías de Data Catalog en Cloud Console.

    Abrir la página Taxonomías

  2. Haz clic en la taxonomía con las etiquetas de política cuyos permisos deseas actualizar.

  3. Haz clic en las etiquetas de política cuyos permisos deseas actualizar.

    Etiqueta de política seleccionada

  4. En el panel derecho, puedes ver los miembros y los permisos de las etiquetas de política seleccionadas. Agrega cuentas a la función de administrador de etiquetas de política para las cuentas que crearán y administrarán etiquetas de política. Agrega cuentas a la función Lector detallado para las cuentas creadas con el fin de acceder a los datos protegidos con seguridad a nivel de columnas. También puedes usar este panel para quitar cuentas o modificar otros permisos.

  5. Cuando termines, haz clic en Guardar.

Recupera un nombre de recurso de etiqueta de política

Necesitarás el nombre de recurso de la etiqueta de política cuando apliques la etiqueta de política a una columna.

Para recuperar el nombre del recurso de la etiqueta de política, realiza los siguientes pasos:

  1. Visualiza las etiquetas de política de la taxonomía que contiene la etiqueta de política.

  2. Busca la etiqueta de política cuyo nombre de recurso desees copiar.

  3. Haz clic en el ícono de Copiar nombre de recurso de etiqueta de política.

    Copiar el nombre del recurso

Establece una etiqueta de política en una columna

La cuenta de servicio o usuario que establece una etiqueta de política necesita el permiso datacatalog.taxonomies.get. Este permiso se incluye en las funciones Administrador de etiquetas de política y Visualizador del proyecto.

Console

Para modificar un esquema con la IU web de BigQuery en Cloud Console, configura la etiqueta de política cuando edites el esquema.

  1. En la pantalla Current schema (Esquema actual), selecciona tu columna y haz clic en Add policy tag (Agregar etiqueta de política).
  2. En la pantalla Add a policy tag (Agregar una etiqueta de política), selecciona la etiqueta de política que desea aplicar a la columna.
  3. Haz clic en Seleccionar. Tu pantalla debería verse así:

    Editar esquema

  4. Haz clic en Guardar.

Como alternativa, cuando creas una tabla o modificas un esquema con la IU web de BigQuery en Cloud Console, configura la etiqueta de política cuando editas el esquema como texto.

  1. En Esquema, haz clic en Editar como texto.
  2. Modifica el esquema para establecer una etiqueta de política en una columna. Para el valor del campo names de policyTags, usa el nombre del recurso de etiqueta de política.

    Editar como texto

bq

  1. Recupera el esquema en un archivo local.

    bq show --schema --format=prettyjson \
       project-id:dataset.table > schema.json
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • project-id es el ID del proyecto.
    • dataset es el nombre del conjunto de datos que contiene la tabla que deseas actualizar.
    • table es el nombre de la tabla que deseas actualizar.
  2. Modifica el archivo schema.json para establecer una etiqueta de política en una columna. Para el valor del campo names de policyTags, usa el nombre de recurso de etiqueta de política.

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

    bq update \
       project-id:dataset.table schema.json
    

API

Llama a tables.patch y usa la propiedad schema para establecer una etiqueta de política en tu definición de esquema. Consulta el esquema de ejemplo de la línea de comandos para ver cómo configurar una etiqueta de política.

Debido a que el método tables.update reemplaza todo el recurso de la tabla, es preferible usar el método tables.patch.

Otras formas de establecer una etiqueta de política en una columna

También puedes establecer etiquetas de política de las siguientes maneras:

  • Usa bq mk para crear una tabla. Pasa un esquema para usarlo en la creación de la tabla.
  • Usa bq load para cargar datos en una tabla. Pasa un esquema para usarlo cuando cargas la tabla.

Para obtener información general sobre los esquemas, consulta Especifica un esquema.

Visualiza etiquetas de política en el esquema

Puedes ver las etiquetas de política aplicadas a una tabla cuando analizas el esquema de la tabla. Puedes ver el esquema con Cloud Console, la herramienta de línea de comandos de bq, la API de BigQuery y las bibliotecas cliente. Para obtener más información sobre cómo ver el esquema, consulta Obtén información de la tabla.

Consulta datos con seguridad a nivel de columnas

Si un usuario tiene acceso a un conjunto de datos y tiene la función 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.

Borrar una etiqueta de política

Actualiza el esquema de la tabla para borrar una etiqueta de política de una columna. Puedes usar la IU web de BigQuery en Cloud Console, la herramienta de línea de comandos de bq y el método de la API de BigQuery para borrar una etiqueta de política de una columna.

Console

En la página Current schema (Esquema actual), en Policy tags (Etiquetas de política), haz clic en X.

Borra una etiqueta de política

bq

  1. Recupera el esquema y guárdalo en un archivo local.

    bq show --schema --format=prettyjson \
       project-id:dataset.table > schema.json
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • project-id es el ID del proyecto.
    • dataset es el nombre del conjunto de datos que contiene la tabla que deseas actualizar.
    • table es el nombre de la tabla que deseas actualizar.
  2. Modifica el archivo schema.json para borrar una etiqueta de política de una columna.

    [
     ...
     {
       "name": "ssn",
       "type": "STRING",
       "mode": "REQUIRED",
       "policyTags": {
         "names": []
       }
     },
     ...
    ]
    
  3. Actualiza el esquema.

    bq update \
       project-id:dataset.table schema.json
    

API

Llama a tables.patch y usa la propiedad schema para borrar una etiqueta de política en tu definición de esquema. Consulta el esquema de ejemplo de la línea de comandos para ver cómo borrar una etiqueta de política.

Debido a que el método tables.update reemplaza todo el recurso de la tabla, es preferible usar el método tables.patch.

Aplica el control de acceso

Para aplicar el control de acceso, realiza las siguientes acciones:

  1. Abre la página Taxonomías de Data Catalog en Cloud Console.

    Abrir la página Taxonomías

  2. Haz clic en la taxonomía cuya seguridad a nivel de columnas deseas aplicar.

  3. Si Aplicar control de acceso aún no está activado, haz clic en Aplicar control de acceso.

Desactiva el control de acceso

  1. Abre la página Taxonomías de Data Catalog en Cloud Console.

    Abrir la página Taxonomías

  2. Haz clic en la taxonomía cuya seguridad a nivel de columnas deseas desactivar.

  3. Si Aplicar control de acceso está activado, haz clic en Aplicar control de acceso para desactivarlo.

Preguntas frecuentes

¿Funciona la seguridad a nivel de columnas de BigQuery para las vistas?

Sí. Las vistas se derivan de una tabla subyacente. Se aplica la misma seguridad de nivel de columna en la tabla cuando se accede a las columnas protegidas a través de una vista.

Ten en cuenta que hay dos tipos de vistas en BigQuery: vistas lógicas y vistas autorizadas. Ambos tipos de vistas se obtienen de una tabla de origen y ambas son coherentes con la seguridad a nivel de columnas de la tabla.

¿La seguridad a nivel de columnas funciona en columnas STRUCT o RECORD?

Sí. Solo puedes aplicar etiquetas de política a los campos de hoja y solo esos campos estarán protegidos.

¿Puedo usar SQL heredado y SQL estándar?

Si, puedes usar SQL estándar para consultar tablas que están protegidas con seguridad a nivel de columna.

Cualquier consulta de SQL heredado se rechaza si existen etiquetas de política en las tablas de destino.

¿Las consultas se registran en Cloud Logging?

La verificación de etiquetas de política de IAM se registra en Logging. Sin embargo, la verificación de las etiquetas de política no está asociada con la consulta que activó la verificación.

¿La copia de tablas se ve afectada por la seguridad a nivel de columnas?

Sí. No puedes copiar columnas si no tienes acceso a ellas.

Con las siguientes operaciones, se verifican los permisos a nivel de columnas.

Cuando copio datos a una tabla nueva, ¿las etiquetas de política se propagan de forma automática?

En la mayoría de los casos, no. Si copias los resultados de una consulta en una tabla nueva, no se asignarán etiquetas de política de forma automática a la tabla nueva. Por lo tanto, la tabla nueva no tendrá seguridad a nivel de columnas. Lo mismo sucede si exportas datos a Cloud Storage.

Hay una excepción si usas un trabajo de copia de tabla. Debido a que los trabajos de copia de tabla no aplican ninguna transformación de datos, las etiquetas de política se propagan de forma automática a las tablas de destino.

¿La seguridad a nivel de columnas es compatible con la nube privada virtual?

Sí, la seguridad a nivel de columnas y la VPC son compatibles y complementarias.

VPC aprovecha IAM para controlar el acceso a los servicios, como BigQuery y Cloud Storage. La seguridad a nivel de columnas proporciona seguridad detallada de las columnas individuales dentro de BigQuery.

Soluciona problemas

No puedo ver las funciones de Data Catalog

Si no puedes ver funciones como el lector detallado de Data Catalog, es posible que no hayas habilitado la API de Data Catalog en tu proyecto. Para obtener información sobre cómo habilitar la API de Data Catalog, consulta Antes de comenzar. Las funciones de Data Catalog deberían aparecer varios minutos después de habilitar la API de Data Catalog.

No puedo ver la página Taxonomías

Necesitas permisos adicionales para ver la página Taxonomías. Por ejemplo, la función Administrador de etiquetas de política de Data Catalog tiene acceso a la página Taxonomías.

Apliqué las etiquetas de política, pero no funcionan.

Si todavía recibes resultados de consultas para una cuenta que no debería tener acceso, es posible que la cuenta esté recibiendo resultados almacenados en caché. En particular, si antes ejecutaste la consulta de forma correcta y, luego, aplicaste etiquetas de política, podrías obtener resultados del caché de resultados de la consulta. De forma predeterminada, los resultados de las consultas se almacenan en caché durante 24 horas. La consulta debería fallar de inmediato si inhabilitas la caché de resultados. Para obtener más detalles sobre el almacenamiento en caché, consulta Impacto de la seguridad a nivel de columnas.

En general, las actualizaciones de IAM tardan unos 30 segundos en propagarse. Los cambios en la jerarquía de etiquetas de política pueden demorar hasta 30 minutos en propagarse.