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
- W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt w chmurze Google Cloud.
- Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak zweryfikować rozliczenia.
- Otwórz Cloud Shell, czyli środowisko wiersza poleceń działające w Google Cloud. Kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.

- 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
- Uruchom następujące polecenie, aby potwierdzić, że polecenie
gcloudjest skonfigurowane do używania Twojego projektu.
gcloud config list project
- 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

Federacja tożsamości zadań to zalecany sposób uwierzytelniania w Google Cloud z poziomu GitHub Actions.
- 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,workflowijob_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łaniagoogle-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. - 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.comi 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. - Teraz działanie
google-github-actions/run-gemini-cliw 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
- W Cloud Shell zaloguj się na konto GitHub.
gh auth login
- Utwórz nowy plik
setup_workload_identity.shi skopiuj oraz wklej do niego skrypt konfiguracyjny z repozytoriumgoogle-github-actions/run-gemini-cli. - Utwórz ze skryptu plik wykonywalny.
chmod +x setup_workload_identity.sh
- Uruchom skrypt.
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}
4. Tworzenie przepływu pracy Działań na GitHubie
- Sprawdź repozytorium GitHub, którego jesteś właścicielem.
git clone {YOUR_REPO}
cd {YOUR REPO}
- 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 pracyymlz 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
- 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-depsporó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.