Blog

Workload Identity Federation: Sicherer AWS-Zugang von GCP ohne Anmeldeinformationen

Bild von Dimitar Zafirov
Dimitar Zafirov
DevOps- und Cloud-Ingenieur
14.08.2025
Lesezeit: 4 Minuten.
Zuletzt aktualisiert: 22 .06.2026

Inhaltsübersicht

Workload Identity Federation (WIF) ermöglicht es Arbeitslasten, die in der Google Cloud ausgeführt werden (z. B. GKE-Pods), sicher auf AWS-Ressourcen (wie S3) zuzugreifen, ohne statische AWS-Anmeldedaten zu speichern. Anstatt langlebige Zugriffsschlüssel zu verwenden, tauschen GCP-Workloads Google-Identitäts-Tokens für temporäre AWS-Anmeldeinformationen über AWS STS (Security Token Service) aus.

  • Ein Pod, der auf Google Kubernetes Engine (GKE) läuft, muss:
  • S3-Buckets auflisten
  • Herunter-/Hochladen von Dateien auf Amazon S3

  Ohne:

  • Speichern von AWS-Anmeldeinformationen (keine aws_access_key_id oder secret_access_key in der Konfiguration)
  • Aktivieren der Workload Identity Federation in GCP
  • Erstellen Sie einen AWS IAM OIDC Provider, um GCP zu vertrauen
  • Erstellen einer AWS IAM-Rolle für GCP-Arbeitslasten
  • Erstellen eines Workload-Identitätspools in GCP
  • Einen Workload-Identitätsanbieter in GCP erstellen
  • Zuordnung des GCP-Service-Kontos zur AWS IAM-Rolle
  • Test der Authentifizierung von GCP zu AWS
Arbeitsbelastung - Identität - Verbund

Prüfen Sie, ob Workload Identity Federation aktiviert ist:

$ gcloud container clusters describe CLUSTER_NAME \

    --project=YOUR_PROJECT_ID \

    --location=GKE_REGION \

    --format="value(workloadIdentityConfig.workloadPool)"

Beispiel:

$ gcloud container clusters describe mgr-main-sbx \

    --project=mgr-product-sbx \

    --location=europe-west1 \

    --format="value(workloadIdentityConfig.workloadPool)"

Ausgabe:

mgr-product-sbx.svc.id.goog

Wenn er nicht aktiviert ist, führen Sie ihn aus:

$ gcloud container clusters update CLUSTER_NAME \

    --workload-pool=YOUR_PROJECT_ID.svc.id.goog \

    --project=YOUR_PROJECT_ID \

    --location=GKE_REGION

So erstellen Sie den Anbieter:

$ aws iam create-open-id-connect-provider \

    --url https://sts.googleapis.com \

    --client-id-list sts.amazonaws.com \

    --thumbprint-list 08745487ghdud7e7eh1f2a07e452f36f6

Überprüfen Sie, ob der OIDC-Provider erstellt wurde:

$ aws iam list-open-id-connect-providers

Erstellen Sie einen GCP Service Account (poc-gcp-to-aws-sa@mgr-product-sbx.iam.gserviceaccount.com) und erstellen Sie einen Schlüssel für diesen SA:

$ gcloud iam service-accounts create poc-gcp-to-aws-sa --project=YOUR_PROJECT_ID  --display-name="GCP to AWS Service Account"

Beispiel:

$ gcloud iam service-accounts create poc-gcp-to-aws-sa \     --project=mgr-product-sbx \     --display-name="GCP to AWS Service Account"     --role="roles/iam.serviceAccountTokenCreator"


Geben Sie SA die Berechtigung, Token zu erhalten/zu erstellen!

$ gcloud auth activate-service-account --key-file=mgr-product-sbx-24aa6b13e9a7.json

$ TOKEN=$(gcloud auth print-identity-token --impersonate-service-account=poc-gcp-to-aws-sa@mgr-product-sbx.iam.gserviceaccount.com)

$ echo $TOKEN | jq -R 'split(".") | .[1] | @base64d | fromjson'

Datei erstellen poc-trust-policy.json

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Principal": {"Federated": "accounts.google.com"},

            "Action": "sts:AssumeRoleWithWebIdentity",

            "Condition": {

                "StringEquals": {

                    "accounts.google.com:aud": "<azp-value>",

                    "accounts.google.com:oaud": "<aud-value>",

                    "accounts.google.com:sub": "<sub-value>"

                }

            }

        }

    ]

}

Für "aud", "oaud" und "sub" wird die Ausgabe von SA TOKEN verwendet.

accounts.google.com:oaud Bedingungsschlüssel stimmt mit dem Feld aud (AUDIENCE) auf dem Google-ID-Token überein.

accounts.google.com:aud Bedingungsschlüssel stimmt mit dem Feld azp (AUTHORIZED_PARTY) auf dem Google-ID-Token überein.

accounts.google.com:sub Bedingungsschlüssel stimmt mit dem Feld sub (SUBJECT) auf dem Google ID-Token überein.

