CodeQL Step
CodeQL, GitHub’ın sağladığı bir kod analizi ve güvenlik taraması aracıdır. Bu araç, depo içindeki potansiyel güvenlik açıklarını (SQL injection, XSS, vb.) kod düzeyinde tespit etmeye çalışır.
1) Workflow Tetikleyicileri
push:
main
branch’ine her push olduğunda CodeQL analizini çalıştırır.pull_request:
main
branch’ine PR açıldığında da çalıştırır.schedule (cron): Her pazartesi 14:00’de (
0 14 * * 1
) analiz çalışır. Bu şekilde düzenli taramalar yapılır.
2) Job Tanımı ve Strateji
Job adı: “analyze”.
Runner: “ubuntu-latest” → GitHub’ın Ubuntu ortamı.
Matrix: CodeQL’in birden fazla dil için tarama yapacağı belirtiliyor. Yani job,
java
,javascript
, vepython
dilleri için paralelde (ya da ardışık) çalışacak.fail-fast: false: Bir dilde analiz hata verse bile diğer dillerin analizini kesme; tamamlamaya çalış.
3) Adımlar (Steps)
Checkout repository
Kodları runner’a indirir, böylece CodeQL taraması dosyaları görebilir.
Initialize CodeQL
CodeQL analizini başlatmak için resmi GitHub Action (
github/codeql-action/init@v1
).languages: ${{ matrix.language }}
: Hangi dili (java, javascript, python) tarayacağını belirtiyor.
Perform CodeQL Analysis
Asıl taramayı çalıştırır. Kodda potansiyel güvenlik veya kalite sorunlarını saptar.
Sonuçları GitHub Security tabında “Code scanning alerts” bölümünde görebilirsin.
4) Neden CodeQL?
Potansiyel açıkları push/PR aşamasında yakalayarak yaygın zafiyetleri önlemiş olursun.
Çoklu Dil Desteği: Java, JavaScript, Python, C/C++, Go, C# vb. popüler dilleri destekler.
Entegrasyon: GitHub Security sekmesinde “code scanning alerts” olarak rapor çıkarır, pull request’lerde uyarı gösterir, hatta “Security tab” üzerinden düzeltmeler önerilir.
5) Cron Taramaları vs. Pull Request Taramaları
pull_request
tetiklemesi: Daha kod PR aşamasındayken sorunları yakalamayı sağlar.push
tetiklemesi: Branch’e direkt push yapan geliştiriciler için de tarama çalışır.schedule (cron)
: Periyodik olarak (ör. haftada bir) tam kapsamlı tarama yapar. Böylece sürekli güncellenen kurallarla eski kodu yeniden tarayabilirsin.
Özet
Bu CodeQL workflow, depo içindeki belirli dillerdeki (Java, JS, Python) kodu düzenli tarar ve güvenlik açıklarını raporlar. “init” adımında analiz ayarları yapılır, “analyze” adımında tarama gerçekleşir. Tetikleyiciler (push, PR, cron) sayesinde hem sürekli entegrasyon sırasında, hem de düzenli aralıklarla güvenlik kontrolleri yapılır.
Last updated
Was this helpful?