İçeriğe geç

Uyumluluk modülü

Uyumluluk modülü, ArchPilot, ArchScan ve ArchSecurity çıktılarını tek bir uyumluluk skoru ve denetime hazır rapor halinde toplar.

  • Tek uyum skoru - modül çıktıları tek, karşılaştırılabilir bir skora indirgenir.
  • Denetime hazır rapor - denetçiye doğrudan verilebilen paylaşılabilir rapor.
  • Eksik analizi - hangi kuralların geçilemediğini satır satır gösterir.
  • Kendi politika kurallarınız - uyum tanımını siz belirlersiniz.
  • Zaman içinde takip - skorun sürümler boyunca ilerleyişini izleyin.

Aylık tarama limitleri paketinize göre uygulanır. Trial’da 5 tarama/ay; ücretli paketlerde sınırsız.

Dört kural servisin nasıl derlendiğine ve bağımlılıklarının nereden geldiğine bakar:

KuralGeçer, eğer
BE_DOCKERFILE_NON_ROOT_USERİmajın son aşaması root dışı bir kullanıcıyla çalışıyorsa - bir USER satırı, FROM ile türediği aşamadan miras kalan kullanıcı ya da tasarımı gereği root olmayan bir base image (.NET chiseled, distroless nonroot). Hiç USER yoksa root sayılır.
BE_DOCKERFILE_APP_OWNED_BY_NON_ROOTUygulama dosyaları son aşamada o kullanıcıya veriliyorsa - COPY --chown= / ADD --chown= ya da RUN chown. Build aşamasındaki chown imaja ulaşmaz.
BE_DOCKERFILE_BASE_IMAGE_ALLOWEDDockerfile’ın çektiği her imaj izinli bir kaynaktan geliyorsa. Build argümanıyla adlandırılmış imaj (FROM ${BASE_IMAGE}) pipeline’dan, include ettiği şablonlardan ve projenin CI/CD değişkenlerinden çözülür; çözülemeyen atlanır, başarısız sayılmaz.
DEP_NUGET_SOURCES_ALLOWEDYalnız .NET: kökteki nuget.config’in her paket kaynağı izinli bir feed ise. <clear/> yoksa makinenin nuget.org’u yine geçerlidir ve bu, düzeltmesiyle birlikte raporlanır.

İzinli kaynaklar kurulum için bir kez tanımlanır (Yönetim → Ayarlar → Politikalar → İzinli kaynaklar), her çalışma alanı kendi eklemelerini yapabilir (Çalışma alanı ayarları → İzinli kaynaklar); kural bir kaynağı iki listeden birinde varsa kabul eder. Bir kayıt registry host’u ya da yolu (registry.example.com, altındaki her şey) veya feed adresidir; * herhangi bir karakter dizisi demektir (registry.example.com/*, *.example.com/*, harbor.example.com/base/*:10.*) - düzenli ifade değildir. Bir türde hiç kaynak tanımlı değilken o tür için kural atlanır.

Yedi kural şirket dışındaki kişilere hitap eder - DOC_LICENSE_EXISTS, DOC_LICENSE_SPDX_RECOGNIZED, DOC_CONTRIBUTING_EXISTS, DOC_CODE_OF_CONDUCT_EXISTS, SEC_POLICY_EXISTS, DOC_README_HAS_BADGES ve REPO_HAS_TOPICS. Özel bir depoda (GitLab’da private ya da internal) bunlar varsayılan olarak kapalıdır ve atlandı görünür. Proje, çalışma alanı ya da kurulum düzeyinde açılan kural yine çalışır.

Diğer kurallar da dosyayı bulunduğu yerde okur: alt klasördeki (infra/docker/) yerel docker-compose dosyası sayılır; .env.example yalnız yapılandırmayı .env ile taşıyan yığınlarda (Node.js, Python, Ruby, PHP, Go) istenir, .NET ve Java’da istenmez.

AppArch, ISO/IEC 27001:2022 Ek A’yı zaten ürettiği kanıtlara eşler: Uyum kuralları, Git Sağlığı kuralları ve ArchSecurity zafiyet sınıfları (CWE); her biri doğrudan ya da kısmi olarak işaretlidir.

  • Çerçeve ile tara - Kurallar → Uyum kuralları ve Git Sağlığı kuralları sayfalarında Yalnız ISO 27001 kuralları çalışma alanını tam olarak eşlenen kurallara çevirir; Varsayılan kurallara dön bunu geri alır. Anahtarlar kural kural düzenlenebilir kalır, proje ayarları korunur. Yöneticiler aynı profili kurulum varsayılanlarına uygulayabilir (Yönetim → Ayarlar → Kurallar).
  • ISO 27001 teknik kanıtları (Uyum → ISO 27001 kanıtları) - her kontrol ve son taramaların onun hakkında söyledikleri: geçiyor, kalıyor, henüz kanıt yok veya koddan ölçülemez. Kontrollerin çoğu organizasyonel, insan veya fiziksel önlemdir; ayrı listelenir. Rapor teknik kanıttır, sertifika değildir.

Bazı kontrolleri hiçbir tarama yapamaz: erişim gözden geçirmesi, geri yükleme testi, imzalı gizlilik sözleşmeleri. Bunları Kurallar → Manuel kontroller altında kendi kurallarınız olarak yazın ya da elinizdeki listeyi CSV olarak içe aktarın (içe aktarma sayfasında şablon var; sütunlar code, title, description, category, severity, recheck_days, iso_controls, enabled, virgül veya noktalı virgülle ayrılmış). İçe aktarma kuralları koda göre eşleştirir ve ya hepsini ya hiçbirini kaydeder.

  • Kuralı diğer uyum kuralları gibi çalışma alanında veya proje bazında açın.
  • Projenin manuel kontrol sayfasında bir kişi notla birlikte geçti veya kaldı der. Her karar kimin ve ne zaman verdiğiyle saklanır; düzeltme yeni bir karardır, eski karar değiştirilmez.
  • Yeniden kontrol günü girilirse geçti kararı süre dolunca yeniden kontrol gerekli olur.
  • Kurala ISO 27001 kontrolleri yazılırsa ISO 27001 raporu kararları o kontroller için kanıt sayar; insan ve fiziksel kontroller ancak böyle kanıt kazanır.
  • Manuel kontroller uyum skorunu değiştirmez. Her kuralın projeler genelindeki kararları CSV olarak indirilebilir; kararı olan bir kural silinirse geçmişiyle birlikte arşivlenir.

Bu kurallar artık çalışmaz. Önceki taramaların bulguları geçmişte kalır; aynı soruyu artık hangi kuralın yanıtladığı her birinin yanında yazar.

KuralYerine geçenNeden
SEC_BRANCH_PROTECTIONGit Health GIT_DEFAULT_BRANCH_PROTECTEDDal koruması bir Git sağlayıcı ayarıdır; onu Git Health okur ve force push ile doğrudan push kuralları buna dayanır.
SEC_NO_ENV_AT_ROOTGit Health REPO_SECRET_FILE_COMMITTEDGit Health kuralı .env dosyalarını, özel anahtarları ve üretim ayarlarını yalnızca kökte değil tüm depoda arar.
INT_ARCHPILOT_ENABLED, INT_ARCHSCAN_ENABLED-Modüller artık proje başına açılıp kapanmıyor, kontrol edilecek bir şey kalmadı.