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
- W konsoli Google Cloud na stronie wyboru projektu wybierz lub utwórz projekt w chmurze Google Cloud.
- Sprawdź, czy w projekcie w chmurze włączone są płatności. Dowiedz się, jak zweryfikować płatności.
- Otwórz Cloud Shell, ś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 masz uwierzytelnienie i czy projekt jest ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
- Aby sprawdzić, czy polecenie
gcloudjest skonfigurowane do używania Twojego projektu, uruchom to polecenie.
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 z GitHub Actions w Google Cloud.
- 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, ijob_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łaniagoogle-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. - 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.comi 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. - Teraz działanie
google-github-actions/run-gemini-cliw 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
- W Cloud Shell zaloguj się na swoje konto GitHub.
gh auth login
- Utwórz nowy plik
setup_workload_identity.shi skopiuj do niego skrypt konfiguracji z repozytoriumgoogle-github-actions/run-gemini-cli. - Ustaw skrypt jako 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 GitHub Actions
- 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 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-depsporó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.