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¶
- Sol menüde GitOps'u açın. İlk sekme Deployment check'tir.
- 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. - 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. - 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.
- 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.
- Check deployment'a basın. Eksik/geçersiz alanlar ilgili girişin altında gösterilir ve ilk hatalı alana odaklanılır.
- 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:
- Admission policies sekmesini açın ve cluster'ınızda kullanılan motoru (Kyverno veya Gatekeeper) seçin.
- Pod application label alanına hedef podların
app.kubernetes.io/nameetiketinin değerini yazın. Bu alan ArgoCD Application nesnesinin adından bağımsız olabilir; gerçek pod etiketiyle aynı olmalıdır. - Policy namespace değerini ve engellenecek tam
sha256:image digest'ini girin. - 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.
- Generate policy'ye basın. Sonuç başlığında pod etiketi, namespace, digest ve Generated · not applied durumunu tekrar kontrol edin.
- 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.
- Ü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.
- 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.
- 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.readgerekir). - 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.