1. Giới thiệu
Tiện ích bảo mật Gemini CLI là một tiện ích Gemini CLI mã nguồn mở do Google xây dựng, có chức năng phân tích mã để tìm ra các rủi ro và lỗ hổng bảo mật. Bạn có thể dùng tiện ích Bảo mật với Gemini CLI để xác định các vấn đề bảo mật cục bộ, giống như khi dùng bất kỳ tiện ích nào khác của Gemini CLI. Bạn cũng có thể gọi công cụ này để xem xét Yêu cầu hợp nhất trên GitHub. Trong lớp học lập trình này, chúng ta sẽ tìm hiểu cách sử dụng tiện ích Bảo mật trong kho lưu trữ GitHub.
Bạn sẽ thực hiện
- Định cấu hình quy trình xác thực an toàn từ GitHub đến Google Cloud
- Tạo quy trình GitHub Actions gọi Tiện ích bảo mật Gemini CLI
- Chạy quy trình đánh giá bảo mật trên một PR mới hoặc hiện có bằng cách sử dụng GitHub Actions
Kiến thức bạn sẽ học được
- Cách sử dụng Workload Identity Federation để xác thực an toàn từ GitHub Actions đến Google Cloud
- Tìm hiểu lợi ích của việc sử dụng Workload Identity Pool và Workload Identity Provider thay vì khoá API Gemini để xác thực
- Cách chạy quy trình đánh giá bảo mật bằng PR
- Cách diễn giải kết quả đánh giá bảo mật do tiện ích Bảo mật trả về
Bạn cần có
- Trình duyệt web
- Tài khoản và kho lưu trữ trên GitHub
- Một dự án trên Google Cloud
Lớp học lập trình này dành cho những nhà phát triển đã quen thuộc với quy trình CI/CD trên GitHub. Bạn không cần phải quen thuộc với Gemini CLI hoặc các tiện ích của Gemini CLI. Nếu bạn muốn tìm hiểu cách hoạt động của các tiện ích, hãy xem lớp học lập trình: Bắt đầu sử dụng các tiện ích của Gemini CLI.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách thiết lập Tiện ích bảo mật Gemini CLI trong kho lưu trữ GitHub. Chúng tôi sẽ không đề xuất mã để bạn mở một yêu cầu kéo đối với kho lưu trữ của mình nhằm kích hoạt việc tìm thấy lỗ hổng bảo mật.
2. Trước khi bắt đầu
Tạo hoặc chọn một dự án
- Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên đám mây.
- Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách xác minh thông tin thanh toán.
- Mở Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud. Nhấp vào Kích hoạt Cloud Shell ở đầu Cloud Console.

- Sau khi kết nối với Cloud Shell, hãy kiểm tra để đảm bảo bạn đã xác thực và dự án được đặt thành mã dự án của bạn bằng lệnh sau:
gcloud auth list
- Chạy lệnh sau để xác nhận rằng lệnh
gcloudđược định cấu hình để sử dụng dự án của bạn.
gcloud config list project
- Nếu bạn chưa đặt dự án, hãy dùng lệnh sau để đặt dự án:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}
3. Thiết lập quy trình xác thực từ GitHub đến Google Cloud
Cách hoạt động