Erstellen Sie die AWS-Rolle

$ aws iam create-role \

    --role-name GCPWorkloadIAMRole \

    --assume-role-policy-document file://poc-trust-policy.json

Zuweisung der Richtlinie "AmazonS3ReadOnlyAccess" zu dieser Rolle (für den späteren Test).

Konfigurieren der Workload Identity Federation

$ gcloud iam workload-identity-pools create "POOL_NAME" \

    --project=YOUR_PROJECT_ID \

    --location="global" \

    --display-name="AWS Workload Identity Pool"

Beispiel:

$ gcloud iam workload-identity-pools create "poc-aws-pool" --project=mgr-product-sbx --location="global" --display-name="AWS Workload Identity Pool"

Damit wird der Pool mit AWS verbunden.

$ gcloud iam workload-identity-pools providers create-oidc "PROVIDER_NAME" \                      

--project=PROJECT_NAME \    

--location="global" \    

--workload-identity-pool="POOL_NAME" \          

--display-name="AWS OIDC Provider" \    

--issuer-uri="https://sts.amazonaws.com" \    

--allowed-audiences="sts.amazonaws.com" \    

--attribute-mapping="google.subject=assertion.sub,google.groups=assertion.groups"

Beispiel:

$ gcloud iam workload-identity-pools providers create-oidc "aws-provider"

--project=mgr-product-sbx

--location="global"

--workload-identity-pool="poc-aws-pool"

--display-name="AWS OIDC Provider"

--issuer-uri="https://sts.amazonaws.com"

--allowed-audiences="sts.amazonaws.com"

--attribute-mapping="google.subject=assertion.sub,google.groups=assertion.groups"

Die Ausgabe wird sein:

projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/poc-aws-   pool/providers/aws-provider

Workloads erlauben, dieses Servicekonto zu übernehmen

$ gcloud iam service-accounts add-iam-policy-binding \

    poc-gcp-to-aws-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com \

    --role roles/iam.workloadIdentityUser \

    --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME/subject/arn:aws:iam::AWS_ACCOUNT_ID:role/ROLE_NAME"

Ein Beispiel:

$ gcloud iam service-accounts add-iam-policy-binding poc-gcp-to-aws-sa@mgr-product-sbx.iam.gserviceaccount.com

--role roles/iam.workloadIdentityUser

--member "principal://iam.googleapis.com/projects/960144414359/locations/global/workloadIdentityPools/poc-aws-pool/subject/arn:aws:iam::211125558983:role/GCPWorkloadIAMRole"
$ gcloud auth activate-service-account --key-file=mgr-product-sbx-e284c02e086c.json

TOKEN=$(gcloud auth print-identity-token --impersonate-service-account=poc-gcp-to-aws-sa@mgr-product-sbx.iam.gserviceaccount.com)

$ echo $TOKEN | jq -R 'split(".") | .[1] | @base64d | fromjson'

$ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::211125558983:role/GCPWorkloadIAMRole" --role-session-name "gcp-session" --web-identity-token "$TOKEN" --query 'Credentials'

Die Ausgabe sollte etwa so aussehen:

export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
export AWS_SESSION_TOKEN="YOUR_SESSION_TOKEN"

Test S3 Zugang

$ aws s3 ls

Ausgabe:

2024-11-09 07:19:45 baseline-tfstates-211125558983

2024-11-09 07:37:41 billing-export-211125558983

2024-11-20 13:12:19 gar-credential-provider-test

$ aws iam list-roles

Ausgabe:

An error occurred (AccessDenied) when calling the ListRoles operation: User: arn:aws:sts::211125558983:assumed-role/GCPWorkloadIAMRole/gcp-session is not authorized to perform: iam:ListRoles on resource: arn:aws:iam::211125558983:role/ because no identity-based policy allows the iam:ListRoles action

Dieses Setup ermöglicht GCP Workloads wie GKE-Pods sicher auf AWS zugreifen, ohne jemals langlebige Geheimnisse zu verwalten oder einzubetten. Mit Workload Identity Federation stellen Sie sicher:

  • Starke Cloud-übergreifende Identität
  • Bessere Sicherheitsvorkehrungen
  • Vereinfachter Lebenszyklus von Berechtigungsnachweisen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Compliance sollte bei der Infrastruktur ansetzen Für iGaming-Betreiber wird Compliance oft mit Audits, Dokumentation, Richtlinien und behördlichen Genehmigungen in Verbindung gebracht. Doch viele der Kontrollmaßnahmen, die zur Einhaltung der MGA-Vorschriften, der PCI-Standards … erforderlich sind,
Lesen
Die sichere Verwaltung von Geheimnissen in Kubernetes stellt eine entscheidende Herausforderung für moderne Cloud-native Umgebungen dar. Anmeldedaten für Anwendungen, Zertifikate, private Schlüssel und Passwörter müssen auf sichere und nachverfolgbare Weise verwaltet werden, ...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.