Bahasa Indonesia

Menjalankan pemindaian keamanan massal

Temukan repositori GitHub atau jalankan pemindaian keamanan yang dapat dilanjutkan dari inventaris CSV.

Gunakan npx @openai/codex-security bulk-scan untuk meninjau repositori dalam satu kampanye. Temukan repositori dari akun GitHub pribadi atau sebuah organisasi, atau berikan CSV yang menetapkan setiap repositori ke revisi Git yang tepat.

Memilih sumber repositori

Sumber Waktu yang tepat untuk menggunakannya
Penemuan GitHub Pilih repositori secara interaktif dari akun GitHub pribadi atau organisasi Anda.
Inventaris CSV Jalankan kampanye otomatis yang dapat diulang terhadap revisi repositori yang tepat.

Kedua alur kerja menyimpan progres, mempertahankan hasil per repositori, dan memungkinkan Anda melanjutkan kampanye setelah gangguan.

Menemukan repositori GitHub

Masuk dengan GitHub CLI:

gh auth login

Mulai pemindaian massal interaktif:

npx @openai/codex-security bulk-scan

CLI memandu Anda melalui langkah-langkah berikut:

  1. Pilih akun GitHub pribadi atau organisasi Anda.
  2. Tinjau repositori yang aktif dalam 90 hari terakhir.
  3. Cari dalam daftar repositori dan pilih repositori yang akan dipindai.
  4. Pilih direktori untuk hasil pemindaian.
  5. Tinjau repositori yang dipilih dan konfirmasikan kampanye.

Penemuan mengecualikan repositori yang diarsipkan dan fork. CLI mencatat commit cabang default yang tepat untuk setiap repositori yang dipilih dalam <output-directory>/repositories.csv. Tidak ada pemindaian yang dimulai hingga Anda mengonfirmasi pilihan.

Untuk menggunakan GitHub Enterprise Server, masuk terlebih dahulu ke host GitHub Anda:

gh auth login --hostname github.example.com

Tetapkan GH_HOST saat Anda memulai penemuan repositori:

GH_HOST=github.example.com npx @openai/codex-security bulk-scan

Penemuan interaktif memerlukan terminal. Untuk CI, kontainer, atau daftar repositori yang telah disiapkan, gunakan inventaris CSV sebagai gantinya.

Membuat CSV repositori

Buat CSV dengan satu baris untuk setiap repositori dan revisi yang ditetapkan:

id,repository,revision,scope,mode
payments,https://github.com/example/payments.git,0123456789abcdef0123456789abcdef01234567,services/api,standard
identity,https://github.com/example/identity.git,fedcba9876543210fedcba9876543210fedcba98,,deep

CSV mendukung kolom-kolom berikut:

Kolom Wajib Deskripsi
id Ya Pengidentifikasi repositori unik. Gunakan huruf, angka, titik, tanda hubung, atau garis bawah.
repository Ya URL HTTPS, URL SSH, atau path repositori lokal. Path relatif ditentukan dari direktori CSV.
revision Ya SHA commit Git lengkap sepanjang 40 atau 64 karakter. Nama cabang, tag, dan hash commit pendek tidak didukung.
scope Tidak Direktori relatif terhadap repositori yang akan dipindai. Hilangkan nilainya untuk memindai seluruh repositori.
mode Tidak standard atau deep. Hilangkan nilainya untuk menggunakan mode yang dipilih oleh perintah.

Untuk menemukan SHA commit lengkap repositori lokal, jalankan:

git -C /path/to/repository rev-parse HEAD

Menjalankan kampanye dari CSV

Berikan CSV dan direktori keluaran privat di luar repositori:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --workers 4

--workers mengontrol jumlah pemindaian repositori serentak dan memiliki nilai default 4. Gunakan --mode deep untuk memilih pemindaian mendalam bagi baris yang tidak memiliki mode sendiri. Setiap baris CSV tetap dapat memilih mode pemindaian dan cakupan repositorinya sendiri.

CLI melakukan checkout pada setiap revisi yang ditetapkan, memindai target yang dipilih, mencatat hasilnya, dan menghapus checkout repositori sementara. Repositori hanya dianggap selesai jika pemindaiannya memiliki cakupan lengkap dan semua artefak hasil yang diwajibkan tersedia.

Memilih model dan tingkat penalaran

Secara default, pemindaian massal menggunakan gpt-5.6-sol dengan tingkat penalaran xhigh. Untuk memilih model dan tingkat lain bagi kampanye CSV:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --workers 4 \
  --model gpt-5.6-terra \
  --effort high

