Ocultar datos de columnas

En este documento se explica cómo implementar el enmascaramiento de datos para ocultar de forma selectiva los datos sensibles. Si implementas el enmascaramiento de datos, puedes proporcionar diferentes niveles de visibilidad a distintos grupos de usuarios. Para obtener información general, consulta el artículo Introducción al enmascaramiento de datos.

Para implementar el enmascaramiento de datos, añade una política de datos a una columna. Para añadir una política de enmascaramiento de datos a una columna, debes seguir estos pasos :

  1. Crea una taxonomía con al menos una etiqueta de política.
  2. Opcional: Asigna el rol de lector de datos pormenorizados de Cloud Data Catalog a uno o varios principales en una o varias de las etiquetas de política que has creado.
  3. Crea hasta tres políticas de datos para la etiqueta de política con el fin de asignar reglas de enmascaramiento y principales (que representan usuarios o grupos) a esa etiqueta.
  4. Define la etiqueta de política en una columna. De esta forma, se asignan las políticas de datos asociadas a la etiqueta de política a la columna seleccionada.
  5. Asigna el rol Lector enmascarado de BigQuery a los usuarios que deban tener acceso a los datos enmascarados. Como práctica recomendada, asigna el rol Lector enmascarado de BigQuery a nivel de política de datos. Si asignas el rol a nivel de proyecto o superior, los usuarios tendrán permisos para todas las políticas de datos del proyecto, lo que puede provocar problemas debido a un exceso de permisos.

Puede usar la consola de Google Cloud o la API Data Policy de BigQuery para trabajar con políticas de datos.

Cuando hayas completado estos pasos, los usuarios que ejecuten consultas en la columna obtendrán datos sin máscara, datos con máscara o un error de acceso denegado, en función de los grupos a los que pertenezcan y los roles que se les hayan concedido. Para obtener más información, consulta Cómo interactúan los roles Lector enmascarado y Lector detallado.

También puedes aplicar políticas de datos directamente a una columna (Vista previa). Para obtener más información, consulta Máscara de datos con políticas de datos directamente en una columna.

Máscara de datos con etiquetas de política

