Ana içeriğe geç

GitOps: dağıtım kanıtı ve admission policy

GitOps sayfası bir sürümün belirli bir TraceMint taramasıyla eşleşip eşleşmediğini değerlendirir. Supply Chain bağımlılık, gizli bilgi, konteyner ve altyapı riskinin envanterini sunar; GitOps ise belirli bir ArgoCD uygulaması, commit ve image digest için dağıtım kontrolü yapar. Sayfa bir ArgoCD senkronizasyonu başlatmaz, cluster'a bağlanıp canlı durumu okumaz ve ürettiği politikayı uygulamaz.

Adres: /gitops · Yetki: findings.read. Tarama kaydını ayrıca açmak için scans.read, yeni tarama başlatmak için scans.write gerekir.

İlk kontrol: Deployment check

  1. Sol menüde GitOps'u açın. İlk sekme Deployment check'tir.
  2. Deployment target altında ArgoCD uygulama adını, Kubernetes namespace'ini, cluster kimliğini ve gerçek ortam adını girin. Uygulama ve namespace Kubernetes adlandırmasına uymalıdır: küçük harf, rakam ve iç kısımda -; en çok 63 karakter. Ortamı açıkça girin; boş alana otomatik bir üretim ortamı atanmıyor.
  3. Release evidence bölümüne tamamlanmış Scan ID, dağıtılacak Git commit SHA ve sha256: ile başlayan 64 onaltılık haneli image digest girin. Commit 7–64 onaltılık karakter olmalıdır. Digest'in, seçilen taramanın kaydettiği digest ile birebir aynı olması gerekir.
  4. Scan ID'yi bilmiyorsanız Choose a scan ile Scan evidence sekmesine geçin. İlgili satırın ayrıntısında Use in deployment check'i seçin. Kayda gerçekten yazılmış alanlar forma aktarılır; eksik commit/digest/cluster sizin tarafınızdan tamamlanır. Bir taramanın listede görünmesi dağıtım onayı değildir.
  5. ArgoCD context bölümünü açıp gerçekten gözlemlediğiniz Sync status ve Health status değerlerini kaydedin. Varsayılan Not recorded değerleriyle bir severity sonucu alınabilir, fakat kanıt kontrolü tamamlanmış sayılmaz. Bu alanlar sizin beyanınızdır; TraceMint canlı ArgoCD API'sini sorgulamaz.
  6. Check deployment'a basın. Eksik/geçersiz alanlar ilgili girişin altında gösterilir ve ilk hatalı alana odaklanılır.
  7. Sonuçta Deployment checks passed, Blocked veya Evidence incomplete durumunu; dikkat isteyen kontrolleri, geçen kontrolleri ve gönderilen kanıtı okuyun. Download receipt ile bu tek değerlendirmeye ait JSON kaydını saklayın. Formu değiştirdiğinizde eski sonuç temizlenir; yeni değerler için kontrolü yeniden çalıştırın.

Kritik ve yüksek seviyeli çözülmemiş bulgular dağıtımı engeller; sayfadaki bu eşikler düşürülemez. Değerlendirme, seçilen taramanın tamamlanmasını, commit'in tarama kaydıyla eşleşmesini ve image digest'in aynı olmasını da kontrol eder. Uygulama/namespace/cluster değerleri bağımsız olarak doğrulanmış cluster kayıtları değildir. API'deki allowed severity sonucu tek başına bütün kalite kontrollerinin geçtiği anlamına gelmez; arayüz bu durumda Evidence incomplete gösterir.

Sonuçtaki dokuz kontrol

Kontrol Ne sorar?
Deployment target Uygulama, namespace ve cluster tanımlandı mı?
Commit reference Kullanılabilir bir commit SHA var mı?
Immutable image Sıfır olmayan SHA-256 image digest var mı?
Scan reference Erişilebilir bir tarama seçildi mi?
Completed scan Tarama gerçekten tamamlandı mı?
Commit match Tarama aynı commit'i mi kapsadı?
Image match Tarama aynı image digest'i mi kapsadı?
Critical and high findings Çözülmemiş kritik/yüksek bulgu var mı?
ArgoCD context Sync ve health gözlemleri kaydedildi mi?

Blocked sonucunda Prepare blocking policy düğmesi ikinci sekmeyi uygulama, namespace, digest ve tarama referansıyla önceden doldurur. Bu düğme politikayı otomatik üretmez veya cluster'a uygulamaz.

Admission policies: Kyverno ve Gatekeeper

