Accede a los datos de BigQuery en Power BI con la federación de identidades de personal y Microsoft Entra

En esta guía, se muestra cómo permitir que los usuarios que están en grupos de Microsoft Entra accedan a los datos de BigQuery en Power BI mediante la federación de identidades de personal.

Microsoft Entra es el proveedor de identidad (IdP). Los reclamos de grupos de Microsoft Entra se asignan a Google Cloud. Los grupos obtienen permiso de Identity and Access Management (IAM) para acceder a los datos de BigQuery.

En esta guía, se proporcionan instrucciones para Power BI Desktop o la Web.

Antes de comenzar

  1. Debes tener configurada una organización de Google Cloud.

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  3. Debes tener acceso a Microsoft Entra y Microsoft Graph.

  4. Debes tener configurado Power BI.

Roles obligatorios

En esta sección, se describen los roles que son obligatorios para los administradores y los recursos.

Roles para administradores

A fin de obtener los permisos que necesitas para configurar la federación de identidades de personal, pídele a tu administrador que te otorgue el rol de IAM Administrador de grupos de trabajadores de IAM (roles/iam.workforcePoolAdmin) en la organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

De manera alternativa, el rol básico de propietario de IAM (roles/owner) también incluye permisos para configurar la federación de identidades. No deberías otorgar funciones básicas en un entorno de producción, pero puedes otorgarlas en un entorno de desarrollo o de prueba.

Roles para identidades federadas

Power BI envía el parámetro userProject durante el intercambio de tokens. Debido a esto, debes pedirle al administrador que otorgue el rol Consumidor de Service Usage (roles/serviceusage.serviceUsageConsumer) a las identidades federadas en el proyecto de facturación.

Para otorgar el rol a un grupo de identidades federadas, ejecuta el siguiente comando:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role="roles/serviceusage.serviceUsageConsumer" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto de facturación.
  • WORKFORCE_POOL_ID: El ID del grupo de Workforce Identity.
  • GROUP_ID: Es el ID del grupo, por ejemplo, admin-group@example.com. Para ver una lista de identificadores de principal comunes, consulta Identificadores de principal.

Crea un grupo de Workforce Identity

En esta sección, se describe cómo crear el grupo de identidades de personal. Crearás el proveedor de grupos de identidades de personal más adelante en esta guía.

Console

Para crear el grupo de identidades de personal, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Grupos de identidades de personal:

    Ir a Grupos de identidades de personal

  2. Haz clic en Crear grupo y haz lo siguiente:

    1. En el campo Nombre, ingresa el nombre visible del grupo. El ID del grupo se deriva automáticamente del nombre a medida que escribes y se muestra en el campo Nombre. Para actualizar el ID del grupo, haz clic en Editar junto a él.

    2. Opcional: En Descripción, ingresa una descripción del grupo.

    3. La duración de la sesión se establece de forma predeterminada. Para ingresar una duración de la sesión personalizada, haz clic en Editar. La duración de la sesión, que determina el tiempo de acceso a los tokens de acceso de Google Cloud, las sesiones de acceso de la consola (federada) y las sesiones de acceso de la gcloud CLI de este grupo de personal son válidas. La duración debe ser superior a 15 minutos (900 s) y menor a 12 horas (43200 s). Si la duración de la sesión no se establece, el valor predeterminado es de una hora (3,600 s).

    4. Para crear el grupo en el estado habilitado, asegúrate de que la opción Grupo habilitado esté activada.

    5. Para crear el grupo de identidades de personal, haz clic en Siguiente.

gcloud

Para crear el grupo de identidades de personal, ejecuta el siguiente comando:

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --display-name="DISPLAY_NAME" \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

Reemplaza lo siguiente:

  • WORKFORCE_POOL_ID: un ID que elijas para representar el grupo de personal de Google Cloud. Para obtener información sobre el formato del ID, consulta la sección Parámetros de consulta en la documentación de la API.
  • ORGANIZATION_ID: el ID numérico de la organización de Google Cloud.
  • DISPLAY_NAME: Opcional Un nombre visible para tu grupo de identidad del personal.
  • DESCRIPTION: Opcional Una descripción del grupo de identidad del personal.
  • SESSION_DURATION: Opcional La duración de la sesión, que determina el tiempo de acceso a los tokens de acceso de Google Cloud, las sesiones de acceso de la consola (federada) y las sesiones de acceso de la gcloud CLI de este grupo de personal son válidas. La duración debe ser superior a 15 minutos (900 s) y menor a 12 horas (43200 s). Si la duración de la sesión no se establece, el valor predeterminado es de una hora (3,600 s).