Usa etiquetas de política para ocultar de forma selectiva los datos sensibles.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Data Catalog and BigQuery Data Policy APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Data Catalog and BigQuery Data Policy APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. BigQuery se habilita automáticamente en los proyectos nuevos, pero es posible que tengas que activarlo en un proyecto que ya tengas.

    Enable the BigQuery API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. Si vas a crear una política de datos que haga referencia a una rutina de enmascaramiento personalizada, crea la función definida por el usuario de enmascaramiento asociada para que esté disponible en los pasos siguientes.
  10. Crear taxonomías

    El usuario o la cuenta de servicio que cree una taxonomía debe tener asignado el rol Administrador de etiquetas de política de Data Catalog.

    Consola

    1. Abre la página Taxonomías de etiquetas de políticas en la consola deGoogle Cloud .

      Abre la página Taxonomías de etiquetas de política.

    2. Haz clic en Crear taxonomía.
    3. En la página Nueva taxonomía, haga lo siguiente:

      1. En Nombre de la taxonomía, escribe el nombre de la taxonomía que quieras crear.
      2. En Descripción, escribe 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 la política, escriba el nombre y la descripción de la etiqueta de la política.
      6. Para añadir una etiqueta de política secundaria a una etiqueta de política, haga clic en Añadir subetiqueta.
      7. Para añadir una etiqueta de política nueva al mismo nivel que otra etiqueta de política, haga clic en + Añadir etiqueta de política.
      8. Sigue añadiendo etiquetas de política y etiquetas de política secundarias según sea necesario para tu taxonomía.
      9. Cuando hayas terminado de crear las etiquetas de política de tu jerarquía, haz clic en Crear.

    API

    Para usar taxonomías ya creadas, llama a taxonomies.import en lugar de los dos primeros pasos del siguiente procedimiento.

    1. Llamar taxonomies.create para crear una taxonomía.
    2. Llama a taxonomies.policytag.create para crear una etiqueta de política.

    Trabajar con etiquetas de política

    Para obtener más información sobre cómo trabajar con etiquetas de políticas, como verlas o actualizarlas, consulte el artículo Trabajar con etiquetas de políticas. Para consultar las prácticas recomendadas, consulta Prácticas recomendadas para usar etiquetas de política en BigQuery.

    Crear políticas de datos

    El usuario o la cuenta de servicio que cree 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 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 Administrador de Data Catalog y Lector 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, concede a los usuarios los roles de administrador de BigQuery o propietario de datos de BigQuery para asegurarte de que tienen los permisos necesarios para las rutinas y las políticas de datos.

    Puede crear hasta nueve políticas de datos para una etiqueta de política. Una de estas políticas se reserva para los ajustes de control de acceso a nivel de columna.

    Consola

    1. Abre la página Taxonomías de etiquetas de políticas en la consola deGoogle Cloud .

      Abre la página Taxonomías de etiquetas de política.

    2. Haga clic en el nombre de la taxonomía que quiera abrir.
    3. Selecciona una etiqueta de política.
    4. Haga clic en Gestionar políticas de datos.
    5. En Nombre de la política de datos, escriba el nombre que quiera asignar a la política de datos. El nombre de la política de datos debe ser único en el proyecto en el que se encuentre.
    6. En 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 que tienes los permisos bigquery.routines.get y bigquery.routines.list a nivel de proyecto.
    7. En Principal, escribe el nombre de uno o varios usuarios o grupos a los que quieras conceder acceso enmascarado a la columna. Ten en cuenta que todos los usuarios y grupos que introduzcas aquí tendrán asignado el rol Lector enmascarado de BigQuery.
    8. Haz clic en Enviar.

    API

    1. Llama al método create. Transfiere un recurso DataPolicy que cumpla los siguientes requisitos:

      • El campo dataPolicyType tiene el valor DATA_MASKING_POLICY.
      • El campo dataMaskingPolicy identifica la regla o rutina de enmascaramiento de datos que se va a usar.
      • El campo dataPolicyId proporciona un nombre para la política de datos que es único en el proyecto en el que reside la política de datos.
    2. Llama al método setIamPolicy y envía un objeto Policy. El Policy debe identificar a las entidades a las que se les concede acceso a los datos anonimizados y especificar roles/bigquerydatapolicy.maskedReader en el campo role.

    Definir etiquetas de política en columnas

    Define una política de datos en una columna adjuntando la etiqueta de política asociada a la política de datos a la columna.

    El usuario o la cuenta de servicio que define una etiqueta de política necesita los permisos datacatalog.taxonomies.get y bigquery.tables.setCategory. datacatalog.taxonomies.get se incluye en los roles Administrador de etiquetas de políticas de Data Catalog y Lector de proyectos. bigquery.tables.setCategory se incluye en los roles 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 de todos los proyectos de una organización en la consola deGoogle Cloud , los usuarios necesitan el permiso resourcemanager.organizations.get, que se incluye en el rol Lector de organización.

    Consola

    Define la etiqueta de política modificando un esquema con laGoogle Cloud consola.

    1. Abre la página de BigQuery en la Google Cloud consola.

      Ir a la página de BigQuery

    2. En el Explorador de BigQuery, busca y selecciona la tabla que quieras actualizar. Se abrirá el esquema de la tabla.

    3. Haz clic en Editar esquema.

    4. En la pantalla Esquema actual, seleccione la columna de destino y haga clic en Añadir etiqueta de política.

    5. En la pantalla Añadir una etiqueta de política, busca y selecciona la etiqueta de política que quieras aplicar a la columna.

    6. Haz clic en Seleccionar. Deberías ver una pantalla similar a esta:

      Edita el esquema.

    7. Haz clic en Guardar.

    bq

    1. 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 quieres actualizar.
      • table es el nombre de la tabla que vas a actualizar.
    2. Modifica schema.json para definir una etiqueta de política en una columna. En el valor del campo names de policyTags, usa el nombre del recurso de la 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

    Si ya tienes tablas, llama al tables.patch. Si quieres crear tablas, llama al tables.insert. Usa la propiedad schema del objeto Table que incluyas para definir una etiqueta de política en la definición de tu esquema. Consulta el esquema del ejemplo de línea de comandos para ver cómo definir una etiqueta de política.

    Cuando trabajes con una tabla, te recomendamos que uses el método tables.patch, ya que el método tables.update sustituye todo el recurso de la 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 les haya aplicado esa etiqueta de política devuelven datos enmascarados en respuesta a las consultas de los usuarios que tienen el rol Lector enmascarado.

    Para detener la aplicación del control de acceso, primero debes eliminar todas las políticas de datos asociadas a las etiquetas de política de la taxonomía. Para obtener más información, consulta Aplicar el control de acceso.

    Comprobar los permisos de gestión de identidades y accesos de una política de datos

    Para ver qué permisos tienes en una política de datos, llama al método testIamPermissions.

    Actualizar las políticas de datos

    El usuario o la cuenta de servicio que actualice una política de datos debe tener el permiso bigquery.dataPolicies.update. Si actualiza la etiqueta de política a la que está asociada la política de datos, también necesita el permiso datacatalog.taxonomies.get.

    Si vas a actualizar las entidades asociadas 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 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 Administrador de Data Catalog y Lector de Data Catalog.

    Consola

    1. Abre la página Taxonomías de etiquetas de políticas en la consola deGoogle Cloud .

      Abre la página Taxonomías de etiquetas de política.

    2. Haga clic en el nombre de la taxonomía que quiera abrir.
    3. Selecciona una etiqueta de política.
    4. Haga clic en Gestionar políticas de datos.
    5. También puedes cambiar la regla de enmascaramiento.
    6. Opcional: Añade o quita principales.
    7. Haz clic en Enviar.

    API

    Para cambiar la regla de enmascaramiento de datos, llama al método patch y envía un recurso DataPolicy con el campo dataMaskingPolicy actualizado.

    Para cambiar las entidades asociadas a una política de datos, llama al método setIamPolicy y proporciona un Policy que actualice las entidades a las que se les ha concedido acceso a los datos enmascarados.

    Eliminar políticas de datos

    El usuario o la cuenta de servicio que cree una política de datos debe tener el permiso bigquery.dataPolicies.delete. Este permiso se incluye en los roles Administrador de políticas de datos de BigQuery, Administrador de BigQuery y Propietario de datos de BigQuery.

    Consola

    1. Abre la página Taxonomías de etiquetas de políticas en la consola deGoogle Cloud .

      Abre la página Taxonomías de etiquetas de política.

    2. Haga clic en el nombre de la taxonomía que quiera abrir.
    3. Selecciona una etiqueta de política.
    4. Haga clic en Gestionar políticas de datos.
    5. Haz clic en junto a la política de datos que quieras eliminar.
    6. Haz clic en Enviar.
    7. Haz clic en Confirmar.

    API

    Para eliminar una política de datos, llama al método delete.

    Máscara de datos aplicando políticas de datos a una columna

    Como alternativa a la creación de etiquetas de política, puede crear políticas de datos y aplicarlas directamente a una columna.

    Trabajar con políticas de datos

    Puedes crear, actualizar y eliminar políticas de datos mediante la API Data Policy de BigQuery. Para aplicar una política de datos directamente a una columna, no puedes usar la página Taxonomías de etiquetas de política de la consola de Google Cloud .

    Para trabajar con políticas de datos, usa el recurso v2.projects.locations.datapolicies.

    Crear políticas de datos

    El usuario o la cuenta de servicio que cree una política de datos debe tener el permiso bigquery.dataPolicies.create.

    El permiso bigquery.dataPolicies.create se incluye en los roles 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 Administrador de Data Catalog y Lector 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, concede 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. Transfiere un recurso DataPolicy que cumpla los siguientes requisitos:

    • El campo dataPolicyType se define como DATA_MASKING_POLICY o RAW_DATA_ACCESS_POLICY.
    • El campo dataMaskingPolicy identifica la regla o rutina de enmascaramiento de datos que se va a usar.
    • El campo dataPolicyId proporciona un nombre para la política de datos que es único en el proyecto en el que reside la política de datos.

    Actualizar las políticas de datos

    El usuario o la cuenta de servicio que actualice una política de datos debe tener el permiso bigquery.dataPolicies.update.

    El permiso bigquery.dataPolicies.update se incluye en los roles 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 envía un recurso DataPolicy con el campo dataMaskingPolicy actualizado.

    También puedes conceder acceso pormenorizado a las políticas de datos.

    Los permisos para conceder acceso de control pormenorizado a las políticas de datos y para gestionar las políticas de datos son diferentes. Para controlar los permisos de control de acceso pormenorizado, debes actualizar el campo grantees de la política de datos. Para controlar el acceso a las políticas de datos, define los roles de gestión de identidades y accesos con el método setIamPolicy.

    Para definir los beneficiarios de una política de datos, usa el método v2 patch . Para gestionar los permisos de la política de datos, usa el método v1 setIamPolicy.

    Para conceder acceso de control pormenorizado a las políticas de datos, llama al método patch y proporciona un recurso DataPolicy con un campo grantees actualizado.

    Eliminar políticas de datos

    El usuario o la cuenta de servicio que cree una política de datos debe tener el permiso bigquery.dataPolicies.delete. Este permiso se incluye en los roles Administrador de políticas de datos de BigQuery, Administrador de BigQuery y Propietario de datos de BigQuery.

    Para eliminar una política de datos, llama al método delete.

    Asignar una política de datos directamente a una columna

    Puede asignar una política de datos directamente a una columna sin usar etiquetas de políticas.

    Antes de empezar

    Para obtener los permisos que necesitas para asignar una política de datos directamente a una columna, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de políticas de datos de BigQuery (roles/bigquerydatapolicy.admin) en tu tabla. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar 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 se necesitan, despliega la sección Permisos necesarios:

    Permisos obligatorios

    Para asignar una política de datos directamente a una columna, se necesitan los siguientes permisos:

    • bigquery.tables.update
    • bigquery.tables.setColumnDataPolicy
    • bigquery.dataPolicies.get

    También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

    Asignar una política de datos

    Para asignar una política de datos directamente a una columna, haz una de las siguientes acciones:

    SQL

    Para adjuntar una política de datos a una columna, usa las instrucciones de 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 definen 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 añadir una política de datos a una columna de 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

    Al asignar una política de datos directamente a una columna, se aplican las siguientes limitaciones:

    • Debes usar el recurso v2.projects.locations.datapolicies.
    • No puedes aplicar etiquetas de políticas y políticas de datos a la misma columna.
    • Puede adjuntar un máximo de ocho políticas de datos a una columna.
    • Una tabla puede hacer referencia a un máximo de 1000 políticas de datos únicas a través de sus columnas.
    • No puedes aplicar etiquetas de políticas y políticas de datos a la misma columna.
    • Una consulta puede hacer referencia a un máximo de 2000 políticas de datos.
    • Solo puede eliminar una política de datos si ninguna columna de tabla hace referencia a ella.
    • Si un usuario solo tiene el rol maskedAccess, la llamada a la API tabledata.list falla.
    • Las operaciones de copia de tablas protegidas por políticas de datos de columnas fallan 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 de columnas.
    • Las políticas de datos de columnas no están disponibles en las regiones de BigQuery Omni.
    • El SQL antiguo falla si la tabla de destino tiene políticas de datos de columna.
    • Las tareas de carga no admiten esquemas especificados por el usuario con políticas de datos de columna.
    • Si sobrescribes una tabla de destino, el sistema eliminará las etiquetas de política que haya en 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. Se trata de una limitación general del enmascaramiento de datos, no específica de las políticas de datos de columnas. El enmascaramiento de datos en columnas con particiones o clústeres puede aumentar significativamente los costes de las consultas.