Enmascara datos de columnas
En este documento, se muestra cómo implementar el enmascaramiento de datos para ocultar de forma selectiva datos sensibles. Si implementas el enmascaramiento de datos, puedes proporcionar diferentes niveles de visibilidad para diferentes grupos de usuarios. Para obtener información general, consulta Introducción al enmascaramiento de datos.
Para implementar el enmascaramiento de datos, debes agregar una política de datos a una columna. Para agregar una política de enmascaramiento de datos a una columna, debes completar los siguientes pasos:
- Crea una taxonomía con al menos una etiqueta de política.
- Opcional: Otorga el rol de lector detallado de Data Catalog a uno o más principales en una o más etiquetas de política que creaste.
- Crea hasta tres políticas de datos para la etiqueta de política, para asignar reglas de enmascaramiento y principales (que representen usuarios o grupos) a esa etiqueta.
- Establece la etiqueta de política en una columna. Esto asigna las políticas de datos asociadas con la etiqueta de política a la columna seleccionada.
- Asigna usuarios a los que deberían tener acceso a los datos enmascarados en la función de lector enmascarado de BigQuery. Como práctica recomendada, asigna el rol de Lector enmascarado de BigQuery a nivel de la política de datos. Asignar el rol a nivel del proyecto o superior otorga a los usuarios permisos para todas las políticas de datos del proyecto, lo que puede generar problemas debido a permisos excesivos.
Puedes usar la Trusted Cloud consola o la API de BigQuery Data Policy para trabajar con políticas de datos.
Cuando hayas completado estos pasos, los usuarios que ejecutan consultas en la columna obtienen datos sin enmascarar, datos enmascarados o un error de acceso denegado, según los grupos a los que pertenecen y los roles que se les otorgaron. Para obtener más información, consulta Cómo interactúan los roles de lector enmascarado y de lector detallado.
Como alternativa, puedes aplicar políticas de datos directamente en una columna (Vista previa). Para obtener más información, consulta Cómo enmascarar datos con políticas de datos directamente en una columna.
Enmascara datos con etiquetas de política
Usa etiquetas de política para ocultar de forma selectiva los datos sensibles.
Antes de comenzar
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
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.
- Si creas una política de datos que haga referencia a una rutina de enmascaramiento personalizada, crea la UDF de enmascaramiento asociada para que esté disponible en los siguientes pasos.
- Abre la página Taxonomías de etiquetas de política en la consola deTrusted 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.
- Llama a
taxonomies.create
para crear una taxonomía. - Llama a
taxonomies.policytag.create
para crear una etiqueta de política. - Abre la página Taxonomías de etiquetas de política en la consola deTrusted Cloud .
- Haz clic en el nombre de la taxonomía que deseas abrir.
- Selecciona una etiqueta de política.
- Haz clic en Administrar políticas de datos.
- En Nombre de la política de datos, escribe un nombre para la política de datos. El nombre de la política de datos debe ser único dentro del proyecto en el que reside la política de datos.
- Para la Regla de enmascaramiento, elige una regla de enmascaramiento predefinida o una rutina
de enmascaramiento personalizada. Si seleccionas una rutina de enmascaramiento personalizada, asegúrate
de tener los permisos
bigquery.routines.get
ybigquery.routines.list
a nivel de proyecto. - En Principal, escribe el nombre de uno o más usuarios o grupos a los que deseas otorgar acceso enmascarado a la columna. Ten en cuenta que a todos los usuarios y grupos que ingreses aquí se les otorga el rol de lector enmascarado de BigQuery.
- Haz clic en Enviar.
Realiza una llamada al método
create
. Pasa un recursoDataPolicy
que cumpla con los siguientes requisitos:- El campo
dataPolicyType
está configurado comoDATA_MASKING_POLICY
. - En el campo
dataMaskingPolicy
, se identifica la regla de enmascaramiento de datos o la rutina que se usará. - El campo
dataPolicyId
proporciona un nombre para la política de datos que es única dentro del proyecto en el que reside la política de datos.
- El campo
Llama al método
setIamPolicy
y pasa unPolicy
. ElPolicy
debe identificar a los principales que tienen acceso a los datos enmascarados y especificarroles/bigquerydatapolicy.maskedReader
para el camporole
.Abre la página de BigQuery en la Trusted Cloud consola.
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.
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
- Abre la página Taxonomías de etiquetas de política en la consola deTrusted Cloud .
- Haz clic en el nombre de la taxonomía que deseas abrir.
- Selecciona una etiqueta de política.
- Haz clic en Administrar políticas de datos.
- De manera opcional, cambia la regla de enmascaramiento.
- Opcional: Agrega o quita principales.
- Haz clic en Enviar.
- Abre la página Taxonomías de etiquetas de política en la consola deTrusted Cloud .
- Haz clic en el nombre de la taxonomía que deseas abrir.
- Selecciona una etiqueta de política.
- Haz clic en Administrar políticas de datos.
- Haz clic en junto a la política de datos que deseas borrar.
- Haz clic en Enviar.
- Haz clic en Confirmar.
- El campo
dataPolicyType
está configurado comoDATA_MASKING_POLICY
oRAW_DATA_ACCESS_POLICY
. - En el campo
dataMaskingPolicy
, se identifica la regla de enmascaramiento de datos o la rutina que se usará. - El campo
dataPolicyId
proporciona un nombre para la política de datos que es único dentro del proyecto en el que reside la política de datos. -
bigquery.tables.update
-
bigquery.tables.setColumnDataPolicy
-
bigquery.dataPolicies.get
- Debes usar el recurso
v2.projects.locations.datapolicies
. - No puedes aplicar etiquetas de política y políticas de datos a la misma columna.
- Puedes adjuntar un máximo de ocho políticas de datos a una columna.
- Una tabla puede hacer referencia a un máximo de 1,000 políticas de datos únicas a través de sus columnas.
- No puedes aplicar etiquetas de política y políticas de datos a la misma columna.
- Una consulta puede hacer referencia a un máximo de 2,000 políticas de datos.
- Solo puedes borrar una política de datos si ninguna columna de la tabla hace referencia a ella.
- Si un usuario solo tiene el rol de
maskedAccess
, la llamada a la API detabledata.list
fallará. - Las operaciones de copia de tablas fallan en las tablas protegidas por políticas de datos de columnas si el usuario no tiene acceso a los datos sin procesar.
- Las operaciones de copia de tablas entre regiones no admiten tablas protegidas por políticas de datos a nivel de la columna.
- Las políticas de datos de columnas no están disponibles en las regiones de BigQuery Omni.
- El SQL heredado falla si la tabla de destino tiene políticas de datos de columna.
- Los trabajos de carga no admiten esquemas especificados por el usuario con políticas de datos de columnas.
- Si reemplazas una tabla de destino, el sistema quitará las etiquetas de política existentes de la tabla, a menos que uses la marca
--destination_schema
para especificar un esquema con políticas de datos de columna. - De forma predeterminada, el enmascaramiento de datos no admite columnas particionadas ni agrupadas. Esta es una limitación general del enmascaramiento de datos, no específica de las políticas de datos a nivel de la columna. El enmascaramiento de datos en columnas particionadas o agrupadas puede aumentar significativamente los costos de las consultas.
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.
Console
API
Para usar las taxonomías existentes, llama a taxonomies.import
en lugar de realizar los dos primeros pasos del siguiente procedimiento.
Trabaja con etiquetas de política
Para obtener más información sobre cómo trabajar con etiquetas de política, cómo verlas o actualizarlas, consulta Trabaja con etiquetas de política. Si deseas obtener prácticas recomendadas, consulta Prácticas recomendadas para usar etiquetas de política en BigQuery.
Crea políticas de datos
La cuenta de servicio o el usuario que crea una política de datos debe tener los
permisos bigquery.dataPolicies.create
, bigquery.dataPolicies.setIamPolicy
y
datacatalog.taxonomies.get
.
Los permisos bigquery.dataPolicies.create
y bigquery.dataPolicies.setIamPolicy
se incluyen en los roles de administrador de políticas de datos de BigQuery, administrador de BigQuery y propietario de datos de BigQuery.
El permiso datacatalog.taxonomies.get
se incluye en los roles de administrador de Data Catalog y visualizador de Data Catalog.
Si creas una política de datos que hace referencia a una rutina de enmascaramiento personalizada, también necesitas permisos de rutina.
En el caso del enmascaramiento personalizado, otorga a los usuarios los roles de administrador de BigQuery o propietario de datos de BigQuery para asegurarte de que tengan los permisos necesarios para las rutinas y las políticas de datos.
Puedes crear hasta nueve políticas de datos para una etiqueta de política. Una de estas políticas está reservada para la configuración de control de acceso a nivel de columna.
Console
API
Establecer etiquetas de política en las columnas
Para establecer una política de datos en una columna, debes adjuntar la etiqueta de política asociada con la política de datos a la columna.
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 las funciones de administrador de BigQuery (roles/bigquery.admin
) y propietario de datos de BigQuery (roles/bigquery.dataOwner
).
Para ver las taxonomías y las etiquetas de políticas en todos los proyectos de una organización en la consola deTrusted Cloud , los usuarios necesitan el permiso resourcemanager.organizations.get
, que se incluye en el rol de Visualizador de la organización.
Console
Para establecer la etiqueta de política, modifica un esquema con la consola deTrusted Cloud .
bq
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.
Aplicar control de acceso
Cuando creas una política de datos para una etiqueta de política, el control de acceso se aplica automáticamente. Todas las columnas a las que se aplica esa etiqueta de política muestran datos enmascarados en respuesta a consultas de usuarios que tienen el rol de lector enmascarado.
Para detener la aplicación del control de acceso, primero debes borrar todas las políticas de datos asociadas con las etiquetas de política en la taxonomía. Para obtener más información, consulta Cómo aplicar el control de acceso.
Verifica los permisos de IAM en una política de datos
Para ver qué permisos tienes en una política de datos, llama al método testIamPermissions
.
Actualiza las políticas de datos
La cuenta de servicio o el usuario que actualiza una política de datos debe tener el permiso bigquery.dataPolicies.update
.
Si actualizas la etiqueta de política con la que se asocia la política de datos, también necesitas el permiso datacatalog.taxonomies.get
.
Si actualizas los principales asociados a la política de datos, necesitas el permiso bigquery.dataPolicies.setIamPolicy
.
Los permisos bigquery.dataPolicies.update
y bigquery.dataPolicies.setIamPolicy
se incluyen en los roles de administrador de políticas de datos de BigQuery, administrador de BigQuery y propietario de datos de BigQuery.
El permiso datacatalog.taxonomies.get
se incluye en los roles de administrador de Data Catalog y visualizador de Data Catalog.
Console
API
Para cambiar la regla de enmascaramiento de datos, llama al método patch
y pasa un recurso DataPolicy
con un campo dataMaskingPolicy
actualizado.
Para cambiar los principales asociados con una política de datos, llama al método setIamPolicy
y pasa un Policy
que actualice los principales a los que se les otorga acceso a los datos enmascarados.
Borra las políticas de datos
La cuenta de servicio o el usuario que crea una política de datos debe tener el permiso bigquery.dataPolicies.delete
. Este permiso se incluye en los roles de Administrador de políticas de datos de BigQuery, Administrador de BigQuery y Propietario de datos de BigQuery.
Console
API
Para borrar una política de datos, llama al método delete
.
Enmascara datos aplicando políticas de datos a una columna
Como alternativa a la creación de etiquetas de política, puedes crear políticas de datos y aplicarlas directamente a una columna.
Trabaja con políticas de datos
Puedes crear, actualizar y borrar políticas de datos con la API de BigQuery Data Policy. Para aplicar una política de datos directamente en una columna, no puedes usar la página Taxonomías de etiquetas de política en la consola de Trusted Cloud .
Para trabajar con políticas de datos, usa el recurso v2.projects.locations.datapolicies
.
Crea políticas de datos
La cuenta de servicio o el usuario que crea una política de datos debe tener el permiso bigquery.dataPolicies.create
.
El permiso bigquery.dataPolicies.create
se incluye en los roles de administrador de políticas de datos de BigQuery, administrador de BigQuery y propietario de datos de BigQuery.
El permiso datacatalog.taxonomies.get
se incluye en los roles de administrador de Data Catalog y visualizador de Data Catalog.
Si creas una política de datos que hace referencia a una rutina de enmascaramiento personalizada, también necesitas permisos de rutina.
Si usas el enmascaramiento personalizado, otorga a los usuarios el rol de propietario de datos de BigQuery para asegurarte de que tengan los permisos necesarios para las rutinas y las políticas de datos.
Para crear una política de datos, llama al método create
. Pasa un recurso DataPolicy
que cumpla con los siguientes requisitos:
Actualiza las políticas de datos
La cuenta de servicio o el usuario que actualiza una política de datos debe tener el permiso bigquery.dataPolicies.update
.
El permiso bigquery.dataPolicies.update
se incluye en los roles de administrador de políticas de datos de BigQuery, administrador de BigQuery y propietario de datos de BigQuery.
Para cambiar la regla de enmascaramiento de datos, llama al método patch
y pasa un recurso DataPolicy
con un campo dataMaskingPolicy
actualizado.
También puedes otorgar acceso detallado al control de acceso a las políticas de datos.
Los permisos para otorgar acceso detallado al control de acceso a las políticas de datos y administrar las políticas de datos son diferentes. Para controlar los permisos de control de acceso detallado, debes actualizar el campo grantees
de la política de datos. Para controlar el acceso a las políticas de datos, configura los roles de IAM con el método setIamPolicy
.
Para establecer los beneficiarios de una política de datos, usa el método v2 patch
. Para administrar los permisos de la política de datos, usa el método v1setIamPolicy
.
Para otorgar acceso detallado al control de acceso a las políticas de datos, llama al método patch
y pasa un recurso DataPolicy
con un campo grantees
actualizado.
Borra las políticas de datos
La cuenta de servicio o el usuario que crea una política de datos debe tener el permiso bigquery.dataPolicies.delete
. Este permiso se incluye en los roles de Administrador de políticas de datos de BigQuery, Administrador de BigQuery y Propietario de datos de BigQuery.
Para borrar una política de datos, llama al método delete
.
Asigna una política de datos directamente a una columna
Puedes asignar una política de datos directamente a una columna sin usar etiquetas de política.
Antes de comenzar
Para obtener los permisos que necesitas para asignar una política de datos directamente a una columna, pídele a tu administrador que te otorgue el rol de IAM Administrador de políticas de datos de BigQuery (roles/bigquerydatapolicy.admin
) en tu tabla.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para asignar una política de datos directamente a una columna. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para asignar una política de datos directamente a una columna:
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Asigna una política de datos
Para asignar una política de datos directamente a una columna, realiza una de las siguientes acciones:
SQL
Para adjuntar una política de datos a una columna, usa las sentencias DDL CREATE
TABLE
, ALTER TABLE ADD
COLUMN
o ALTER COLUMN SET
OPTIONS
.
En el siguiente ejemplo, se usa la instrucción CREATE TABLE
y se configuran políticas de datos en una columna:
CREATE TABLE myproject.table1 ( name INT64 OPTIONS (data_policies=["{'name':'myproject.region-us.data_policy_name1'}", "{'name':'myproject.region-us.data_policy_name2'}"]) );
En el siguiente ejemplo, se usa ALTER COLUMN SET OPTIONS
para agregar una política de datos a una columna existente en una tabla:
ALTER TABLE myproject.table1 ALTER COLUMN column_name SET OPTIONS ( data_policies += ["{'name':'myproject.region-us.data_policy_name1'}", "{'name':'myproject.region-us.data_policy_name2'}"]);
API
Para asignar una política de datos a una columna, llama al método patch
en la tabla y actualiza el esquema de la tabla con las políticas de datos aplicables.
Limitaciones
La asignación de una política de datos directamente en una columna está sujeta a las siguientes limitaciones: