CI/CD Pipeline'da Kod İmzalama Neden Kritik?
Modern yazılım geliştirme süreçlerinde sürekli entegrasyon (CI) ve sürekli dağıtım (CD) standart haline geldi. Her gün yüzlerce build oluşturulan ortamlarda, her dağıtımın imzalanması güvenlik açısından zorunlu. Manuel imzalama süreçleri bu hızda darboğaz oluşturur — cloud kod imzalama bu sorunu API tabanlı otomasyon ile çözer.
Tedarik zinciri saldırıları (supply chain attacks) son yıllarda dramatik şekilde arttı. SolarWinds, Codecov ve 3CX gibi vakalar, build pipeline'ının güvenliğinin ne kadar kritik olduğunu gözler önüne serdi. İmzalanmamış veya güvenliği ihlal edilmiş kodun dağıtılması, milyonlarca kullanıcıyı etkileyebilir.
Cloud Kod İmzalama Pipeline Mimarisi
Güvenli bir CI/CD imzalama pipeline'ı şu bileşenlerden oluşur:
- Build Sunucusu: Kodu derleyen CI runner'ı (GitHub Actions, Jenkins Agent vb.)
- İmzalama API Gateway: Sertifika sağlayıcının cloud API'si
- Cloud HSM: Özel anahtarın güvenle saklandığı donanım modülü
- Zaman Damgası Sunucusu (TSA): RFC 3161 uyumlu timestamp servisi
- Artifact Repository: İmzalanmış dosyaların depolandığı havuz
GitHub Actions ile Cloud Kod İmzalama
GitHub Actions, en popüler CI/CD platformlarından biridir. Cloud kod imzalama entegrasyonu için workflow YAML dosyasına imzalama adımını eklemek yeterlidir:
GitHub Actions workflow'unuzda, build adımından sonra imzalama adımını eklersiniz. Bu adımda GitHub Secrets üzerinden API anahtarlarınız güvenli şekilde iletilir ve imzalama işlemi cloud HSM üzerinde gerçekleşir. Özel anahtar hiçbir zaman runner üzerinde bulunmaz.
Güvenlik En İyi Uygulamaları (GitHub Actions)
- GitHub Secrets kullanarak API anahtarlarını saklayın — YAML dosyasına asla açık metin yazmayın
- Environment protection rules ile yalnızca production branch'ten imzalamaya izin verin
- OIDC token tabanlı kimlik doğrulama kullanın (static credentials yerine)
- İmzalama adımını ayrı bir job olarak tanımlayın, kısıtlanmış izinlerle
Jenkins ile Entegrasyon
Jenkins, kurumsal ortamlarda en yaygın kullanılan CI sunucusudur. Cloud kod imzalama entegrasyonu Jenkinsfile (Pipeline as Code) üzerinden yapılandırılır:
Jenkins pipeline'ınızda withCredentials bloğu kullanarak API anahtarlarını güvenli tutarsınız. İmzalama işlemi build sonrasında ayrı bir stage olarak çalışır. Jenkins Credential Store, hassas bilgileri şifreleyerek saklar.
Jenkins İçin Öneriler
- Jenkins Credential Store üzerinden API anahtarlarını yönetin
- İmzalama node'unu ayrı bir agent olarak yapılandırın, minimum erişim yetkisiyle
- Pipeline Library ile imzalama adımını tüm projeler arasında paylaşın
- Build artifact'larının checksum'larını imzalama öncesi ve sonrası doğrulayın
Azure DevOps Entegrasyonu
Azure DevOps kullanıyorsanız, cloud kod imzalama entegrasyonu Azure Pipeline YAML dosyası üzerinden yapılır. Azure Key Vault ile entegrasyon, ek bir güvenlik katmanı sağlar. DigiCert ve Sectigo'nun Azure DevOps extension'ları, görsel pipeline designer'da bile kullanılabilir.
İmzalama Doğrulama (Verification)
İmzalanan dosyaların doğrulanması, sürecin kritik bir parçasıdır. Pipeline'ın son adımı olarak imza doğrulaması eklenmesi önerilir:
- Windows:
signtool verify /pa /v dosya.exe - macOS:
codesign --verify --deep --strict uygulama.app - Java (JAR):
jarsigner -verify -verbose dosya.jar - .NET (NuGet):
dotnet nuget verify paket.nupkg
Zaman Damgası (Timestamping) Neden Önemli?
Kod imzalama sertifikanız süresi dolduğunda, zaman damgası olmayan imzalar geçersiz hale gelir. RFC 3161 uyumlu zaman damgası eklemek, imzanızın sertifika süresinden bağımsız olarak geçerli kalmasını sağlar. Cloud kod imzalama servisleri genellikle zaman damgasını otomatik olarak ekler.
Tedarik Zinciri Güvenliği Kontrol Listesi
- ✅ Tüm build artifact'ları imzalanıyor mu?
- ✅ API anahtarları güvenli bir vault'ta mı saklanıyor?
- ✅ İmzalama işlemi yalnızca yetkili branch'lerden mi tetikleniyor?
- ✅ Zaman damgası ekleniyor mu?
- ✅ İmza doğrulaması pipeline'da yapılıyor mu?
- ✅ Audit logları düzenli inceleniyor mu?
- ✅ Sertifika yenileme takvimi takip ediliyor mu?
- ✅ Roller ve erişim yetkileri minimum düzeyde mi?
Sonuç
Cloud kod imzalama, CI/CD pipeline'larında güvenliği otomasyona kavuşturmanın en etkili yoludur. GitHub Actions, Jenkins veya Azure DevOps fark etmeksizin, API tabanlı entegrasyon birkaç dakikada yapılandırılabilir. Tedarik zinciri güvenliği 2026'nın en öncelikli konusu — otomatik kod imzalama ile pipeline'ınızı güçlendirin.