Blog

So konfigurieren Sie Workforce Identity Federation mit Entra ID unter Verwendung von Terraform

Laurens Knoll

Laurens Knoll

Aktualisiert Oktober 15, 2025
4 Minuten

Dieser Blog zeigt Ihnen, wie Sie eine OpenID Connect-basierte Workforce Identity Federation mit Microsoft Entra ID unter Verwendung von Terraform konfigurieren. Dieser Blog ergänzt die von Google Cloud bereitgestellten Anleitungen Console und gcloud.

Finden Sie die Beispiele auf GitHub

Workforce Identity Federation

Workforce Identity Federation ermöglicht es Nutzern, sich mit ihren Entra ID-Anmeldeinformationen bei Google Cloud anzumelden, ohne Nutzer in Cloud Identity einzurichten. Der Nutzer wird durch eine föderierte Anmeldedaten wie principal://iam.googleapis.com/locations/global/workforcePools/xebia/subject/f46266f9-fe00-4c0f-abd0-4be85e79bcbarepräsentiert.

Sie kontrollieren die tatsächliche Zuordnung des ID-Token-Attributs. Es steht Ihnen daher frei, das Attribut dem Attribut zuzuordnen, um menschenlesbare IAM-Principals bereitzustellen: . Beachten Sie die Sicherheitsaspekte bei der Verwendung dieser Felder.

Um Anmeldedaten zu föderieren, werden die folgenden Ressourcen erstellt: - Entra ID-Anwendung (Anwendungsregistrierung + Unternehmensanwendung), um ID-Tokens bereitzustellen - Google Cloud Workforce Identity Pool + Provider, um Ihre Google Cloud-Organisation mit Ihrem Entra ID-Verzeichnis zu verknüpfen - Google Cloud IAM-Richtlinien, um Berechtigungen für föderierte Anmeldeinformationen zu erteilen

Erstellen Sie die Entra ID-Anwendung zur Bereitstellung von ID-Tokens

Zunächst wird die Entra ID-Anwendung so eingerichtet, dass sie ID-Tokens für den Google Cloud Workforce Identity Federation Pool Provider bereitstellt.

resource "azuread_application" "workforce_identity_federation" {
  display_name     = "Google Workforce Identity Federation"
  ..
  web {
    implicit_grant {
      id_token_issuance_enabled = true
    }
  }
  ..
}

resource "azuread_application_redirect_uris" "workforce_identity_federation_web" {
  application_id = azuread_application.workforce_identity_federation.id
  type           = "Web"
  redirect_uris  = ["https://auth.cloud.google/signin-callback/${google_iam_workforce_pool_provider.example_oidc_code.name}"]
}

Zweitens wird die Anwendung so konfiguriert, dass sie die angeforderten Standardbereiche enthält: openid, email und profile.

resource "azuread_application_api_access" "workforce_identity_federation" {
  application_id = azuread_application.workforce_identity_federation.id
  api_client_id  = data.azuread_application_published_app_ids.well_known.result["MicrosoftGraph"]

  scope_ids = [
    data.azuread_service_principal.msgraph.oauth2_permission_scope_ids["openid"],
    data.azuread_service_principal.msgraph.oauth2_permission_scope_ids["email"],
    data.azuread_service_principal.msgraph.oauth2_permission_scope_ids["profile"],
  ]
}

Optional kann die Anwendung so konfiguriert werden, dass sie Gruppenmitgliedschaften enthält.

resource "azuread_application" "workforce_identity_federation" {
  display_name     = "Google Workforce Identity Federation"
  ..
  group_membership_claims = ["SecurityGroup"]
  optional_claims {
    id_token {
      name = "groups"
    }
  }
  ..
}

Schließlich wird ein Client-Geheimnis konfiguriert, um den Autorisierungscodefluss zu unterstützen. Beachten Sie, dass dieses Geheimnis standardmäßig nach 2 Jahren abläuft.

