Gemini CLI-Sicherheitserweiterung für GitHub-PR-Reviews verwenden

1. Einführung

Die Gemini CLI-Sicherheitserweiterung ist eine von Google entwickelte Open-Source-Gemini CLI-Erweiterung, die Code auf Sicherheitsrisiken und ‑schwachstellen analysiert. Sie können die Security-Erweiterung mit der Gemini CLI verwenden, um Sicherheitslücken lokal zu identifizieren, genau wie mit jeder anderen Gemini CLI-Erweiterung. Sie können ihn auch aufrufen, um Pull-Anfragen auf GitHub zu prüfen. In diesem Codelab erfahren Sie, wie Sie die Sicherheitserweiterung in Ihrem GitHub-Repository verwenden.

Aufgaben

  • Sichere Authentifizierung von GitHub bei Google Cloud konfigurieren
  • GitHub Actions-Workflow erstellen, der die Gemini CLI Security Extension aufruft
  • Sicherheitsüberprüfung für eine neue oder vorhandene PR mit GitHub Actions ausführen

Lerninhalte

  • Workload Identity-Föderation für die sichere Authentifizierung von GitHub Actions bei Google Cloud verwenden
  • Vorteile der Verwendung eines Workload Identity-Pools und eines Workload Identity-Anbieters anstelle eines Gemini API-Schlüssels für die Authentifizierung
  • Sicherheitsüberprüfung mit Pull-Requests durchführen
  • Sicherheitsüberprüfungen der Sicherheitserweiterung interpretieren

Voraussetzungen

  • Webbrowser
  • Ein GitHub-Konto und ein Repository
  • Ein Google Cloud-Projekt

Dieses Codelab richtet sich an Entwickler, die mit dem CI/CD-Workflow auf GitHub vertraut sind. Sie müssen sich nicht mit der Gemini CLI oder Gemini CLI-Erweiterungen auskennen. Wenn Sie mehr über die Funktionsweise von Erweiterungen erfahren möchten, sehen Sie sich das Codelab Erste Schritte mit Gemini CLI-Erweiterungen an.

In diesem Codelab erfahren Sie, wie Sie die Gemini CLI Security Extension in Ihrem GitHub-Repository einrichten. Wir schlagen keinen Code vor, mit dem Sie einen PR für Ihr Repository öffnen können, um eine Sicherheitslücke zu finden.

2. Hinweis

Projekt erstellen oder auswählen

  1. Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Informationen zum Bestätigen der Abrechnung
  3. Öffnen Sie Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren.

Bild der Schaltfläche „Cloud Shell aktivieren“

  1. Prüfen Sie nach der Verbindung mit Cloud Shell mit dem folgenden Befehl, ob Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID festgelegt ist:
gcloud auth list
  1. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass der Befehl gcloud für die Verwendung Ihres Projekts konfiguriert ist.
gcloud config list project
  1. Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

3. Authentifizierung von GitHub für Google Cloud einrichten

Funktionsweise

GitHub Actions-Workflow

Die Identitätsföderation von Arbeitslasten ist die empfohlene Methode zur Authentifizierung bei Google Cloud über GitHub Actions.

  1. Für jeden Workflow Lauf Job von GitHub Actions gibt GitHub als externer Identitätsanbieter ein signiertes JWT (JSON Web Token) aus. Dieses Token enthält „Claims“ wie repository, workflow und job_workflow_ref, die als digitaler Ausweis für den jeweiligen Läufer dienen. In diesem Lab erstellen Sie einen GitHub Actions-Workflow mit einem Job, der die Aktion google-github-actions/run-gemini-cli verwendet. Dadurch wird ein JWT von GitHub angefordert und dieses Token an den Security Token Service (STS) in Google Cloud gesendet.
  2. Sie konfigurieren einen Workload Identity-Pool und einen Anbieter in Google Cloud, indem Sie die Aussteller-URL auf die offizielle GitHub-Token-Dienst-URL https://token.actions.githubusercontent.com festlegen und Ihre Attributzuordnungen definieren, die in der Regel Repository- und Zweignamen enthalten. Google Cloud STS validiert das JWT anhand der Workload Identity-Pool-Regeln. Wenn alles, einschließlich der Attributzuordnungen, in Ordnung ist, tauscht der STS das GitHub-Token gegen ein kurzlebiges Google Cloud Federated Access Token ein.
  3. Jetzt kann die Aktion google-github-actions/run-gemini-cli in Ihrem GitHub Actions-Workflow das kurzlebige Google Cloud Federated Access Token verwenden, um die Identität eines verbundenen Dienstkontos für den Workload Identity-Pool zu übernehmen. Das verbundene Dienstkonto muss die erforderlichen IAM-Rollen und ‑Berechtigungen für den Zugriff auf Google Cloud-Ressourcen und ‑Dienste haben.