Bu sekme tarama olmadan da çalışır. Belirli bir image digest'i belirli podlar için reddedecek YAML hazırlamak için:

  1. Admission policies sekmesini açın ve cluster'ınızda kullanılan motoru (Kyverno veya Gatekeeper) seçin.
  2. Pod application label alanına hedef podların app.kubernetes.io/name etiketinin değerini yazın. Bu alan ArgoCD Application nesnesinin adından bağımsız olabilir; gerçek pod etiketiyle aynı olmalıdır.
  3. Policy namespace değerini ve engellenecek tam sha256: image digest'ini girin.
  4. Blocking reason alanına insanın anlayacağı somut gerekçeyi yazın. Bu gerekçe YAML'a girer; yalnızca politika üretmiş olmak bir taramanın açık bulgu taşıdığını kanıtlamaz.
  5. Generate policy'ye basın. Sonuç başlığında pod etiketi, namespace, digest ve Generated · not applied durumunu tekrar kontrol edin.
  6. YAML'ı okuyup Copy YAML veya Download YAML ile kendi değişiklik yönetimi sürecinize alın. Uygulama ve sonuç doğrulaması cluster ekibinizin sorumluluğundadır.

Politika namespace içindeki bütün podlara uygulanmaz: yalnızca eşleşen namespace, app.kubernetes.io/name etiketi ve belirtilen image digest kapsamındadır. Motoru veya alanları değiştirmek önceki YAML'ı temizler; yeni sürümü üretin. Gatekeeper çıktısı ConstraintTemplate ve Constraint belgelerini birlikte içerir.

Scan evidence: risk kuyruğu

Scan evidence sekmesi erişebildiğiniz tamamlanmış taramaların anlık görüntülerini listeler. Bir uygulamanın ardışık taramaları ayrı satırlardır; burası kalıcı ArgoCD deployment geçmişi veya canlı uygulama envanteri değildir. Tarama yoksa No completed scans yet görünür; policy sekmesini yine kullanabilirsiniz.

  1. Üst özette tarama sayısını, çözülmemiş kritik/yüksek engelleri olan ve olmayan kayıtları, başarısız kalite kontrollerini inceleyin. Özet sayılar yalnızca ekranda gösterilen sayfayı değil eşleşen kayıtları kapsar.
  2. Search application, cluster, commit or image aramasını, Risk check filtresini, Environment seçimini ve Rows (25/50/100) sayfa boyutunu kullanın. Previous/Next ile sayfalar arasında geçin; Refresh yeni veriyi çeker.
  3. Satıra tıklayın; sağdaki kayıtta risk açıklamasını, kaynak zincirini, artifact binding'i, kalite kontrollerini ve çözülmemiş bulguları açın. Open scan doğrudan tarama kaydına götürür (scans.read gerekir).
  4. Bu sürümü değerlendirecekseniz Use in deployment check ile birinci sekmedeki formu doldurun ve eksik bilgileri doğrulayarak ekleyin.

Kuyruktaki Without blockers, yalnızca taramadaki kritik/yüksek bulgu kontrolünün geçtiğini anlatır. Eksik commit, image digest, namespace veya ArgoCD bağlamı nedeniyle kanıt yine yetersiz olabilir. Özellikle eski taramalardan türetilen production değeri Production (unverified) olarak gösterilir; gerçek dağıtım ortamı olarak kabul etmeyin.

Sık karşılaşılan durumlar

Belirti Ne yapmalı?
No completed scans yet Önce bir projede taramayı tamamlayın; politika üretmek için tarama gerekmez.
Scan not found Scan ID'yi ve o taramaya erişim izninizi kontrol edin. Başka projeye/organizasyona ait tarama kullanılamaz.
Evidence incomplete Sonuçtaki başarısız kontrolü açın; özellikle Sync/Health için Add ArgoCD context'i kullanın.
Blocked Çözülmemiş kritik/yüksek bulguları, tamamlanmamış taramayı veya uyuşmayan commit/digest'i düzeltip yeniden değerlendirin.
Kayıtta not-declared veya sıfır hash Bu yalnızca scan snapshot'ıdır; gerçek dağıtım değerlerini forma girin.
Politika üretildi ama pod engellenmiyor YAML'ın cluster'da uygulanıp uygulanmadığını, ilgili admission motorunu, namespace'i, pod etiketini ve tam digest'i kontrol edin.

Kaynak dayanağı: frontend/src/pages/GitOpsPage.tsx, frontend/src/components/gitops-console/GitOpsActions.tsx, frontend/src/components/gitops-console/workflow.ts, api/routers/gitops.py, api/models/gitops.py.