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

1. Wprowadzenie

Rozszerzenie zabezpieczeń interfejsu wiersza poleceń Gemini 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ą rozszerzenia Security w interfejsie wiersza poleceń Gemini możesz lokalnie identyfikować problemy z bezpieczeństwem, tak jak w przypadku każdego innego dodatku do interfejsu wiersza poleceń Gemini. Możesz też używać go do sprawdzania żądań pull w GitHubie. W tym ćwiczeniu dowiesz się, jak korzystać z rozszerzenia Security w repozytorium GitHub.

Co musisz zrobić

  • Konfigurowanie bezpiecznego uwierzytelniania z GitHuba w Google Cloud
  • Tworzenie przepływu pracy GitHub Actions, który wywołuje dodatek do interfejsu wiersza poleceń Gemini Security
  • Przeprowadzanie kontroli zabezpieczeń 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
  • Poznaj korzyści korzystania z puli tożsamości zadań i dostawcy tożsamości do Workload Identity zamiast klucza interfejsu Gemini API na potrzeby uwierzytelniania.
  • Jak przeprowadzić kontrolę zabezpieczeń za pomocą żądań scalenia
  • Jak interpretować wyniki kontroli bezpieczeństwa zwracane przez rozszerzenie Security

Czego potrzebujesz

  • przeglądarki internetowej,
  • konto i repozytorium GitHub,
  • projekt Google Cloud,

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

W tym ćwiczeniu dowiesz się, jak skonfigurować rozszerzenie zabezpieczeń interfejsu wiersza poleceń Gemini w repozytorium GitHub. Nie będziemy sugerować kodu, który pozwoli Ci otworzyć żądanie pull w Twoim repozytorium, aby wywołać wykrycie luki w zabezpieczeniach.

2. Zanim zaczniesz

Utwórz lub wybierz projekt

  1. W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt w chmurze Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak zweryfikować rozliczenia.
  3. Otwórz Cloud Shell, czyli ś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 uwierzytelnianie zostało przeprowadzone, a projekt jest ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
  1. Uruchom następujące polecenie, aby potwierdzić, że polecenie gcloud jest skonfigurowane do używania Twojego projektu.
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

Przepływ pracy Działań na GitHubie

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

  1. W przypadku każdego przepływu pracy uruchomionego zadania w ramach Działań na GitHubie GitHub jako zewnętrzny dostawca tożsamości wydaje podpisany token JWT (token sieciowy JSON). Ten token zawiera „deklaracje”, takie jak repository, workflowjob_workflow_ref, które działają jak cyfrowy dowód tożsamości danego biegacza. W tym module utworzysz przepływ pracy GitHub Actions z zadaniem, które korzysta z działania google-github-actions/run-gemini-cli. To działanie wyśle do GitHuba żądanie tokena JWT i prześle ten token do usługi Security Token Service (STS) w Google Cloud.
  2. W Google Cloud skonfigurujesz pulę tożsamości zadań i aprowizatora, 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 repozytorium i gałęzi. Usługa Google Cloud STS weryfikuje 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 krótkotrwały token dostępu federacyjnego Google Cloud.
  3. Teraz działanie google-github-actions/run-gemini-cli w przepływie pracy GitHub Actions może używać krótkotrwałego tokena dostępu sfederowanego Google Cloud, aby „przyjmować tożsamość” połączonego konta usługi w puli tożsamości zadań. Połączone konto usługi musi mieć niezbędne role uprawnień i uprawnienia dostępu do wszystkich 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. Wymaga to utworzenia nowego tajnego klucza GitHub Actions o nazwie GEMINI_API_KEY z odpowiednią wartością klucza. Nie jest to jednak zalecane z tych powodów:

  • Klucze interfejsu Gemini API mogą mieć szerokie uprawnienia wynikające z powiązań z odpowiednimi rolami IAM. W przypadku naruszenia bezpieczeństwa umożliwiają one dostęp do szerokiej gamy zasobów i usług Google Cloud. Federacja tożsamości zadań korzysta z kont usługi i tokenów dostępu o ograniczonym czasie ważności, co znacznie zwiększa bezpieczeństwo autoryzacji.
  • Klucze interfejsu Gemini API są też trudne do zarządzania na dużą skalę. Określenie, które przepływy pracy używają ujawnionego klucza, zajmuje trochę czasu. Ręczne rotowanie 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 Twoim repozytorium.
  • W przypadku kluczy interfejsu Gemini API musisz zawsze sprawdzać, czy nie zostały przypadkowo ujawnione w logach dostępu lub debugowania. Dzięki federacji tożsamości zadań nie musisz przechowywać żadnych tajnych danych przepływów pracy GitHub Actions, tylko zmienne, które są z natury mniej wrażliwe.

Konfigurowanie działań na GitHubie i Google Cloud

  1. W Cloud Shell zaloguj się na konto GitHub.
gh auth login
  1. Utwórz nowy pliksetup_workload_identity.sh i skopiuj oraz wklej do niego skrypt konfiguracyjny z repozytorium google-github-actions/run-gemini-cli.
  2. Utwórz ze skryptu plik 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 Działań na GitHubie

  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 Działań na GitHubie do zdalnego źródła w 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 zabezpieczeń w przypadku nowych i dotychczasowych żądań scalenia

Utwórz 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 sprawdzania bezpieczeństwa w przypadku żądania pull request. Rozszerzenie zabezpieczeń interfejsu wiersza poleceń Gemini z przepływu pracy GitHub Actions, który został zatwierdzony w repozytorium, będzie oznaczać wszelkie znalezione problemy dotyczące bezpieczeństwa kategoriami ważności od „Krytyczny”, „Wysoki”, „Średni” do „Niski”.

Oto przykład oceny bezpieczeństwa w przypadku nowej prośby o scalenie i przykład oceny bezpieczeństwa w przypadku istniejącej prośby o scalenie.

6. Dalsze odkrywanie

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

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

Najnowsze funkcje i poprawki błędów znajdziesz w informacjach o wersji.

7. Gratulacje

Gratulacje! Udało Ci się skonfigurować repozytorium GitHub do korzystania z rozszerzenia zabezpieczeń interfejsu wiersza poleceń Gemini w celu analizowania żądań pull pod kątem zagrożeń i luk w zabezpieczeniach.