Vorteile der Verwendung der Workload Identity-Föderation gegenüber dem Gemini API-Schlüssel

Es ist möglich, Gemini CLI-Aufrufe, die von GitHub Actions stammen, mit einem Gemini API-Schlüssel zu authentifizieren. Dazu müssen Sie ein neues GitHub Actions-Secret mit dem Namen GEMINI_API_KEY mit dem entsprechenden Schlüsselwert erstellen. Aus den folgenden Sicherheitsgründen wird dies jedoch nicht empfohlen:

  • Gemini API-Schlüssel können über die entsprechenden IAM-Rollenbindungen weitreichende Berechtigungen haben. Wenn sie manipuliert werden, ermöglichen sie den Zugriff auf eine Vielzahl von Google Cloud-Ressourcen und -Diensten. Bei der Workload Identity-Föderation werden Dienstkonten und kurzlebige Zugriffstokens verwendet, was die Authentifizierung erheblich sicherer macht.
  • Auch die Verwaltung von Gemini API-Schlüsseln im großen Maßstab ist schwierig. Es dauert einige Zeit, bis Sie herausgefunden haben, welche Workflows einen offengelegten Schlüssel verwenden. Auch das manuelle Rotieren der Schlüssel kostet Zeit. Andererseits können Sie Workload Identity-Pools und ‑Anbieter, die mit Ihrem Repository verknüpft sind, ganz einfach in der Cloud Console aufrufen, bearbeiten und löschen.
  • Bei Gemini-API-Schlüsseln müssen Sie immer darauf achten, dass Sie sie nicht versehentlich in Zugriffs- oder Debugging-Logs offenlegen. Bei der Identitätsföderation von Arbeitslasten werden keine Secrets für GitHub Actions-Workflows, sondern Variablen gespeichert, die von Natur aus weniger vertraulich sind.

GitHub Actions und Google Cloud konfigurieren

  1. Melden Sie sich in Cloud Shell in Ihrem GitHub-Konto an.
gh auth login
  1. Erstellen Sie eine neue Datei setup_workload_identity.sh und kopieren Sie das Einrichtungsskript aus dem google-github-actions/run-gemini-cli-Repository.
  2. Machen Sie das Skript ausführbar.
chmod +x setup_workload_identity.sh
  1. Führen Sie das Skript aus.
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}

4. GitHub Actions-Workflow erstellen

  1. Sie können ein GitHub-Repository auschecken, das Ihnen gehört.
git clone {YOUR_REPO}
cd {YOUR REPO}
  1. Erstellen Sie einen GitHub Actions-Workflow, der den Slash-Befehl /security:analyze-github-pr aufruft, indem Sie ein Beispiel-Workflow-yml-Script aus dem /gemini-cli-extensions/security-Repository kopieren.
git checkout -b workflow
mkdir .github/ && cd .github/
mkdir workflows/ && cd workflows/
curl -L https://raw.githubusercontent.com/gemini-cli-extensions/security/refs/heads/main/.github/workflows/gemini-review.yml -o gemini-review.yml
  1. Übertragen Sie den GitHub Actions-Workflow per Push an Ihren Remote-Ursprung auf GitHub.
git add .github/workflows/gemini-review.yml
git commit -m "add new gha workflow"
git push --set-upstream origin workflow

5. Workflow für Sicherheitsanalysen für neue und vorhandene Pull-Requests ausführen

Starten Sie einen neuen PR in Ihrem GitHub-Repository oder posten Sie als Repository-Inhaber oder Mitwirkender einen neuen Kommentar @gemini-cli /review. Dadurch wird eine Sicherheitsüberprüfung des Pull-Requests gestartet. Die Gemini CLI-Sicherheitserweiterung aus dem GitHub Actions-Workflow, den Sie in Ihrem Repository committet haben, kennzeichnet alle gefundenen Sicherheitsprobleme nach Schweregradkategorien von „Kritisch“ über „Hoch“ und „Mittel“ bis „Niedrig“.

Hier finden Sie ein Beispiel für eine Sicherheitsüberprüfung eines neuen PR und ein Beispiel für eine Sicherheitsüberprüfung eines vorhandenen PR.

6. Weitere Informationen

Wir empfehlen Ihnen, die wachsende Liste benutzerdefinierter Befehle mit neuen Sicherheitsfunktionen in der Gemini CLI-Sicherheitserweiterung zu nutzen und sie in Ihren Workflows zu verwenden. Beispiel:

  • /security:scan-deps verweist auf die Abhängigkeiten Ihres Projekts in OSV.dev.

In den Versionshinweisen findest du Informationen zu den neuesten Funktionen und Fehlerkorrekturen.

7. Glückwunsch

Sie haben Ihr GitHub-Repository erfolgreich für die Verwendung der Gemini CLI Security Extension konfiguriert, um Pull-Anfragen auf Sicherheitsrisiken und ‑lücken zu analysieren.