Blog
So konfigurieren Sie den Google BigQuery (Microsoft Entra ID) Power BI Connector mit Terraform

Der Google BigQuery (Microsoft Entra ID) Connector ermöglicht Ihnen die Abfrage von BigQuery-Daten mit Power BI unter Verwendung Ihrer Microsoft-Anmeldeinformationen. Der Konnektor stützt sich auf die Google Workforce Identity Federation, um Ihre Microsoft-Anmeldeinformationen in eine Google-Anmeldeinformation umzuwandeln.
Dieser Blog zeigt, wie Sie den Connector mit Terraform einrichten. Er ergänzt damit die konsolenbasierte Anleitung zur Einrichtung.
Finden Sie das vollständige Beispiel auf GitHub
Abfrage von BigQuery mit Power BI
Ihr Nutzer meldet sich bei Power BI an und öffnet einen Bericht mit einem BigQuery-basierten Modell. Power BI tauscht automatisch die Microsoft-Anmeldeinformationen Ihres Nutzers gegen eine Google Cloud-Anmeldeinformation aus. Schließlich fragt Power BI das Modell ab und Ihr Nutzer sieht die Daten.
Power BI weiß, wie das geht, denn das semantische Modell ist mit dem Pool-Anbieter Google Workforce Identity Federation, dem Googla-Quota-Projekt und dem BigQuery-Datensatz verbunden.
Schaffen Sie die unterstützende Infrastruktur
Zunächst wird der Workforce Identity Pool mit Ihrem Microsoft Entra ID-Tenant verknüpft.
resource "google_iam_workforce_pool" "example_power_bi" {
parent = var.organization_id
location = "global"
workforce_pool_id = "example-pbi"
}
resource "google_iam_workforce_pool_provider" "example_power_bi" {
workforce_pool_id = google_iam_workforce_pool.example_power_bi.workforce_pool_id
location = "global"
provider_id = "aad"
attribute_mapping = {
"google.subject" = "assertion.sub" # Use 'sub' to bind to id composed of application and directory
"google.groups" = "assertion.groups" # Store 'groups' for groups IAM expressions
}
oidc {
issuer_uri = "https://sts.windows.net/${var.tenant_id}/"
client_id = "https://analysis.windows.net/powerbi/connector/GoogleBigQuery"
web_sso_config {
response_type = "ID_TOKEN"
assertion_claims_behavior = "ONLY_ID_TOKEN_CLAIMS"
}
}
extra_attributes_oauth2_client {
issuer_uri = "https://login.microsoftonline.com/${var.tenant_id}/v2.0/"
client_id = azuread_application.power_bi_connector_bigquery_aad.client_id
client_secret {
value {
plain_text = azuread_application_password.power_bi_connector_bigquery_aad.value
}
}
attributes_type = "AZURE_AD_GROUPS_MAIL"
}
}
Zweitens wird eine Entra ID-Anwendung registriert, die es Google Cloud ermöglicht, (E-Mail-aktivierte Sicherheits-) Gruppenmitgliedschaften zu lesen.
resource "azuread_application" "power_bi_connector_bigquery_aad" {
display_name = "PowerBI BigQuery SSO connector"
owners = [data.azuread_client_config.current.object_id]
lifecycle {
ignore_changes = [
password, # managed using azuread_application_password.power_bi_connector_bigquery_aad
required_resource_access, # managed using azuread_application_api_access.power_bi_connector_bigquery_aad
]
}
}
resource "azuread_service_principal" "power_bi_connector_bigquery_aad" {
client_id = azuread_application.power_bi_connector_bigquery_aad.client_id
app_role_assignment_required = false
owners = [data.azuread_client_config.current.object_id]
}
resource "azuread_app_role_assignment" "power_bi_connector_bigquery_aad" {
for_each = toset(["GroupMember.Read.All","User.ReadBasic.All"])
principal_object_id = azuread_service_principal.power_bi_connector_bigquery_aad.object_id
resource_object_id = data.azuread_service_principal.msgraph.object_id
app_role_id = data.azuread_service_principal.msgraph.app_role_ids[each.key]
}
Schließlich erhalten die Verbundanmeldeinformationen die Berechtigung, Abfragen durchzuführen.
resource "google_project_iam_member" "example_power_bi_serviceusage_serviceusageconsumer" {
project = var.project_id
role = "roles/serviceusage.serviceUsageConsumer"
member = "principalSet://iam.googleapis.com/${google_iam_workforce_pool.example_power_bi.name}/*"
}
resource "google_project_iam_member" "example_power_bi_bigquery_jobuser" {
project = var.project_id
role = "roles/bigquery.jobUser"
member = "principalSet://iam.googleapis.com/${google_iam_workforce_pool.example_power_bi.name}/*"
}
Stellen Sie sicher, dass die erforderlichen APIs für die Ausführung von BigQuery-Abfragen aktiviert sind.
resource "google_project_service" "power_bi_connector_bigquery_aad" {
for_each = toset(["bigquery.googleapis.com","cloudresourcemanager.googleapis.com","bigquerystorage.googleapis.com"])
project = var.project_id
service = each.key
}
Konfigurieren Sie das semantische Modell
Fazit
Verfasst von
Laurens Knoll
As a cloud consultant I enjoy improving what your company does best. I enable your business using cloud technology and enable your engineers by applying software engineering practices to your infrastructure domain.
Unsere Ideen
Weitere Blogs
Contact