Registra una nueva app de Microsoft Entra

En esta sección, se muestra cómo crear una app de Microsoft Entra con el portal de Microsoft Azure.

  1. Registra una nueva aplicación de Microsoft Entra.

  2. En la aplicación de Microsoft Entra que registraste, crea un secreto del cliente nuevo. Anota el secreto del cliente.

  3. Otorga permisos de API a tu aplicación de Microsoft Entra para que pueda acceder a la información de usuarios y grupos de Active Directory. A fin de otorgar permisos para la API de Microsoft Graph, haz lo siguiente:

    1. En tu app, selecciona Permisos de la API.
    2. En Permisos configurados, haz clic en Agregar un permiso.
    3. En el cuadro de diálogo Solicitar permisos de API, selecciona Microsoft Graph.
    4. Selecciona Permisos de aplicación.
    5. En el cuadro de diálogo Seleccionar permisos, haz lo siguiente:
      1. En el campo de búsqueda, ingresa User.ReadBasic.All.
      2. Haz clic en User.ReadBasic.All.
      3. Haz clic en Agregar permisos.
    6. En el cuadro de diálogo Solicitar permisos de API, selecciona Microsoft Graph.
    7. Selecciona Permisos de aplicación.
    8. En el cuadro de diálogo Seleccionar permisos, haz lo siguiente:
      1. En el campo de búsqueda, ingresa GroupMember.Read.All.
      2. Haz clic en GroupMember.Read.All.
      3. Haz clic en Agregar permisos.
    9. En Permisos configurados, haz clic en Otorgar consentimiento de administrador para (nombre de dominio).
    10. Cuando se te solicite confirmar, haz clic en .
  4. Para acceder a los valores que necesitas para configurar el proveedor de grupos de personal más adelante en esta guía, haz lo siguiente:

    1. Ve a la página Descripción general de la aplicación de Microsoft Entra.
    2. Haz clic en Extremos.
    3. Ten en cuenta los siguientes valores:

      • ID de cliente: Es el ID de la app de Microsoft Entra que registraste antes en esta guía.
      • Secreto de cliente: Es el secreto del cliente que generaste antes en esta guía.
      • ID de usuario: Es el ID de usuario de la app de Microsoft Entra que registraste antes en esta guía.
      • URI de la entidad emisora: Es el URI del documento de metadatos de OpenID Connect, sin /.well-known/openid-configuration. Por ejemplo, si la URL del documento de metadatos de OpenID Connect es https://login.microsoftonline.com/d41ad248-019e-49e5-b3de-4bdfe1fapple/v2.0/.well-known/openid-configuration, el URI de la entidad emisora es https://login.microsoftonline.com/d41ad248-019e-49e5-b3de-4bdfe1fapple/v2.0/.

Crea un proveedor de grupos de Workforce Identity

Para crear la política, ejecuta el siguiente comando:

gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
    --workforce-pool=WORKFORCE_POOL_ID \
    --location=global \
    --display-name=DISPLAY_NAME \
    --issuer-uri=ISSUER_URI \
    --client-id=https://analysis.windows.net/powerbi/connector/GoogleBigQuery \
    --attribute-mapping=ATTRIBUTE_MAPPING \
    --web-sso-response-type=id-token \
    --web-sso-assertion-claims-behavior=only-id-token-claims \
    --extra-attributes-issuer-uri=APP_ISSUER_URI \
    --extra-attributes-client-id=APP_CLIENT_ID \
    --extra-attributes-client-secret-value=APP_CLIENT_SECRET \
    --extra-attributes-type=azure-ad-groups-mail \
    --extra-attributes-filter=FILTER

