Toplu güvenlik taramaları çalıştırma

GitHub depolarını keşfedin veya bir CSV envanterinden devam ettirilebilir güvenlik taramaları çalıştırın.

Depoları tek bir kampanyada incelemek için npx @openai/codex-security bulk-scan kullanın. Kişisel GitHub hesabınızdan veya bir kuruluştan depoları keşfedin ya da her depoyu belirli bir Git revizyonuna sabitleyen bir CSV sağlayın.

Depo kaynağı seçme

Kaynak Ne zaman kullanılmalı
GitHub keşfi Kişisel GitHub hesabınızdan veya bir kuruluştan depoları etkileşimli olarak seçin.
CSV envanteri Tam depo revizyonlarına yönelik tekrarlanabilir ve otomatik bir kampanya çalıştırın.

Her iki iş akışı da ilerlemeyi kaydeder, depo başına sonuçları korur ve bir kesintiden sonra kampanyayı sürdürmenize olanak tanır.

GitHub depolarını keşfetme

GitHub CLI ile oturum açın:

gh auth login

Etkileşimli bir toplu tarama başlatın:

npx @openai/codex-security bulk-scan

CLI, aşağıdaki adımlarda size yol gösterir:

  1. Kişisel GitHub hesabınızı veya bir kuruluşu seçin.
  2. Son 90 gün içinde etkin olan depoları inceleyin.
  3. Depo listesinde arama yapın ve taranacak depoları seçin.
  4. Tarama sonuçları için bir dizin seçin.
  5. Seçilen depoları inceleyin ve kampanyayı onaylayın.

Keşif, arşivlenmiş depoları ve çatalları hariç tutar. CLI, seçilen her depo için varsayılan dalın tam commit değerini <output-directory>/repositories.csv içinde kaydeder. Siz seçimi onaylayana kadar hiçbir tarama başlamaz.

GitHub Enterprise Server kullanmak için önce GitHub ana makinenizde oturum açın:

gh auth login --hostname github.example.com

Depo keşfini başlatırken GH_HOST değerini ayarlayın:

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

Etkileşimli keşif için bir terminal gerekir. CI, container'lar veya hazırlanmış bir depo listesi için bunun yerine CSV envanteri kullanın.

Depo CSV'si oluşturma

Her depo ve sabitlenmiş revizyon için bir satır içeren bir CSV oluşturun:

id,repository,revision,scope,mode,prompt
payments,https://github.com/example/payments.git,0123456789abcdef0123456789abcdef01234567,services/api,standard,Review payment authorization and refunds.
identity,https://github.com/example/identity.git,fedcba9876543210fedcba9876543210fedcba98,,deep,Review session and identity boundaries.

CSV şu sütunları destekler:

Sütun Zorunlu Açıklama
id Evet Benzersiz depo tanımlayıcısı. Harf, rakam, nokta, kısa çizgi veya alt çizgi kullanın.
repository Evet HTTPS URL'si, SSH URL'si veya yerel depo yolu. Göreli yollar CSV dizinine göre çözümlenir.
revision Evet 40 veya 64 karakterlik tam Git commit SHA'sı. Dal adları, etiketler ve kısaltılmış commit karmaları desteklenmez.
scope Hayır Taranacak, depoya göreli bir dizin. Deponun tamamını taramak için değeri belirtmeyin.
mode Hayır standard veya deep. Komutta seçilen modu kullanmak için değeri belirtmeyin.
prompt Hayır Bu depoya özgü tarama talimatları.

Yerel bir deponun tam commit SHA'sını bulmak için şunu çalıştırın:

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

CSV'den kampanya çalıştırma

CSV'yi ve depoların dışında bulunan özel bir çıktı dizinini iletin:

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

--workers eşzamanlı depo taramalarını denetler ve varsayılan değeri 4 olur. Bu, her derin taramadaki bağımsız standart tarama çalışanlarının sayısını ayarlamaz; bu sınırları [deep_scan] üzerinden yapılandırın. Kendi mode değeri olmayan satırlar için derin taramayı seçmek üzere --mode deep kullanın. Her CSV satırı yine de kendi tarama modunu ve depo kapsamını seçebilir.

Kampanyadaki her derin tarama için çalışan yürütmesini sınırlamak üzere [deep_scan].max_time_hours değerini ayarlayın. --max-time-hours bayrağı scan ile çalışır, bulk-scan ile değil.

CLI, sabitlenmiş her revizyonu kullanıma alır, seçilen hedefi tarar, sonucu kaydeder ve deponun geçici çalışma kopyasını kaldırır. Bir depo, taramasının bildirim durumu completed olduğunda ve gerekli sonuç çıktıları geçerli olduğunda tamamlanmış sayılır. Kapsam boşlukları taramayı başarısız kılmaz.

Güvenlik bağlamını ve talimatları paylaşma

--knowledge-base ile her taramaya mimari belgeleri, tehdit modelleri veya güvenlik politikaları ekleyin. Daha fazla dosya veya dizin için bayrağı tekrarlayın:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --knowledge-base /path/to/architecture.md \
  --knowledge-base /path/to/security-policies

Paylaşılan tarama talimatları eklemek veya her taramadan sonra bir takip işlemi çalıştırmak için prompt dosyaları sağlayın:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --scan-prompt-file scan-instructions.md \
  --post-scan-prompt-file follow-up.md

CLI, paylaşılan tarama talimatlarının sonuna her deponun CSV prompt alanını ekler. Takip talimatları, başarılı taramalardan ve tarama hatalarından sonra aynı kimliği doğrulanmış oturumda çalıştırılır; ancak iptalden veya maliyet sınırına ulaşan bir taramadan sonra çalıştırılmaz. Prompt dosyalarının yolları geçerli dizininize göre çözümlenir.

