Docker image imzalama, container tabanlı yazılım dağıtımında güvenliğin temel taşıdır. Sigstore projesi kapsamında geliştirilen Cosign aracı, OCI container image'larını kolayca imzalamaya ve doğrulamaya olanak tanır. 2026'da Kubernetes ortamlarında imzalı image zorunluluğu hızla yaygınlaşmaktadır.
Container İmzalama Neden Önemli?
- Supply chain güvenliği: Image'ın güvenilir kaynaktan geldiğini doğrular
- Değişiklik tespiti: Image dağıtım sırasında değiştirilmişse tespit edilir
- Compliance: SOC2, ISO 27001 ve NIST gereksinimleri karşılanır
- Zero Trust: "Güvenme, doğrula" prensibi container'lara uygulanır
Cosign Kurulumu
# Linux/macOS
brew install cosign
# Windows (scoop)
scoop install cosign
# Docker ile
docker run --rm gcr.io/projectsigstore/cosign version
Anahtar Çifti Oluşturma
cosign generate-key-pair
Bu komut cosign.key (özel) ve cosign.pub (açık) anahtar dosyalarını oluşturur.
Image İmzalama
# Image'ı push edin
docker push registry.example.com/myapp:v1.0
# Image'ı imzalayın
cosign sign --key cosign.key registry.example.com/myapp:v1.0
Keyless İmzalama (Sigstore Fulcio)
Cosign, özel anahtar yönetimi gerektirmeden keyless signing desteği sunar. OIDC kimlik doğrulaması (GitHub, Google, Microsoft) kullanılır:
cosign sign registry.example.com/myapp:v1.0
Tarayıcı açılır, GitHub/Google hesabınızla giriş yaparsınız ve imzalama otomatik tamamlanır.
İmza Doğrulama
# Anahtar ile doğrulama
cosign verify --key cosign.pub registry.example.com/myapp:v1.0
# Keyless doğrulama
cosign verify --certificate-identity developer@email.com \
--certificate-oidc-issuer https://accounts.google.com \
registry.example.com/myapp:v1.0
Kubernetes'te İmza Zorunluluğu
Kubernetes cluster'ınızda sadece imzalı image'ların çalışmasını sağlamak için admission controller kullanın:
Kyverno ile Policy
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: verify-image-signature
spec:
validationFailureAction: Enforce
rules:
- name: verify-cosign-signature
match:
any:
- resources:
kinds:
- Pod
verifyImages:
- imageReferences:
- "registry.example.com/*"
attestors:
- entries:
- keys:
publicKeys: |-
-----BEGIN PUBLIC KEY-----
...cosign public key...
-----END PUBLIC KEY-----
CI/CD Entegrasyonu
# GitHub Actions örneği
- name: Sign container image
uses: sigstore/cosign-installer@main
- name: Sign
run: cosign sign --key env://COSIGN_KEY ${{ env.IMAGE_REF }}
env:
COSIGN_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
Sık Sorulan Sorular
Docker Content Trust (DCT) ile Cosign arasındaki fark nedir?
DCT (Notary v1) eski bir teknolojidir ve sadece Docker Hub ile çalışır. Cosign tüm OCI registry'lerle uyumludur, keyless signing destekler ve daha modern bir çözümdür. 2026 itibarıyla Cosign standart olarak kabul edilmektedir.
Container imzalama performansı etkiler mi?
İmzalama ve doğrulama işlemleri milisaniyeler sürer ve çalışma zamanı performansını etkilemez. Kubernetes admission controller'da doğrulama, pod başlatma süresine birkaç milisaniye ekler.
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz