Skip to main content

Konfigurieren von OpenID Connect in Google Cloud Platform

Verwende OpenID Connect in deinen Workflows zum Authentifizieren bei Google Cloud Platform.

Übersicht

OpenID Connect (OIDC) ermöglicht deinen GitHub Actions-Workflows den Zugriff auf Ressourcen in Google Cloud Platform (GCP), ohne dass die GCP-Anmeldeinformationen als langlebige GitHub-Geheimnisse gespeichert werden müssen.

Dieser Leitfaden gibt einen Überblick über die Konfiguration von GCP, um von GitHub als Verbundidentität zu vertrauen, und enthält ein Workflowbeispiel für die google-github-actions/auth-Aktion, die Token zur Authentifizierung bei GCP und zum Zugriff auf Ressourcen verwendet.

Voraussetzungen

  • Informationen zu den grundlegenden Konzepten, nach denen GitHub OpenID Connect (OIDC) und seine Architektur und Vorteile verwendet, findest du unter Informationen zur Sicherheitshärtung mit OpenID Connect.

  • Bevor du fortfährst, musst du deine Sicherheitsstrategie planen, um sicherzustellen, dass Zugriffs-Token nur auf vorhersehbare Weise zugewiesen werden. Zur Steuerung, wie dein Cloud-Anbieter Zugriffs-Token ausgibt, musst du mindestens eine Bedingung definieren, damit nicht vertrauenswürdige Repositorys keine Zugriffs-Token für deine Cloud-Ressourcen anfordern können. Weitere Informationen findest du unter „Konfigurieren der OIDC-Vertrauensstellung mit der Cloud“.

Hinzufügen eines Google Cloud-Workloadidentitätsanbieters

Um den OIDC-Identitätsanbieter in GCP zu konfigurieren, musst du die folgende Konfiguration ausführen. Anweisungen zum Vornehmen dieser Änderungen findest du in der GCP-Dokumentation.

  1. Erstelle einen neuen Identitätspool.
  2. Konfiguriere die Zuordnung, und füge Bedingungen hinzu.
  3. Verbinde den neuen Pool mit einem Dienstkonto.

Weitere Anleitungen zum Konfigurieren des Identitätsanbieters:

Aktualisieren deines GitHub Actions-Workflows

Um deine Workflows für OIDC zu aktualisieren, musst du zwei Änderungen an deinen YAML-Daten vornehmen:

  1. Füge Berechtigungseinstellungen für das Token hinzu.
  2. Tausche mit der google-github-actions/auth-Aktion das OIDC-Token (JWT) gegen ein Cloudzugriffstoken aus.

Hinzufügen von Berechtigungseinstellungen

 Der Auftrag oder die Workflowausführung erfordert eine Einstellung permissions mit id-token: write. Du kannst das OIDC JWT-ID-Token nicht anfordern, wenn die Einstellung permissions für id-token auf read oder none festgelegt ist.

Mit der Einstellung id-token: write kann der JWT von GitHub-OIDC-Anbieter mit einer der folgenden Ansätze angefordert werden:

  • Verwenden von Umgebungsvariablen auf dem Runner (ACTIONS_ID_TOKEN_REQUEST_URL und ACTIONS_ID_TOKEN_REQUEST_TOKEN).
  • Verwenden von getIDToken() aus dem Actions-Toolkit.

Wenn du ein OIDC-Token für einen Workflow abrufen musst, können die Berechtigungen auf Workflowebene festgelegt werden. Beispiel:

YAML
permissions:
  id-token: write # This is required for requesting the JWT
  contents: read  # This is required for actions/checkout

Wenn Du nur ein OIDC-Token für einen einzelnen Auftrag abrufen musst, kann diese Berechtigung innerhalb dieses Auftrags festgelegt werden. Beispiel:

YAML
permissions:
  id-token: write # This is required for requesting the JWT

Möglicherweise musst Du hier zusätzliche Berechtigungen angeben, abhängig von den Anforderungen Deines Workflows.

Anfordern des Zugriffstokens

Die google-github-actions/auth Aktion empfängt ein JWT vom GitHub-OIDC-Anbieter und fordert dann ein Zugriffstoken von GCP an. Weitere Informationen findest du in der GCP-Dokumentation.

In diesem Beispiel ist ein Auftrag namens Get_OIDC_ID_token vorhanden, der Aktionen verwendet, um eine Liste der Dienste von GCP anzufordern.

  • <example-workload-identity-provider>: Ersetze diese Angabe durch den Pfad zu deinem Identitätsanbieter in GCP. Zum Beispiel, projects/<example-project-id>/locations/global/workloadIdentityPools/<name-of-pool/providers/<name-of-provider>
  • <example-service-account>: Ersetze diese Angabe durch den Namen deines Dienstkontos in GCP.
  • <project-id>: Ersetze diese Angabe durch die ID deines GCP-Projekts.

Diese Aktion tauscht ein GitHub-OIDC-Token gegen ein Google Cloud-Zugangstoken unter Verwendung von Workloadidentitätsverbund.

YAML
name: List services in GCP
on:
  pull_request:
    branches:
      - main

permissions:
  id-token: write

jobs:
  Get_OIDC_ID_token:
    runs-on: ubuntu-latest
    steps:
    - id: 'auth'
      name: 'Authenticate to GCP'
      uses: 'google-github-actions/auth@v0.3.1'
      with:
          create_credentials_file: 'true'
          workload_identity_provider: '<example-workload-identity-provider>'
          service_account: '<example-service-account>'
    - id: 'gcloud'
      name: 'gcloud'
      run: |-
        gcloud auth login --brief --cred-file="${{ steps.auth.outputs.credentials_file_path }}"
        gcloud services list