Model ve akıl yürütme düzeyi seçme

Toplu taramalar varsayılan olarak gpt-5.6-sol modelini xhigh akıl yürütme düzeyiyle kullanır. Bir CSV kampanyası için başka bir model ve düzey seçerken kimlik bilgilerinizle erişebildiğiniz bir model kullanın. ChatGPT ile oturum açıyorsanız bu örneği kullanmadan önce GPT-6.1 Sol kullanılabilirliğini kontrol edin:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --workers 4 \
  --model gpt-6.1-sol \
  --effort medium

Aynı seçenekler etkileşimli depo keşfi sırasında da çalışır:

npx @openai/codex-security bulk-scan --model gpt-6.1-sol --effort medium

Kullanılabilir akıl yürütme düzeyleri seçilen modele bağlıdır. Toplu taramalar minimal, low, medium, high, xhigh ve max düzeylerini destekler; GPT-6.1 Sol en az low düzeyini gerektirir.

OpenRouter veya Fireworks kullanmak için sırasıyla OPENROUTER_API_KEY ya da FIREWORKS_API_KEY değerini ayarlayın ve --provider ile --model değerlerini belirtin. Kimlik bilgileri ve örnekler için OpenRouter veya Fireworks kurulumuna ya da Amazon Bedrock kurulumuna bakın.

Kampanya sonuçlarını inceleme

Çıktı dizini, kampanya yapılandırmasını, her denemenin kaydını ve her depo için ayrı sonuçları saklar:

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, kampanyadaki depoları, sabitlenmiş revizyonları, kapsamları, tarama modlarını ve paylaşılan ya da depoya özgü talimatları kaydeder.
  • results.jsonl, her depo denemesini, durumunu, yapıt dizinini ve mevcut maliyet ya da hata ayrıntılarını kaydeder.
  • report.md, tek bir depo denemesi için okunabilir bir rapor sağlar.
  • findings.json ve coverage.json, ilgili denemenin bulgularını ve incelenen kapsamını kaydeder.

Taşınabilir bir sonuca ihtiyaç duyduğunuzda tamamlanmış bir depo taramasını dışa aktarın:

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

Sonuçlar kaynak kod alıntıları ve güvenlik açığı ayrıntıları içerebilir. Çıktı dizinini özel tutun ve taranan depoların dışında saklayın. Sonuçların ne kadar süre saklanacağını belirleyin.

Kampanyayı sürdürme

Özgün komutu aynı CSV ve çıktı diziniyle çalıştırın:

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

CLI kampanyayı sürdürür, koşulları karşılayan tamamlanmamış depolar için yeni denemeler başlatır ve kapsam boşlukları olanlar dahil tamamlanmış taramaları atlar. Bu taramaların sonuçları erişilebilir durumda kalır.

Mevcut bir çıktı dizini için depo envanterini ya da tarama ve takip talimatlarını değiştirmeyin. CLI, sabitlenmiş manifesti denetler ve farklı bir kampanyayı reddeder. Depoları, revizyonları, kapsamları, tarama modlarını ya da paylaşılan veya depoya özgü talimatları değiştirdiğinizde yeni bir çıktı dizini kullanın.

Depo hatalarını yeniden deneme

Geçici bir kullanıma alma veya tarama hatasından sonra depoyu yeniden denemek için --max-attempts kullanın:

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

Varsayılan olarak her depo için bir deneme yapılır. Her denemenin kendi sonuç kaydı ve çıktı dizini vardır. Yeniden denemeler, çalışma kopyası oluşturma hatalarını, tarama hatalarını ve eksik veya geçersiz zorunlu çıktıları kapsar. Tamamlanan taramalar, kapsam boşlukları veya önem derecesi politikası ihlalleri nedeniyle yeniden denenmez.

Toplu taramalar şu çıkış kodlarını kullanır:

Çıkış kodu Anlamı
0 Tüm depolar tamamlandı ve yapılandırılmış tüm önem derecesi politikalarının koşulları karşılandı.
1 Taramalar tamamlandı, ancak bulgular yapılandırılmış bir önem derecesi eşiğine ulaştı.
2 Bir depo; girdi, yürütme, sonuç bütünlüğü veya zorunlu çıktı hatası nedeniyle başarısız oldu.
130 Ctrl-C kampanyayı kesintiye uğrattı.
143 SIGTERM kampanyayı sonlandırdı.

Docker'da toplu taramalar çalıştırma

Codex Security deposu, bir Linux Docker ana makinesinde otomatik CSV kampanyaları için güvenliği sıkılaştırılmış bir Compose yapılandırması içerir. Ana makine, ayrıcalıksız kullanıcı ad alanı oluşturmayı desteklemelidir.

Depo CSV'sini, tarama sonuçlarını ve oturum açma durumunu kalıcı dizinlere bağlı tutun. OpenAI kimlik bilgilerini ortam veya bir gizli bilgi yöneticisi üzerinden sağlayın. Özel GitHub depoları için GH_TOKEN veya GITHUB_TOKEN değerini aynı şekilde sağlayın.

İmajı bağlı CSV ve çıktı diziniyle çalıştırın:

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

Kampanyayı sürdürmek için bağlı olan aynı CSV'yi ve çıktı dizinini kullanın. GitHub Enterprise Server için CODEX_SECURITY_GIT_HOST değerini GitHub ana makinenize ayarlayın.

Kullanılabilir tüm bayraklar için bulk-scan komut referansına bakın. Tarama kapsamı ve bulgularla ilgili sık sorulan sorular için CLI SSS'ye bakın.