Docs

Dokümantasyon / Özellikler

Supply chain güvenliği

Image'larınız için otomatik SBOM ve vulnerability taraması, cosign ile imzalama ve environment'larda deploy öncesi policy kontrolü.

Genel bakış#

EJO, build ettiğiniz image'ların içinde ne olduğunu ve nereye deploy edildiğini takip eder:

  • Otomatik SBOM ve vulnerability scan: Her image build'inden sonra bir CycloneDX SBOM üretilir ve Trivy ile taranır; pipeline'da bu step'ler olmasa bile.
  • İmzalama: COSIGN_SIGN step'i image'ları cosign ile imzalar.
  • Environment policy'si: İmzasız, SBOM'u olmayan ya da critical vulnerability içeren image'lar bir environment'a deploy edilemez.
  • Paket arama: Bir paketin ya da CVE'nin hangi image'larda ve environment'larda olduğunu bulursunuz.

Otomatik scan#

Ayarlar > Supply chain sayfasındaki Otomatik SBOM ve vulnerability scan ayarı varsayılan olarak açıktır. Scan arka planda çalışır ve environment policy'si gerektirmedikçe deployment sonucunu değiştirmez. Ayarları yalnızca admin'ler değiştirebilir.

Ayar Açıklama
Mode SBOM + vulnerability'ler ya da Sadece SBOM.
SBOM retention (gün) 0 SBOM'ları sonsuza kadar tutar; aksi halde 7 ile 3650 gün. Süre dolunca SBOM belgesi silinir, özet sayılar kalır.
Repo başına tutulan image sayısı Her repo'nun en yeni bu kadar image'ı SBOM'unu korur (1 ile 1000 arası).
Log retention (gün) 0 log'ları sonsuza kadar tutar; aksi halde 7 ile 3650 gün. Süre dolunca biten deployment ve step'lerin log metni silinir, deployment'lar kalır.

Bir environment ayarı organizasyon ayarını devralabilir (Organization'dan devral) ya da scan'i o environment için açıp kapatabilir. Bir repo .ejo dosyasında supply_chain: {auto_scan: false} ile dışarıda kalabilir.

Otomatik scan şu durumlarda atlanır:

  • Fork'tan açılan PR'lar.
  • Ayar organizasyon, environment veya repo düzeyinde kapalıysa.
  • Pipeline'da image build eden bir step yoksa ya da image bir registry'ye push edilmiyorsa (registry_id yok).
  • Pipeline zaten açık SBOM_GENERATE veya TRIVY_SCAN step'leri içeriyorsa.
  • Agent bu özelliği desteklemiyorsa (agent'ı güncelleyin).

Not: Environment SBOM istiyor ya da critical vulnerability'leri engelliyorsa ve build'den sonra bir deploy geliyorsa, otomatik scan deploy'dan önce çalışır ve sonucu deploy'u engelleyebilir.

Environment policy'si#

Environment sayfasındaki Supply-chain policy'si bölümünde:

Ayar Açıklama
İmzalı image iste Image'ın COSIGN_PUBLIC_KEY ile doğrulanabilen bir cosign imzası olmalıdır.
SBOM iste Image'ın kayıtlı bir SBOM'u olmalıdır.
Critical vulnerability'leri engelle Critical vulnerability içeren image'lar reddedilir.

Herhangi biri açıkken promote, rollback ve deploy step'leri policy'ye uymayan image'ları reddeder. Hata mesajı supply chain policy: <sebepler> biçimindedir.

Image imzalama#

Ön koşullar#

  • Kubernetes tipinde bir environment. COSIGN_SIGN, SBOM_GENERATE ve TRIVY_SCAN cluster'da Kubernetes Job olarak çalışır.
  • TRIVY_SCAN için environment sayfasında Trivy kur.

Kurulum#

  1. Ayarlar > Supply chain sayfasındaki Key üretimi bölümünde gösterilen komutla kendi bilgisayarınızda bir cosign key pair üretin.
  2. Altyapı > Değişkenler sayfasında şu üç variable'ı oluşturun:
Variable Tip Değer
COSIGN_PRIVATE_KEY Secret cosign.key dosyasının içeriği
COSIGN_PASSWORD Secret Key'in parolası
COSIGN_PUBLIC_KEY Düz cosign.pub dosyasının içeriği
  1. Pipeline'ınıza imzalama ve SBOM step'lerini ekleyin. İmzalama ve SBOM bir digest referansı ister; build step'inin {{.ImageDigest}} output'unu kullanın.

Uyarı: Key dosyalarını asla git'e commit etmeyin.

Hazır pipeline#

Ayarlar > Supply chain sayfasındaki Pipeline pack'i bölümünde K8s supply chain pipeline'ı oluştur tek tıkla şu pipeline'ı oluşturur: clone → Kaniko build → COSIGN_SIGN → SBOM_GENERATE → TRIVY_SCAN → K8S_DEPLOY. Butona tekrar basmak aynı adlı pipeline'ı günceller. Oluşan pipeline'ı repo binding'inize atayın. Developer'lar da bu pipeline'ı oluşturabilir.

Örnek#

- name: Sign
  kind: COSIGN_SIGN
  config:
    image_ref: "{{.ImageDigest}}"
- name: SBOM
  kind: SBOM_GENERATE
  config:
    image_ref: "{{.ImageDigest}}"
- name: Scan
  kind: TRIVY_SCAN
  config:
    image_ref: "{{.ImageDigest}}"
    severity: HIGH,CRITICAL

COSIGN_SIGN imzayı varsayılan olarak public transparency log'a yüklemez (tlog_upload: false).

Paket ve CVE arama#

Altyapı > Image'lar > Paketler sayfası, kayıtlı her image'ın SBOM'unda arama yapar. Bir paket adı (ya da pkg: purl öneki) veya bir CVE id'si girin; <2.17.1 gibi bir version kısıtı ekleyebilirsiniz. Sonuç, paketi içeren image'ları ve bu image'ların çalıştığı environment'ları gösterir.

Step image'ları#

Environment'ın Step image policy'si ayarı aynı imza ve vulnerability kurallarını pack step'lerinin ve image'lı SHELL step'lerinin image'larına da uygular. Bkz. Step pack'ler.

Sonraki adımlar#

Son güncelleme: 16 Ekim 2026