Workload Identity Federation là cách xác thực nên dùng từ GitHub Actions đến Google Cloud.
- Đối với mỗi quy trình chạy công việc của GitHub Actions, GitHub với tư cách là một Nhà cung cấp danh tính bên ngoài sẽ phát hành một JWT (JSON Web Token) đã ký. Mã thông báo này chứa "claims" (quyền sở hữu) như
repository,workflowvàjob_workflow_ref, đóng vai trò là thẻ căn cước kỹ thuật số cho người chạy cụ thể đó. Trong phòng thí nghiệm này, bạn sẽ tạo một quy trình GitHub Actions có một công việc sử dụng thao tácgoogle-github-actions/run-gemini-cli. Thao tác này sẽ yêu cầu một JWT từ GitHub và gửi mã thông báo này đến Dịch vụ mã thông báo bảo mật (STS) trong Google Cloud. - Bạn sẽ định cấu hình một Workload Identity Pool và một Provider trong Google Cloud bằng cách đặt URL của tổ chức phát hành thành URL chính thức của dịch vụ mã thông báo GitHub
https://token.actions.githubusercontent.comvà xác định "Attribute Mappings" (Ánh xạ thuộc tính), thường bao gồm tên kho lưu trữ và tên nhánh. STS của Google Cloud xác thực JWT dựa trên các quy tắc của Nhóm Workload Identity. Nếu mọi thứ đều ổn, bao gồm cả việc ánh xạ thuộc tính, thì STS sẽ trao đổi mã thông báo GitHub để lấy Mã truy cập liên kết Google Cloud ngắn hạn. - Giờ đây, thao tác
google-github-actions/run-gemini-clitrong quy trình GitHub Actions có thể sử dụng Mã truy cập liên kết Google Cloud có thời hạn ngắn để "mạo danh" một Tài khoản dịch vụ được kết nối với Nhóm danh tính Workload Identity. Tài khoản dịch vụ được kết nối cần có các vai trò và quyền IAM cần thiết để truy cập vào mọi tài nguyên và dịch vụ trên Google Cloud.
Lợi ích của việc sử dụng Workload Identity Federation so với Khoá Gemini API
Bạn có thể xác thực các lệnh gọi Gemini CLI bắt nguồn từ GitHub Actions bằng Khoá API Gemini. Việc này bao gồm việc tạo một bí mật mới cho GitHub Actions có tên là GEMINI_API_KEY với giá trị khoá thích hợp. Tuy nhiên, bạn không nên làm như vậy vì những lý do bảo mật sau:
- Khoá API Gemini có thể có các quyền rộng rãi từ các liên kết vai trò IAM tương ứng. Khi bị xâm nhập, các khoá này sẽ mở ra quyền truy cập vào nhiều tài nguyên và dịch vụ của Google Cloud. Workload Identity Federation sử dụng tài khoản dịch vụ và mã truy cập ngắn hạn, giúp tăng cường đáng kể khả năng xác thực.
- Việc quản lý khoá Gemini API ở quy mô lớn cũng là một thách thức. Việc xác định quy trình nào đang sử dụng khoá công khai sẽ mất thời gian. Việc xoay khoá theo cách thủ công cũng mất thời gian. Mặt khác, bạn có thể dễ dàng tra cứu, chỉnh sửa và xoá Nhóm danh tính tải và nhà cung cấp được liên kết với kho lưu trữ của mình trên Cloud Console.
- Với khoá Gemini API, bạn phải luôn kiểm tra kỹ để đảm bảo rằng bạn không vô tình để lộ khoá trong bất kỳ nhật ký truy cập hoặc nhật ký gỡ lỗi nào. Với Workload Identity Federation, bạn không lưu trữ bất kỳ khoá bí mật nào của quy trình làm việc GitHub Actions mà chỉ lưu trữ các biến, vốn ít nhạy cảm hơn.
Định cấu hình GitHub Actions và Google Cloud
- Trong Cloud Shell, hãy đăng nhập vào tài khoản GitHub của bạn.
gh auth login
- Tạo một tệp
setup_workload_identity.shmới, sau đó sao chép và dán tập lệnh thiết lập từ kho lưu trữgoogle-github-actions/run-gemini-cli. - Biến tập lệnh thành một tệp thực thi.
chmod +x setup_workload_identity.sh
- Chạy tập lệnh.
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}
4. Tạo quy trình công việc GitHub Actions
- Kiểm tra một kho lưu trữ GitHub mà bạn sở hữu.
git clone {YOUR_REPO}
cd {YOUR REPO}
- Tạo một quy trình GitHub Actions gọi lệnh dấu gạch chéo
/security:analyze-github-prbằng cách sao chép một tập lệnh quy trìnhymlmẫu từ kho lưu trữ/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
- Đẩy quy trình GitHub Actions lên nguồn từ xa của bạn trên GitHub.
git add .github/workflows/gemini-review.yml
git commit -m "add new gha workflow"
git push --set-upstream origin workflow
5. Chạy quy trình phân tích bảo mật trên các PR mới và hiện có
Bắt đầu một PR mới trong kho lưu trữ GitHub của bạn hoặc đăng một bình luận mới "@gemini-cli /review" với tư cách là chủ sở hữu hoặc người đóng góp kho lưu trữ. Thao tác này sẽ bắt đầu quy trình đánh giá bảo mật trên PR. Tiện ích bảo mật Gemini CLI trong quy trình GitHub Actions mà bạn đã cam kết với kho lưu trữ sẽ gắn thẻ mọi vấn đề bảo mật mà tiện ích này tìm thấy theo các danh mục mức độ nghiêm trọng từ "Rất nghiêm trọng", "Nghiêm trọng", "Trung bình" đến "Thấp".
Sau đây là một ví dụ về quy trình đánh giá bảo mật đối với một PR mới và một ví dụ về quy trình đánh giá bảo mật đối với một PR hiện có.
6. Khám phá thêm
Bạn nên khám phá danh sách ngày càng mở rộng các lệnh tuỳ chỉnh có các chức năng bảo mật mới trong tiện ích bảo mật Gemini CLI và bắt đầu sử dụng tiện ích này trong quy trình làm việc của mình. Ví dụ:
/security:scan-depstham chiếu chéo các phần phụ thuộc của dự án với OSV.dev.
Hãy xem ghi chú phát hành để biết các tính năng và bản sửa lỗi mới nhất.
7. Xin chúc mừng
Xin chúc mừng! Bạn đã định cấu hình thành công kho lưu trữ GitHub để sử dụng Tiện ích bảo mật Gemini CLI nhằm phân tích các yêu cầu kéo để tìm rủi ro và lỗ hổng bảo mật.