1. Giới thiệu
Tiện ích bảo mật Gemini CLI là một tiện ích Gemini CLI nguồn mở do Google xây dựng, dùng để phân tích mã nhằm tìm ra các rủi ro và lỗ hổng bảo mật. Bạn có thể sử dụng tiện ích Bảo mật với Gemini CLI để xác định các vấn đề về bảo mật cục bộ, giống như cách bạn sử dụng bất kỳ tiện ích Gemini CLI nào khác. Bạn cũng có thể gọi tiện ích này để xem xét Yêu cầu kéo 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 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 Nhóm danh tính khối lượng công việc và Nhà cung cấp danh tính khối lượng công việc thay vì khoá Gemini API để 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 các quy trình đá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ữ GitHub
- Dự án trên Google Cloud
Lớp học lập trình này được thiết kế 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 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 tham khảo lớp học lập trình: Bắt đầu sử dụng các tiện ích 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 PR đối với kho lưu trữ nhằm kích hoạt việc tìm kiếm 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 bộ chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
- Đảm bảo rằng 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 bảng điều khiển Cloud.

- 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 dự án của bạn chưa được đặt, hãy sử 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 được đề xuất để xác thực từ GitHub Actions đến Google Cloud.
- Đối với mỗi quy trình làm việc chạy công việc GitHub Actions, GitHub dưới dạng Nhà cung cấp danh tính bên ngoài sẽ phát hành một JWT (Mã thông báo web JSON) đã ký. Mã thông báo này chứa các "claim" (tuyên bố) như
repository,workflow, vàjob_workflow_ref, đóng vai trò là thẻ nhận dạng 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 hành độnggoogle-github-actions/run-gemini-cli. Hành động 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 Nhóm Workload Identity và một Nhà cung cấp trong Google Cloud bằng cách đặt URL của tổ chức phát hành thành URL dịch vụ mã thông báo GitHub chính thức
https://token.actions.githubusercontent.comvà xác định "Ánh xạ thuộc tính", thường bao gồm tên kho lưu trữ và tên nhánh. Google Cloud STS xác thực JWT dựa trên các quy tắc của Workload Identity Pool. Nếu mọi thứ, bao gồm cả ánh xạ thuộc tính, đều được kiểm tra, thì STS sẽ trao đổi mã thông báo GitHub để lấy Mã thông báo truy cập liên kết Google Cloud ngắn hạn. - Giờ đây, hành động
google-github-actions/run-gemini-clitrong quy trình GitHub Actions có thể sử dụng Mã thông báo truy cập liên kết Google Cloud ngắn hạ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ụ của Google Cloud.
Lợi ích của việc sử dụng Workload Identity Federation thay vì 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á Gemini API. Việc này bao gồm việc tạo một khoá bí mật GitHub Actions mới 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 sử dụng cách này vì những lý do bảo mật sau:
- Khoá Gemini API có thể có quyền rộng rãi từ các liên kết vai trò IAM tương ứng. Khi bị xâm phạm, các khoá này sẽ mở 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 các tài khoản dịch vụ và mã thông báo truy cập ngắn hạn, giúp thắt chặt đáng kể quy trình xác thực.
- Khoá Gemini API cũng khó quản lý ở quy mô lớn. Việc xác định quy trình nào đang sử dụng một khoá bị lộ mất nhiều thời gian. Việc xoay vòng 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á các nhóm và nhà cung cấp Workload Identity được liên kết với kho lưu trữ của mình trên bảng điều khiển Cloud.
- 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àm 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 GitHub Actions mà chỉ lưu trữ các biến. Các biến này 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 mới
setup_workload_identity.shrồi 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 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ệnhymlquy trình mẫ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 vào nguồn gốc 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 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 từ 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 đề về 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ừ "Nghiêm trọng", "Cao", "Trung bình" đến "Thấp".
Sau đây là ví dụ về quy trình đánh giá bảo mật trên một PR mới và ví dụ về quy trình đánh giá bảo mật trên một PR hiện có.
6. Tìm hiểu thêm
Hãy khám phá danh sách ngày càng tăng gồm các lệnh tuỳ chỉnh có các tính 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 của bạn. 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 mới nhất và bản sửa lỗi.
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 PR để tìm rủi ro và lỗ hổng bảo mật.