Reemplaza lo siguiente:

  • PROVIDER_ID: un ID de proveedor único. El prefijo gcp- está reservado y no se puede usar en un ID de proveedor.
  • WORKFORCE_POOL_ID: el ID del grupo de identidades de personal al que se conecta el IdP.
  • DISPLAY_NAME: Un nombre visible opcional, fácil de usar para el proveedor.
  • ISSUER_URI: Es el valor del URI del emisor, con el formato https://sts.windows.net/TENANT_ID. Reemplaza TENANT_ID por el ID de usuario que anotaste anteriormente.
  • ATTRIBUTE_MAPPING: Es una asignación del grupo y, de manera opcional, otros atributos de la declaración de Microsoft Entra a atributos de Google Cloud, por ejemplo: google.groups=assertion.groups, google.subject=assertion.sub. Más adelante en esta guía, se le otorga acceso al grupo a los datos de BigQuery.
  • APP_ISSUER_URI: Es el URI de la entidad emisora de la aplicación de Microsoft Entra que anotaste antes.
  • APP_CLIENT_ID: Es el ID de cliente del emisor que anotaste antes.
  • APP_CLIENT_SECRET: Es el secreto del cliente del emisor que anotaste antes.
  • FILTER: Es el filtro que se usa para solicitar aserciones específicas que se pasan desde el IdP. Cuando se especifica --extra-attributes-type=azure-ad-groups-mail, --extra-attributes-filter filtra los reclamos de grupo de un usuario que se pasan desde la IdP. De forma predeterminada, se recuperan todos los grupos asociados con el usuario. Los grupos que se usan deben tener habilitadas la seguridad y el correo electrónico. Para obtener más información, consulta Usa el parámetro de consulta $search. Se puede recuperar un máximo de 100 grupos.

    En el siguiente ejemplo, se filtran los grupos asociados con las direcciones de correo electrónico de los usuarios que comienzan con gcp:

    --extra-attributes-filter='"mail:gcp"'
    En el siguiente ejemplo, se filtran los grupos asociados con usuarios que tienen direcciones de correo electrónico que comienzan con gcp y un displayName que contiene example:
    --extra-attributes-filter='"mail:gcp" AND "displayName:example"'

Crea políticas de IAM

En esta sección, crearás una política de permisos de IAM que otorga el rol de Visualizador de datos de BigQuery (roles/bigquery.dataViewer) al grupo asignado en el proyecto en el que se almacenan los datos de BigQuery. La política permite que todas las identidades que están en el grupo vean los datos de las tablas y vistas de BigQuery almacenados en el proyecto.

Para crear la política, ejecuta el siguiente comando:

gcloud projects add-iam-policy-binding BIGQUERY_PROJECT_ID \
    --role="roles/bigquery.dataViewer" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

Reemplaza lo siguiente:

  • BIGQUERY_PROJECT_ID: Es el ID del proyecto en el que se almacenan tus datos y metadatos de BigQuery.
  • WORKFORCE_POOL_ID: el ID del grupo de la identidad de personal
  • GROUP_ID: Es el grupo, por ejemplo, admin-group@example.com.

Accede a los datos de BigQuery desde Power BI Desktop

Para acceder a los datos de BigQuery desde Power BI Desktop, haz lo siguiente:

  1. Abre Power BI.
  2. Haz clic en Obtener datos.
  3. Haz clic en Base de datos.
  4. En la lista de bases de datos, selecciona Google BigQuery (ID de Microsoft Entra) (beta).
  5. Haz clic en Conectar.
  6. Completa los siguientes campos obligatorios:

    • ID del proyecto de facturación: Es el ID del proyecto de facturación.
    • URI de público: Es el URI de Google Cloud con el siguiente formato:

      //iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
      

      Reemplaza lo siguiente:

      • WORKFORCE_POOL_ID: El ID del grupo de identidades de personal.

      • PROVIDER_ID: El ID del proveedor de grupo de identidades de personal.

  7. Haz clic en Aceptar.

  8. Haz clic en Siguiente.

  9. Haz clic en Seleccionar los datos.

Si se te solicita que accedas, usa una identidad de Microsoft Entra que sea miembro del grupo.

Ahora puedes usar datos de BigQuery en Power BI Desktop.

Accede a los datos de BigQuery desde Power BI Web

Para acceder a los datos de BigQuery desde Power BI Web, haz lo siguiente:

  1. Ve a Power BI Web.

  2. Haz clic en Power Query para agregar una fuente de datos nueva.

  3. Haz clic en Obtener datos.

  4. En la lista, busca y selecciona Google BigQuery (ID de Microsoft Entra) (beta).

  5. Completa los siguientes campos obligatorios:

    • ID del proyecto de facturación: Es el proyecto de facturación de Google Cloud.

    • URI de público: Es el URI del público con el siguiente formato:

      //iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
      

      Reemplaza lo siguiente:

      • WORKFORCE_POOL_ID: el ID del grupo de Workforce Identity

      • PROVIDER_ID: El ID del proveedor del grupo de identidades de personal

  6. Haz clic en Credenciales de conexión > Tipo de autenticación.

  7. Selecciona Cuenta de organización.

  8. Haz clic en Acceder.

  9. Haz clic en Siguiente.

  10. Haz clic en Seleccionar los datos.

Ahora puedes usar datos de BigQuery en Power BI Web.

¿Qué sigue?