Blog

So authentifizieren Sie sich bei Google Cloud mit OpenID Connect in Ihrer GitLab CI/CD-Pipeline

Tibor Hercz

Aktualisiert Oktober 15, 2025
4 Minuten

Verwenden Sie in Ihrem GitLab-Repository immer noch sensible Dienstkontenschlüssel? Möchten Sie die Sicherheit Ihrer CI/CD-Pipelines erhöhen? In diesem Blogbeitrag zeige ich Ihnen, wie Sie Ihre GitLab CI/CD-Pipelines bei Google Cloud mit OpenID Connect (OIDC) authentifizieren.

Durch den Einsatz von OIDC müssen Sie keine sensiblen Anmeldedaten mehr in Ihrem Repository speichern, was das Risiko eines unbefugten Zugriffs erheblich verringert. Wir zeigen Ihnen, wie Sie Google Cloud Service-Konten und Workload-Identitätspools einrichten und GitLab CI/CD für die nahtlose Authentifizierung bei Google Cloud konfigurieren.

OpenID Connect ist eine Identitätsschicht, die auf dem OAuth 2.0 Protokoll aufbaut. Sie ermöglicht es Anwendungen von Drittanbietern, die Identität von Endnutzern oder in unserem Fall eines Servicekontos in der Google Cloud zu überprüfen.

Google Cloud Service-Konto und Workload-Identität

Innerhalb von Google Cloud müssen Sie ein Servicekonto und einen Workload-Identitätspool mit einem Workload-Identitätsanbieter erstellen, um sich bei Google Cloud mit OpenID Connect zu authentifizieren.

Dieses Terraform-Projekt erklärt, wie Sie dies einrichten und die erforderlichen Google Cloud-Ressourcen erstellen.

GitLab CI/CD

Sie können die GitLab-Komponente verwenden, die Sie hier finden: GitLab CI/CD-Projekt zur Authentifizierung bei Google Cloud in Ihrer Pipeline. Oder Sie finden sie im GitLab CI/CD Catalog unter dem Namen . In der README finden Sie die Schritte zum Einrichten der GitLab-Komponente in Ihrem GitLab CI/CD.

Wenn Sie die von mir erstellte Komponente nicht verwenden möchten, können Sie den Code aus der template.yml kopieren und ihn in Ihre eigene Pipeline oder selbst verwaltete GitLab-Komponente implementieren.

Wie funktioniert die Komponente?

Die Komponente verwendet das gcloud SDK zur Authentifizierung bei Google Cloud mit OpenID Connect. Sie benötigt das Service-Konto und den Workload-Identitätspool mit Workload-Identitätsanbieter, die vom Terraform-Projekt erstellt wurden.

Der Job für die GitLab-Komponente (hier template.yml) erstellt eine gcloud-Konfigurationsdatei namens .ci_job_jwt_file. In dieser Datei werden alle für die Authentifizierung bei Google Cloud erforderlichen Variablen gespeichert. Diese Datei wird als Artefakt ausgegeben und kann im nächsten Job verwendet werden, um sich bei Google Cloud zu authentifizieren.

Die Konfiguration der Artefakte in der Datei template.yml sieht folgendermaßen aus:

  artifacts:
    expire_in: $[[ inputs.expire_in ]] seconds
    access: none
    paths:
      - $CI_PROJECT_DIR/_gcp_auth/

Um zu verhindern, dass Benutzer das Artefakt herunterladen, ist der Zugriff auf 'keine' eingestellt und kann daher von niemandem heruntergeladen werden.

Der nächste Auftrag kann zum Beispiel die gcloud-Konfigurationsdatei verwenden, um sich bei Google Cloud zu authentifizieren. Um sicherzustellen, dass der nächste Auftrag wartet, bis der Authentifizierungsauftrag beendet ist, können Sie das Schlüsselwort needs im nächsten Auftrag verwenden.

deploy:
  needs: [gcloud-auth]

Ein vollständiges GitLab CI Terraform/OpenTofu Beispiel:

Nachfolgend finden Sie ein Beispiel für eine .gitlab-ci.yml Datei, die die GitLab-Komponente und die OpenTofu-Komponente zur Authentifizierung bei Google Cloud und zur Bereitstellung eines Terraform-Projekts verwendet.

variables:
  GITLAB_TOFU_ROOT_DIR: ${CI_PROJECT_DIR}
  GITLAB_TOFU_STATE_NAME: default

include:
  - component: gitlab.com/components/opentofu/job-templates@~latest
    inputs:
      version: latest
      opentofu_version: 1.6.2
  - component: $CI_SERVER_FQDN/tiborhercz/google-oidc-auth/template@<VERSION>

plan:
  stage: deploy
  needs: [gcloud-auth]
  extends: [.opentofu:plan]
  variables:
    GOOGLE_APPLICATION_CREDENTIALS: $CI_PROJECT_DIR/_gcp_auth/.gcp_temp_cred.json

apply:
  stage: deploy
  needs: [gcloud-auth, plan]
  extends: [.opentofu:apply]
  variables:
    GOOGLE_APPLICATION_CREDENTIALS: $CI_PROJECT_DIR/_gcp_auth/.gcp_temp_cred.json
    GITLAB_TOFU_PLAN_CACHE: $GITLAB_TOFU_ROOT_DIR/plan.cache

Der Terraform-Anbieter verwendet die temporäre Anmeldedaten-Datei, die in der Variable GOOGLE_APPLICATION_CREDENTIALS gespeichert ist, um sich bei Google Cloud zu authentifizieren.

Fazit

Mit dieser Anleitung haben Sie erfolgreich gelernt, wie Sie GitLab CI/CD-Pipelines mit OpenID Connect sicher bei Google Cloud authentifizieren können. Mit diesem Ansatz müssen Sie keine sensiblen Schlüssel für Servicekonten in Ihrem GitLab-Repository speichern, was die Gesamtsicherheit erhöht und das Risiko von Zugangsdatenlecks verringert.

In diesem Blog habe ich Ihnen zwei Optionen für die Einrichtung der Authentifizierung vorgestellt: 1. Verwenden Sie die vorgefertigte GitLab-Komponente: Dies vereinfacht den Prozess, da Sie eine vorgefertigte Komponente erhalten, die Sie in Ihre Pipeline integrieren können. Eine Anleitung zur Verwendung finden Sie unter dem angegebenen Link zum GitLab-Repository. 2. Implementieren Sie den Code selbst: Wenn Sie mehr Kontrolle über den Authentifizierungsprozess wünschen, können Sie den Code aus der bereitgestellten Vorlagendatei kopieren und an Ihre speziellen Bedürfnisse anpassen.

Link zur offiziellen GitLab-Dokumentation Konfigurieren Sie OpenID Connect mit GCP Workload Identity Federation

Verfasst von

Tibor Hercz

Tibor is a Cloud Consultant specialized in AWS with a strong background in Software engineering and has a passion for Compute, Networking and Security. His goal is to create simple Cloud Solutions that increases the efficiency and overall happiness of the teams and business. Sharing knowledge is important to him, so you will see him blogging and sharing knowledge about solutions he has built.

Contact

Let’s discuss how we can support your journey.