Restringe el acceso con el control de acceso a nivel de columna
En esta página, se explica cómo usar el control de acceso a nivel de columna de BigQuery para restringir el acceso a los datos de BigQuery a nivel de las columnas. Para obtener información general sobre el control de acceso a nivel de columna, consulta Introducción al control de acceso a nivel de columna de BigQuery.
En las instrucciones de esta página, se usan BigQuery y Data Catalog.
Debes actualizar el esquema de la tabla para establecer una etiqueta de política en una columna. Puedes usar la consola de Google Cloud, 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
ybq load
de la herramienta de línea de comandos de bq. - El método
tables.insert
de la API. - La página Crear tabla en la consola de Google Cloud Si usas la consola de Google Cloud, debes seleccionar Editar como texto cuando agregues o edites el esquema.
Para mejorar el control de acceso a nivel de columna, puedes usar el enmascaramiento de datos dinámico de forma opcional. El enmascaramiento de datos te permite enmascarar datos sensibles mediante la sustitución del contenido nulo, predeterminado o con codificación hash en lugar del valor real de la columna.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
- BigQuery se habilita de forma automática en proyectos nuevos, pero es posible que debas activarlo en un proyecto preexistente.
Enable the BigQuery API.
Funciones y permisos
Hay varias funciones relacionadas con las etiquetas de política para los usuarios y las cuentas de servicio.
- Los usuarios o las cuentas de servicio que administran etiquetas de política deben tener el rol de administrador de etiquetas de política de Data Catalog. El rol de administrador de etiquetas de política puede administrar taxonomías y etiquetas de políticas, y puede otorgar o quitar roles de IAM asociados con etiquetas de política.
Los usuarios o las cuentas de servicio que aplican el control de acceso para el control de acceso a nivel de columna deben tener el rol de administrador de BigQuery o de propietario de datos de BigQuery. Los roles de BigQuery pueden administrar políticas de datos, que se usan para aplicar el control de acceso en una taxonomía.
Los usuarios o cuentas de servicio que consultan datos protegidos por el control de acceso a nivel de columna deben tener el rol de lector de categorías de recursos de Data Catalog para acceder a esos datos.
Para obtener más información sobre todos los roles relacionados con las etiquetas de política, consulta Roles usados con el control de acceso a nivel de columna.
El rol de administrador de etiquetas de política de Data Catalog
El rol de administrador de etiquetas de política de Data Catalog puede crear y administrar etiquetas de política de datos.
Para otorgar el rol de administrador de etiquetas de política, debes tener el permiso resourcemanager.projects.setIamPolicy
en el proyecto para el que deseas otorgar el rol. 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.
En la consola de Google Cloud, ve a la página IAM.
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). Luego, haz clic en Agregar otra función.
Si la dirección de correo electrónico del usuario no está en la lista, haz clic en
Agregar y, luego, ingresa la dirección de correo electrónico en el cuadro Principales nuevas.Haz clic en la lista desplegable Seleccionar una función.
Haz clic en Data Catalog y, luego, en Administrador de etiquetas de políticas.
Haz clic en Guardar.
Los roles de administrador de BigQuery y propietario de datos
Los roles de administrador de BigQuery y propietario de datos pueden administrar las políticas de datos.
A fin de otorgar cualquiera de estos roles, debes tener el permiso resourcemanager.projects.setIamPolicy
en el proyecto para el que deseas otorgar el rol. 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.
En la consola de Google Cloud, ve a la página IAM.
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). Luego, haz clic en Agregar otra función.
Si la dirección de correo electrónico del usuario no está en la lista, haz clic en
Agregar y, luego, ingresa la dirección de correo electrónico en el cuadro Principales nuevas.Haz clic en la lista desplegable Seleccionar una función.
Haz clic en BigQuery y, luego, en Administrador o Propietario de datos.
Haz clic en Guardar.
El rol de lector de categorías de recursos de Data Catalog
Los usuarios que necesitan acceso a los datos resguardados con control de acceso a nivel de columna necesitan el rol de lector de categorías de recursos de Data Catalog. Este rol se asigna a las principales como parte de la configuración de una etiqueta de política.
Para otorgar a un usuario el rol de lector de categorías de recursos en una etiqueta de política, debes tener el permiso datacatalog.taxonomies.setIamPolicy
en el proyecto que contiene la taxonomía de esa etiqueta de política. Si no tienes
el permiso datacatalog.taxonomies.setIamPolicy
, solicita al propietario del proyecto que
te otorgue el permiso o que realice la acción por ti.
Para obtener instrucciones, consulta Establece permisos en las etiquetas de política.
Configura el control de acceso a nivel de columna
Para configurar el control de acceso a nivel de columna, completa estas tareas:
- Crea una taxonomía de etiquetas de política.
- Asocia las principales con las etiquetas de política y otorga a las principales el rol de lector de categorías de recursos de Data Catalog.
- Asocia las etiquetas de política con las columnas de la tabla de BigQuery.
- Aplica el control de acceso a la taxonomía que contiene las etiquetas de política.
Crear taxonomías
La cuenta de servicio o el usuario que crea una taxonomía debe tener el rol de administrador de etiquetas de política de Data Catalog.
Consola
- Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
- Haz clic en Crear taxonomía.
En la página Nueva taxonomía, sigue estos pasos:
- En Nombre de taxonomía, ingresa el nombre de la taxonomía que deseas crear.
- En Descripción, ingresa una descripción.
- Si es necesario, cambia el proyecto que aparece en Proyecto.
- Si es necesario, cambia la ubicación que aparece en Ubicación.
- En Etiquetas de política, ingresa un nombre y una descripción para la etiqueta de política.
- Si quieres agregar una etiqueta de política secundaria para una etiqueta de política, haz clic en Agregar subetiqueta.
- Para agregar una nueva etiqueta de política al mismo nivel que otra, haz clic en + Agregar etiqueta de política.
- Sigue agregando etiquetas de política y etiquetas de política secundarias según sea necesario para tu taxonomía.
- Cuando termines de crear etiquetas de política para tu jerarquía, haz clic en Crear.
API
Para usar las taxonomías existentes, llama a taxonomies.import
en lugar de realizar los dos primeros pasos del siguiente procedimiento.
- Llama a
taxonomies.create
para crear una taxonomía. - Llama a
taxonomies.policytag.create
para crear una etiqueta de política.
Establece permisos en las etiquetas de política
La cuenta de servicio o el usuario que crea una taxonomía debe tener el rol de administrador de etiquetas de política de Data Catalog.
Consola
Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
Haz clic en el nombre de la taxonomía que contiene las etiquetas de correspondientes.
Selecciona una o más etiquetas de política.
Si el Panel de información está oculto, haz clic en Mostrar panel de información.
En el panel de información, puedes ver los roles y las principales de las etiquetas de política seleccionadas. Agrega el rol Administrador de etiquetas de política a las cuentas que crean y administran etiquetas de política. Agrega el rol Lector de categorías de recursos a las cuentas creadas con el fin de acceder a los datos protegidos por el control de acceso a nivel de columna. También puedes usar este panel para quitar roles de las cuentas o modificar otros permisos.
Haz clic en Guardar.
API
Llama a taxonomies.policytag.setIamPolicy
para otorgar acceso a una etiqueta de política mediante la asignación de principales a los roles adecuados.
Establecer etiquetas de política en las columnas
La cuenta de servicio o el usuario que establece una etiqueta de política necesita los permisos datacatalog.taxonomies.get
y bigquery.tables.setCategory
.
datacatalog.taxonomies.get
se incluye en los roles de administrador de etiquetas de política de Data Catalog y visualizador de proyectos.
bigquery.tables.setCategory
se incluye en los
roles de administrador de BigQuery (roles/bigquery.admin
) y
propietario de datos de BigQuery (roles/bigquery.dataOwner
).
Consola
Para establecer la etiqueta de política, modifica un esquema con la consola de Google Cloud.
Abre la página BigQuery en la consola de Google Cloud.
En el Explorador de BigQuery, ubica y selecciona la tabla que deseas actualizar. Se abrirá el esquema de esa tabla.
Haz clic en Editar esquema.
En la pantalla Esquema actual, selecciona la columna de destino y haz clic en Agregar etiqueta de política.
En la pantalla Agrega una etiqueta de política, ubica y selecciona la etiqueta de política que deseas aplicar a la columna.
Haz clic en Seleccionar. Tu pantalla debería verse así:
Haz clic en Guardar.
bq
Escribe el esquema en un archivo local.
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
Donde:
- 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.
Modifica el archivo schema.json para establecer una etiqueta de política en una columna. Para el valor del campo
names
depolicyTags
, 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"] } }, ... ]
Actualiza el esquema.
bq update \ project-id:dataset.table schema.json
API
En el caso de las tablas existentes, llama a tables.patch
o, en el caso de las tablas nuevas, llama a tables.insert
. Usa la propiedad schema
del objeto Table
que pases para establecer una etiqueta de política en la 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.
Cuando se trabaja con una tabla existente, se prefiere el método tables.patch
, ya que el método tables.update
reemplaza todo el recurso de tabla.
Otras formas de establecer etiquetas de política en las columnas
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.
Aplicar control de acceso
Usa estas instrucciones para activar o desactivar la aplicación del control de acceso.
Se debe crear una política de datos para aplicar el control de acceso. Esto se hace por ti si aplicas el control de acceso mediante la consola de Google Cloud. Si deseas aplicar el control de acceso con la API de BigQuery Data Policy, debes crear la política de datos de forma explícita.
El usuario o la cuenta de servicio que aplica el control de acceso debe tener el rol de administrador de BigQuery o de propietario de datos de BigQuery. También debe tener el rol de administrador de Data Catalog o el de visualizador de Data Catalog.
Console
Para aplicar el control de acceso, sigue estos pasos:
Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
Haz clic en la taxonomía cuyo control de acceso a nivel de columna deseas aplicar.
Si Aplicar control de acceso aún no está activado, haz clic en Aplicar control de acceso para habilitarlo.
Para detener la aplicación del control de acceso si está activada, haz clic en Aplicar control de acceso a fin de desactivar el control.
Si tienes políticas de datos asociadas con cualquiera de las etiquetas de política en la taxonomía, debes borrar todas las políticas de datos de la taxonomía antes de detener la aplicación del control de acceso. Si borras las políticas de datos mediante la API de BigQuery Data Policy, debes borrar todas las políticas de datos con un dataPolicyType
de DATA_MASKING_POLICY
. Para obtener más información, consulta Borra políticas de datos.
API
Para aplicar el control de acceso, llama a create
y pasa un recurso DataPolicy
en el que el campo dataPolicyType
esté configurado en COLUMN_LEVEL_SECURITY_POLICY
.
Para detener la aplicación del control de acceso si está activada, borra la política de datos asociada con la taxonomía. Para ello, llama al método delete
para esa política de datos.
Si tienes políticas de datos asociadas con cualquiera de las etiquetas de política de la taxonomía, no puedes detener la aplicación del control de acceso sin borrar primero todas las políticas de datos de la taxonomía. Para obtener más información, consulta Borra políticas de datos.
Trabaja con etiquetas de política
Usa esta sección para aprender a visualizar, modificar y borrar etiquetas de política.
Visualiza etiquetas de política
Si quieres ver las etiquetas de política que creaste para una taxonomía, realiza los siguientes pasos:
Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
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.
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 la consola de Google Cloud, 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.
Visualiza los permisos de las etiquetas de política
Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
Haz clic en el nombre de la taxonomía que contiene las etiquetas de correspondientes.
Selecciona una o más etiquetas de política.
Si el Panel de información está oculto, haz clic en Mostrar panel de información.
En el panel de información, puedes ver los roles y las principales de las etiquetas de política seleccionadas.
Actualiza los permisos de las etiquetas de política
La cuenta de servicio o el usuario que crea una taxonomía debe tener el rol de administrador de etiquetas de política de Data Catalog.
Consola
Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
Haz clic en el nombre de la taxonomía que contiene las etiquetas de correspondientes.
Selecciona una o más etiquetas de política.
Si el Panel de información está oculto, haz clic en Mostrar panel de información.
En el panel de información, puedes ver los roles y las principales de las etiquetas de política seleccionadas. Agrega el rol Administrador de etiquetas de política a las cuentas que crean y administran etiquetas de política. Agrega el rol Lector de categorías de recursos a las cuentas creadas con el fin de acceder a los datos protegidos por el control de acceso a nivel de columna. También puedes usar este panel para quitar roles de las cuentas o modificar otros permisos.
Haz clic en Guardar.
API
Llama a taxonomies.policytag.setIamPolicy
para otorgar acceso a una etiqueta de política mediante la asignación de principales a los roles adecuados.
Recupera nombres de recursos de etiquetas 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:
Visualiza las etiquetas de política de la taxonomía que contiene la etiqueta de política.
Busca la etiqueta de política cuyo nombre de recurso desees copiar.
Haz clic en el ícono de Copiar nombre de recurso de etiqueta de política.
Borra etiquetas de política
Actualiza el esquema de la tabla para borrar una etiqueta de política de una columna. Puedes usar la consola de Google Cloud, 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.
Consola
En la página Current schema (Esquema actual), en Policy tags (Etiquetas de política), haz clic en X.
bq
Recupera el esquema y guárdalo en un archivo local.
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
Donde:
- 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.
Modifica el archivo schema.json para borrar una etiqueta de política de una columna.
[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": [] } }, ... ]
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
.
Borra etiquetas de política
Puedes borrar una o más etiquetas de política de una taxonomía, o puedes borrar la taxonomía y todas las etiquetas de política que contiene. Cuando se borra una etiqueta de política, se quita de forma automática la asociación entre la etiqueta de política y las columnas a las que se aplicó.
Cuando borras una etiqueta de política que tiene una política de datos asociada, esta puede tardar hasta 30 minutos en borrarse. Puedes borrar la política de datos directamente si deseas que se borre de inmediato.
Para borrar una o más etiquetas de política en una taxonomía, sigue estos pasos:
- Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
- Haz clic en el nombre de la taxonomía que contiene las etiquetas que deseas borrar.
- Haz clic en Edit.
- Haz clic en junto a las etiquetas de política que deseas borrar.
- Haz clic en Guardar.
- Haz clic en Confirmar.
Para borrar una taxonomía completa, sigue estos pasos:
- Abre la página Taxonomías de etiquetas de política en la consola de Google Cloud.
- Haz clic en el nombre de la taxonomía que contiene las etiquetas que deseas borrar.
- Haz clic en Borrar taxonomía de etiquetas de políticas.
- Escribe el nombre de la taxonomía y, luego, haz clic en Borrar.
Consulta datos con el control de acceso a nivel de columna
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 *
, recibe un error que enumera las columnas a las que el usuario 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 columnassn
.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.
Preguntas frecuentes
¿Funciona la seguridad a nivel de columna de BigQuery para las vistas?
Sí. Las vistas se derivan de una tabla subyacente. Se aplica el mismo control de acceso a nivel de columna en la tabla cuando se accede a las columnas protegidas a través de una vista.
Existen 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 el control de acceso a nivel de columna de la tabla.
¿El control de acceso a nivel de columna funciona en columnas STRUCT
o RECORD
?
Sí. Solo puedes aplicar etiquetas de política a los campos de hoja y solo esos campos están protegidos.
¿Puedo usar SQL heredado y GoogleSQL?
Puedes usar GoogleSQL para consultar tablas que están protegidas por el control de acceso 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 se registra en Logging. Si quieres obtener más información, consulta Registro de auditoría para el control de acceso a nivel de columna.
¿La copia de tablas se ve afectada por el control de acceso a nivel de columna?
Sí. No puedes copiar columnas si no tienes acceso a ellas.
Con las siguientes operaciones, se verifican los permisos a nivel de columnas.
- Consultas de
SELECT
con tablas de destino - Trabajos de copia de tablas
- Trabajos de exportación de datos (por ejemplo, a Cloud Storage)
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 tiene control de acceso a nivel de columna. 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.
¿El control de acceso a nivel de columna es compatible con la nube privada virtual?
Sí, el control de acceso a nivel de columna y la VPC son compatibles y complementarios.
VPC aprovecha IAM para controlar el acceso a los servicios, como BigQuery y Cloud Storage. El control de acceso a nivel de columna proporciona seguridad detallada de las columnas individuales dentro de BigQuery.
A fin de aplicar la VPC para etiquetas de política y políticas de datos para el control de acceso a nivel de columna y el enmascaramiento de datos dinámico, debes restringir las siguientes APIs en el perímetro:
Solución de 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 del control de acceso a nivel de columna.
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.
No tengo permiso para leer desde una tabla con seguridad a nivel de columnas
Necesitas el rol de lector detallado o el rol de lector enmascarado en diferentes niveles, como la organización, la carpeta, el proyecto y la etiqueta de política. El rol de lector detallado otorga acceso a los datos sin procesar, mientras que el rol de lector enmascarado otorga acceso a los datos enmascarados. Puedes usar el solucionador de problemas de IAM para verificar este permiso a nivel de proyecto.