Blog

So konfigurieren Sie Google Cloud Workload Identity Federation für Azure DevOps

Laurens Knoll

Laurens Knoll

Aktualisiert Oktober 15, 2025
2 Minuten

Für die Bereitstellung von Google Cloud (GCP)-Ressourcen über Azure Pipelines waren früher Schlüssel für Servicekonten erforderlich. Heute jedoch können Azure DevOps OIDC-Tokens mit Hilfe von Google Cloud Workload Identity Federation in Google-Anmeldeinformationen umgewandelt werden.

Google Cloud Workload Identitätsverbund

Externe Workloads können mithilfe der Workload-Identitätsföderation auf Google Cloud-Ressourcen zugreifen, ohne einen Service-Kontoschlüssel zu verwenden. Die Workload-Identitätsföderation folgt der OAuth 2.0 Spezifikation für den Token-Austausch. Sie übermitteln die Anmeldedaten des Workloads von Ihrem IdP an den Google Security Token Service, der die Identität der Anmeldedaten überprüft und im Gegenzug ein Token für den Verbund zurückgibt.

Azure DevOps Token

Azure Pipelines verwenden Service-Verbindungen für den Zugriff auf externe Ressourcen. Daher stellt Azure DevOps OIDC-Tokens aus, um zu beweisen, dass Sie auf eine externe Ressource zugreifen dürfen:

{
  ..
  "sub": "sc://devops-organization/devops-project/service-connection-name",
  "aud": "api://AzureADTokenExchange",
  "iss": "https://vstoken.dev.azure.com/devops-organization-id",
  ..
}

Diese Token werden von Ihrer Azure DevOps-Organisation (Konto) für einen bestimmten Zweck ausgegeben, der an die Serviceverbindung gebunden ist. Das Token ist vertrauenswürdig, da einer Azure-Pipeline der Zugriff auf die Service-Verbindung gewährt werden muss.

Tipp! Finden Sie Ihre Azure DevOps-Organisations-ID mit Hilfe der Konten-API. Sehen Sie sich dieses Beispiel an.

Azure DevOps Token zusammenführen

Der Workload Identity Pool Provider ordnet die Azure DevOps-Tokens den Google-Anmeldedaten zu:

resource "google_iam_workload_identity_pool_provider" "azure_devops_organization" {
  workload_identity_pool_id          = google_iam_workload_identity_pool.example.workload_identity_pool_id
  workload_identity_pool_provider_id = "ado-org"
  display_name                       = "ado/org"
  disabled                           = false

  attribute_mapping = {
    "google.subject" = "assertion.sub"
  }

  oidc {
    issuer_uri = "https://vstoken.dev.azure.com/00000000-0000-0000-0000-000000000000"
    allowed_audiences = [
      "api://AzureADTokenExchange"
    ]
  }
}
Das vollständige Beispiel finden Sie auf GitHub.

Damit können Sie eine Google-Anmeldung erhalten:

POST https://sts.googleapis.com/v1/token
{
  "audience": "//iam.googleapis.com/projects/0000/locations/global/workloadIdentityPools/example/providers/ado-org`,
  "grantType": "urn:ietf:params:oauth:grant-type:token-exchange",
  "requestedTokenType": "urn:ietf:params:oauth:token-type:access_token",
  "scope": "https://www.googleapis.com/auth/cloud-platform",
  "subjectTokenType": "urn:ietf:params:oauth:token-type:jwt",
  "subjectToken": "eyJ0eXAiOiJKV1Q..."
}

Sich als Dienstkonto ausgeben

Schließlich kann der Google-Berechtigungsnachweis verwendet werden, um sich als ein bestimmtes Dienstkonto auszugeben:

resource "google_service_account_iam_member" "azure_devops_workload_identity_user" {
  service_account_id = google_service_account.azure_devops_project.name
  role               = "roles/iam.workloadIdentityUser"
  member             = "principal://iam.googleapis.com/${google_iam_workload_identity_pool.azure_devops_organization.name}/subject/sc://my-organization/my-project/my-connection"
}
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/sa@project.iam.gserviceaccount.com:generateAccessToken
Authorization: "Bearer ..."
{
  "scope": "https://www.googleapis.com/auth/cloud-platform"
}

Fazit

Verwenden Sie keine Service-Kontoschlüssel mehr. Föderieren Sie Google-Anmeldeinformationen auf der Grundlage von Azure DevOps OIDC-Tokens, die Service-Verbindungen darstellen.

Bild von jacqueline macou 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.