CodeQL CLI ve database build
CodeQL CLI and database build
Bu derste neler öğreneceksin
- CodeQL CLI'ın ne için kullanıldığını anlamak
- Database oluşturma ve sorgu çalıştırma komutlarını öğrenmek
- CLI ile CI entegrasyonu ve SARIF upload akışını kavramak
- Local geliştirme ortamında custom query test etmeyi bilmek
CodeQL CLI nedir?
CodeQL CLI, GitHub Actions dışında — local geliştirme ortamında veya özel CI sistemlerinde — CodeQL analizi çalıştırmayı sağlar.
Kullanım senaryoları:
- Custom query geliştirme ve test etme
- GitHub Actions kullanmayan CI (Jenkins, GitLab CI, TeamCity)
- Offline / air-gapped ortamlarda analiz
- Database’i başka araçlarla entegre etme
Temel CLI komutları
# CodeQL database oluştur
codeql database create mydb \
--language=python \
--source-root=./src
# Sorgu çalıştır
codeql database analyze mydb \
codeql/python-queries:codeql-suites/python-security.qls \
--format=sarif-latest \
--output=results.sarif
# Custom sorgu çalıştır
codeql database analyze mydb \
./.github/codeql/queries/python/hardcoded-password.ql \
--format=sarif-latest \
--output=custom-results.sarif
# SARIF sonuçlarını GitHub'a yükle
gh code-scanning upload-results \
--ref=refs/heads/main \
--commit=$(git rev-parse HEAD) \
--sarif=results.sarif
Derleme gerektiren diller için database build
# Java için: build komutunu belirt
codeql database create mydb \
--language=java \
--command="mvn clean package -DskipTests"
# C/C++ için
codeql database create mydb \
--language=cpp \
--command="make -j4"
CI entegrasyonu (GitHub Actions dışı)
Jenkins örneği:
pipeline {
stages {
stage('CodeQL Analysis') {
steps {
sh 'codeql database create /tmp/mydb --language=javascript'
sh 'codeql database analyze /tmp/mydb --format=sarif-latest --output=results.sarif'
sh '''
gh code-scanning upload-results \
--ref=refs/heads/${BRANCH_NAME} \
--commit=${GIT_COMMIT} \
--sarif=results.sarif
'''
}
}
}
}
SARIF upload gereksinimleri
SARIF dosyasını GitHub’a yüklemek için:
- GitHub Enterprise (private repo’lar için GHAS gerekli)
security-events: writeizni (GitHub Actions’ta) veya Personal Access Token- Commit SHA ve ref bilgisi
Sınavda CLI soruları
-
“GitHub Actions kullanmıyoruz, Jenkins CI var. CodeQL nasıl entegre ederiz?” → CodeQL CLI + SARIF upload API
-
“Local’de custom query test etmek istiyorum” → CodeQL CLI ile database oluştur, sorgu çalıştır, sonuçları SARIF’e dönüştür
-
“Air-gapped ortamda code scanning nasıl yapılır?” → CodeQL CLI + offline database bundle + manuel SARIF upload
Sırada ne var?
Modül 5’te güvenlik operasyonları — alert triaj, önceliklendirme, dismissal ve Copilot Autofix.