resource "azuread_application_password" "workforce_identity_federation" {
  application_id = azuread_application.workforce_identity_federation.id
  rotate_when_changed = {
    secret_version = "v1"
  }
}

Verknüpfen Sie Google Cloud mit Ihrem Entra ID Verzeichnis

Zunächst wird der Workforce Identity Federation Provider mit der Microsoft Entra ID-Anwendung über den Autorisierungscodefluss verbunden.

resource "google_iam_workforce_pool_provider" "example_oidc_code" {
  workforce_pool_id = google_iam_workforce_pool.example_oidc.workforce_pool_id
  location          = "global"
  provider_id       = "code"
  ..
  oidc {
    issuer_uri = "https://login.microsoftonline.com/${var.tenant_id}/v2.0"
    client_id  = azuread_application.workforce_identity_federation.client_id

    client_secret {
      value {
        plain_text = azuread_application_password.workforce_identity_federation.value
      }
    }

    web_sso_config {
      response_type             = "CODE"
      assertion_claims_behavior = "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS"
    }
  }
  ..
}
Workforce Identity Federation unterstützt sowohl den Autorisierungscodefluss als auch den impliziten Fluss. Der Autorisierungscodefluss gilt als am sichersten, da die Token in einer separaten, sicheren Backend-Transaktion zurückgegeben werden und nicht über den Browser. Daher können die über den Autorisierungscode ausgetauschten ID-Tokens eine beliebige Größe haben, während beim impliziten Fluss die Größenbeschränkungen der Browser-URL ins Spiel kommen. Beachten Sie, dass der Autorisierungscodefluss ein Client-Geheimnis verwendet, das Sie regelmäßig ändern müssen.

Schließlich werden die ID-Token-Attribute mithilfe der von Google empfohlenen Zuordnung auf die föderierten Google-Anmeldeinformationen abgebildet.

resource "google_iam_workforce_pool_provider" "example_oidc_code" {
  workforce_pool_id = google_iam_workforce_pool.example_oidc.workforce_pool_id
  location          = "global"
  provider_id       = "code"
  ..
  attribute_mapping = {
    "google.subject"      = "assertion.sub"
    "google.display_name" = "assertion.preferred_username"
    "google.groups"       = "assertion.groups"
  }
  ..
}
Sind Sie unsicher, welche Attributwerte Sie verwenden sollen? Fordern Sie ein Beispiel-Token an, indem Sie den OIDC Debugger - oder ein ähnliches Programm - verwenden, um die Attribute zu untersuchen.

Erteilen Sie föderierten Nutzern Google Cloud Berechtigungen

Schließlich erteilen Sie Ihren föderierten Nutzern Google Cloud-Berechtigungen unter Verwendung der principal:// und principalSet:// Hauptkennung.

# All identities in workforce identity pool can browse the organization resource hierarchy
resource "google_organization_iam_member" "organization_browser_example_oidc" {
  org_id = var.organization_id
  role   = "roles/browser"
  member = "principalSet://iam.googleapis.com/${google_iam_workforce_pool.example_oidc.name}/*"
}

# Specific user can manage buckets in project
resource "google_project_iam_member" "project_storage_admin_example_oidc_user_x" {
  project = var.project_id
  role    = "roles/storage.admin"
  member  = "principal://iam.googleapis.com/${google_iam_workforce_pool.example_oidc.name}/subject/f46266f9-fe00-4c0f-abd0-4be85e79bcba"
}

Fazit

Workforce Identity Federation ist ein vielversprechender Dienst zur Vereinfachung der Identitätsverwaltung. Der Dienst bietet viele Optionen, die zuverlässig als Code mit Terraform verwaltet werden. Nutzen Sie die Beispiele, um mit der Einrichtung zu beginnen und das Identitätsmanagement in Ihrem Unternehmen zu vereinfachen.

Bild von Alexa aus Pixabay

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.

Contact

Let’s discuss how we can support your journey.