Opsi yang sama berlaku selama penemuan repositori interaktif:

npx @openai/codex-security bulk-scan --model gpt-5.6-terra --effort high

Tingkat yang didukung adalah minimal, low, medium, high, dan xhigh.

Meninjau hasil kampanye

Direktori keluaran berisi kampanye yang ditetapkan, ledger hasil khusus-tambah, dan artefak terpisah untuk setiap repositori dan percobaan:

security-scans/
├── manifest.json
├── results.jsonl
├── checkouts/
└── artifacts/
    ├── payments/
    │   └── attempt-1/
    │       ├── scan-manifest.json
    │       ├── findings.json
    │       ├── coverage.json
    │       └── report.md
    └── identity/
        └── attempt-1/
            ├── scan-manifest.json
            ├── findings.json
            ├── coverage.json
            └── report.md
  • manifest.json mencatat repositori, revisi yang ditetapkan, cakupan, dan mode pemindaian dalam kampanye.
  • results.jsonl mencatat setiap percobaan repositori, statusnya, direktori artefak, serta detail biaya atau kesalahan yang tersedia.
  • report.md menyediakan laporan yang mudah dibaca untuk satu percobaan repositori.
  • findings.json dan coverage.json mencatat temuan dan cakupan yang ditinjau dalam percobaan tersebut.

Ekspor satu pemindaian repositori yang selesai saat Anda memerlukan hasil portabel:

npx @openai/codex-security export \
  /path/outside/repositories/security-scans/artifacts/payments/attempt-1 \
  --export-format sarif \
  --output /path/outside/repositories/payments.sarif

Hasil dapat berisi kutipan sumber dan detail kerentanan. Jaga agar direktori keluaran tetap privat, berada di luar repositori yang dipindai, dan tunduk pada kebijakan retensi yang sesuai.

Melanjutkan kampanye

Jalankan perintah asli dengan CSV dan direktori keluaran yang sama:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --workers 4

CLI melanjutkan repositori yang masih memerlukan pekerjaan. CLI hanya melewati repositori yang selesai jika tanda terima terkait dan semua artefak pemindaian yang diwajibkan masih tersedia.

Jangan mengubah inventaris repositori untuk direktori keluaran yang sudah ada. CLI memeriksa manifes yang ditetapkan dan menolak kampanye yang berbeda. Gunakan direktori keluaran baru saat Anda mengubah repositori, revisi, cakupan, atau mode pemindaian.

Mencoba kembali kesalahan repositori

Gunakan --max-attempts untuk mencoba kembali repositori setelah kesalahan checkout atau pemindaian sementara:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --workers 4 \
  --max-attempts 3

Secara default, setiap repositori memiliki satu percobaan. Setiap percobaan mendapatkan tanda terima dan direktori artefaknya sendiri.

Pemindaian massal menggunakan kode keluar berikut:

Kode keluar Arti
0 Setiap repositori berhasil diselesaikan.
2 Repositori tidak dapat diselesaikan, pemindaian memiliki cakupan tidak lengkap, atau perintah mengalami kesalahan input atau runtime.
130 Ctrl-C menghentikan kampanye.
143 SIGTERM mengakhiri kampanye.

Menjalankan pemindaian massal di Docker

Repositori Codex Security menyertakan konfigurasi Compose yang diperkuat untuk kampanye CSV otomatis pada host Docker Linux. Host harus mendukung pembuatan namespace pengguna tanpa hak istimewa.

Simpan CSV repositori, hasil pemindaian, dan status proses masuk dalam direktori terpasang yang persisten. Berikan kredensial OpenAI melalui lingkungan atau pengelola rahasia. Untuk repositori GitHub privat, berikan GH_TOKEN atau GITHUB_TOKEN dengan cara yang sama.

Jalankan image dengan CSV dan direktori keluaran yang terpasang:

docker compose run --rm codex-security \
  bulk-scan /input/repositories.csv \
  --output-dir /output \
  --workers 4

Gunakan CSV dan direktori keluaran terpasang yang sama untuk melanjutkan kampanye. Untuk GitHub Enterprise Server, tetapkan CODEX_SECURITY_GIT_HOST ke host GitHub Anda.

Untuk setiap flag yang tersedia, lihat referensi perintah pemindaian massal. Untuk pertanyaan umum tentang cakupan pemindaian dan temuan, lihat FAQ CLI.