Korzystanie z rozszerzenia zabezpieczeń interfejsu wiersza poleceń Gemini do sprawdzania żądań pull na GitHubie

1. Wprowadzenie

Dodatek do interfejsu wiersza poleceń Gemini Security to opracowany przez Google dodatek do interfejsu wiersza poleceń Gemini o otwartym kodzie źródłowym, który analizuje kod pod kątem zagrożeń i luk w zabezpieczeniach. Za pomocą dodatku Security i interfejsu wiersza poleceń Gemini możesz identyfikować problemy z bezpieczeństwem lokalnie, tak jak w przypadku każdego innego dodatku do interfejsu wiersza poleceń Gemini. Możesz też go wywołać, aby sprawdzić żądania pull na GitHubie. W tym ćwiczeniu pokażemy, jak używać dodatku Security w repozytorium GitHub.

Co zrobisz

  • Skonfigurujesz bezpieczne uwierzytelnianie z GitHuba w Google Cloud.
  • Utworzysz przepływ pracy GitHub Actions, który wywołuje dodatek do interfejsu wiersza poleceń Gemini Security.
  • Uruchomisz kontrolę bezpieczeństwa w nowym lub istniejącym żądaniu pull za pomocą GitHub Actions.

Czego się nauczysz

  • Jak używać federacji tożsamości zadań do bezpiecznego uwierzytelniania z GitHub Actions w Google Cloud.
  • Jakie są korzyści z korzystania z puli tożsamości zadań i dostawcy tożsamości do Workload Identity zamiast klucza interfejsu Gemini API do uwierzytelniania.
  • Jak przeprowadzić kontrolę bezpieczeństwa za pomocą żądań pull.
  • Jak interpretować wyniki kontroli bezpieczeństwa zwracane przez dodatek Security.

Czego potrzebujesz

  • Przeglądarka internetowa
  • Konto i repozytorium GitHub
  • Projekt Google Cloud

To ćwiczenie jest przeznaczone dla programistów, którzy znają przepływ pracy CI/CD na GitHubie. Nie musisz znać interfejsu wiersza poleceń Gemini ani jego dodatków. Jeśli chcesz dowiedzieć się, jak działają dodatki, zapoznaj się z ćwiczeniem Pierwsze kroki z dodatkami do interfejsu wiersza poleceń Gemini.

W tym ćwiczeniu dowiesz się, jak skonfigurować dodatek do interfejsu wiersza poleceń Gemini Security w repozytorium GitHub. Nie będziemy sugerować kodu, aby otworzyć żądanie pull w repozytorium i wywołać wykrycie luki w zabezpieczeniach.

2. Zanim zaczniesz

Utwórz lub wybierz projekt

  1. W konsoli Google Cloud na stronie wyboru projektu wybierz lub utwórz projekt w chmurze Google Cloud.
  2. Sprawdź, czy w projekcie w chmurze włączone są płatności. Dowiedz się, jak zweryfikować płatności.
  3. Otwórz Cloud Shell, środowisko wiersza poleceń działające w Google Cloud. Kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.

Obraz przycisku aktywowania Cloud Shell

  1. Po połączeniu z Cloud Shell sprawdź, czy masz uwierzytelnienie i czy projekt jest ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
  1. Aby sprawdzić, czy polecenie gcloud jest skonfigurowane do używania Twojego projektu, uruchom to polecenie.
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

3. Konfigurowanie uwierzytelniania z GitHuba w Google Cloud

Jak to działa

Workflow Działań na GitHubie

Federacja tożsamości zadań to zalecany sposób uwierzytelniania z GitHub Actions w Google Cloud.

  1. W przypadku każdego zadania uruchamianego w przepływie pracy GitHub Actions workflow run job, GitHub as an external Identity Provider wydaje podpisany token JWT (JSON Web Token). Ten token zawiera "deklaracje", takie jak repository, workflow, i job_workflow_ref, które działają jak cyfrowa tożsamość dla tego konkretnego modułu. W tym ćwiczeniu utworzysz przepływ pracy GitHub Actions z zadaniem, które używa działania google-github-actions/run-gemini-cli. Spowoduje to wysłanie żądania JWT do GitHuba i przesłanie tego tokena do usługi tokenów bezpieczeństwa (STS) w Google Cloud.
  2. W Google Cloud skonfigurujesz pulę tożsamości zadań i dostawcę , ustawiając adres URL wystawcy na oficjalny adres URL usługi tokenów GitHub https://token.actions.githubusercontent.com i definiując „mapowania atrybutów”, które zwykle obejmują nazwy repozytoriów i gałęzi. Usługa STS Google Cloud weryfikuje token JWT na podstawie reguł puli tożsamości zadań. Jeśli wszystko się zgadza, w tym mapowania atrybutów, usługa STS wymienia token GitHub na token dostępu sfederowanego Google Cloud o ograniczonym czasie ważności.
  3. Teraz działanie google-github-actions/run-gemini-cli w przepływie pracy GitHub Actions może używać tokena dostępu sfederowanego Google Cloud o ograniczonym czasie ważności, aby "przyjmować tożsamość" połączonego konta usługi w puli tożsamości zadań. Połączone konto usługi musi mieć odpowiednie role i uprawnienia IAM, aby uzyskać dostęp do zasobów i usług Google Cloud.

Zalety korzystania z federacji tożsamości zadań zamiast klucza interfejsu Gemini API

Wywołania interfejsu wiersza poleceń Gemini pochodzące z GitHub Actions można uwierzytelniać za pomocą klucza interfejsu Gemini API. W tym celu należy utworzyć nowy tajny klucz GitHub Actions o nazwie GEMINI_API_KEY z odpowiednią wartością klucza. Ta metoda nie jest jednak zalecana z tych powodów:

  • Klucze interfejsu Gemini API mogą mieć szerokie uprawnienia wynikające z powiązań ról IAM. W przypadku naruszenia bezpieczeństwa otwierają one dostęp do szerokiego zakresu zasobów i usług Google Cloud. Federacja tożsamości zadań korzysta z kont usług i tokenów dostępu o ograniczonym czasie ważności, co znacznie zwiększa bezpieczeństwo uwierzytelniania.
  • Zarządzanie kluczami interfejsu Gemini API na dużą skalę jest też trudne. Określenie, które przepływy pracy używają ujawnionego klucza, zajmuje czas. Ręczne obracanie kluczy również zajmuje czas. Z drugiej strony w konsoli Cloud możesz łatwo wyszukiwać, edytować i usuwać pule tożsamości zadań oraz dostawców powiązanych z repozytorium.
  • W przypadku kluczy interfejsu Gemini API musisz zawsze sprawdzać, czy nie ujawniasz ich przypadkowo w żadnych logach dostępu ani debugowania. W przypadku federacji tożsamości zadań nie przechowujesz żadnych tajnych kluczy przepływów pracy GitHub Actions, ale zmienne, które są z natury mniej wrażliwe.

Konfigurowanie GitHub Actions i Google Cloud

  1. W Cloud Shell zaloguj się na swoje konto GitHub.
gh auth login
  1. Utwórz nowy plik setup_workload_identity.sh i skopiuj do niego skrypt konfiguracji z repozytorium google-github-actions/run-gemini-cli.
  2. Ustaw skrypt jako wykonywalny.
chmod +x setup_workload_identity.sh
  1. Uruchom skrypt.
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}

4. Tworzenie przepływu pracy GitHub Actions

  1. Sprawdź repozytorium GitHub, którego jesteś właścicielem.
git clone {YOUR_REPO}
cd {YOUR REPO}
  1. Utwórz przepływ pracy GitHub Actions, który wywołuje polecenie po ukośniku /security:analyze-github-pr, kopiując przykładowy skrypt przepływu pracy yml z repozytorium /gemini-cli-extensions/security.
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. Prześlij przepływ pracy GitHub Actions do zdalnego źródła na GitHubie.
git add .github/workflows/gemini-review.yml
git commit -m "add new gha workflow"
git push --set-upstream origin workflow

5. Uruchamianie przepływu pracy analizy bezpieczeństwa w nowych i istniejących żądaniach pull

Rozpocznij nowe żądanie pull w repozytorium GitHub lub opublikuj nowy komentarz "@gemini-cli /review" jako właściciel lub współtwórca repozytorium. Spowoduje to rozpoczęcie kontroli bezpieczeństwa w żądaniu pull. Dodatek do interfejsu wiersza poleceń Gemini Security z przepływu pracy GitHub Actions, który został zatwierdzony w repozytorium, oznaczy wszystkie znalezione problemy z bezpieczeństwem według kategorii ważności: „Krytyczne”, „Wysokie”, „Średnie” i „Niskie”.

Oto przykład kontroli bezpieczeństwa w nowym żądaniu pull i przykład kontroli bezpieczeństwa w istniejącym żądaniu pull.

6. Dalsze poznawanie

Zachęcamy do zapoznania się z rosnącą listą niestandardowych poleceń z nowymi funkcjami bezpieczeństwa w dodatku do interfejsu wiersza poleceń Gemini Security i rozpoczęcia korzystania z niego w swoich przepływach pracy. Na przykład:

  • /security:scan-deps porównuje zależności projektu z OSV.dev.

Zapoznaj się też z informacjami o wersji, aby poznać najnowsze funkcje i poprawki błędów.

7. Gratulacje

Gratulacje! Udało Ci się skonfigurować repozytorium GitHub do używania dodatku do interfejsu wiersza poleceń Gemini Security do analizowania żądań pull pod kątem zagrożeń i luk w zabezpieczeniach.