GitHub Actions iş akışları sözdizimi, güvenlik, maliyet ve bakım kolaylığını dengelemek zorundadır, ancak tek bir araç tüm bu dört alanı ele almamaktadır. Açık kaynak topluluğu, CI hattınızdaki farklı riskleri tespit etmek üzere tasarlanmış dört özel kod denetleyici sunmaktadır. Sözdizimi doğrulamadan tedarik zinciri güvenliğine kadar, bu araçların güçlü yönlerini anlamak ekiplerin iş akışlarını optimize etmelerine ve önlenebilir hataları azaltmalarına yardımcı olur.
GitHub Actions'ın neden birden fazla kod denetleyiciye ihtiyacı var
Bir GitHub Actions YAML dosyası basit görünebilir, ancak kabuk yürütme, gizli anahtar yönetimi, maliyet verimliliği ve bağımlılık sabitleme gibi kritik işlemleri kontrol eder. Bu endişeler dört farklı risk alanına yayılır:
- Sözdizimi doğruluğu: YAML doğru şekilde ayrıştırılıyor mu? Kabuk komutları doğru şekilde tırnak içine alındı mı?
- Politika uygulama: İşler uygun zaman aşımı, izinler ve kalıntı dosya saklama süreleriyle mi yapılandırıldı?
- Tedarik zinciri güvenliği: Eylemler kötü niyetli güncellemeleri önlemek için belirli commitlere sabitlendi mi?
- Saldırılara karşı sertleştirme: Güvensiz girdiler kabuk ortamlarında güvenli şekilde işleniyor mu?
Tek bir araç bu dört alanın tümünü ele almamaktadır. Ekipler genellikle tespit ve düzeltme boşluklarını kapatmak için birden fazla kod denetleyiciyi birleştirmektedir.
Kod denetleyicilerle tanışın: güçlü ve zayıf yönler
actionlint: sözdizimi denetleyicisi
Go dilinde geliştirilen actionlint, en hızlı ve en hafif seçenektir. İş akışı YAML'ini ayrıştırır ve sözdizimi hatalarını, geçersiz ifadeleri ve bozuk kabuk komutlarını işaret eder. Dahası, kabuk komutlarını doğrulamak için shellcheck ile entegre çalışır.
Ancak actionlint politika kararlarından kaçınır. Size timeout-minutes süresinin çok kısa olup olmadığını veya kalıntı dosya saklama politikanızın riskli olup olmadığını söylemez. Rolü tamamen mekaniktir: iş akışınızın geçerli ve yürütülebilir olduğunu doğrulamak.
İdeal kullanım alanları arasında, birleştirme öncesi doğrulama ve kabuk tırnaklama hatalarını yakalamak için bunların CI'ye ulaşmadan önce tespit edilmesi yer alır.
ci-doctor: politika uygulayıcısı
Maliyet disiplini ve güvenlik varsayılanları göz önünde bulundurularak tasarlanan ci-doctor, maliyet tahmini, güvenlik ve bakım kolaylığı dahil olmak üzere on bir politika kuralı sunar. permissions ayarlama, eşzamanlılık kontrollerini etkinleştirme ve iş zaman aşımı zorunluluklarını uygulama gibi yaygın sorunları otomatik olarak düzeltir.
Ayrıca GitHub Code Scanning için SARIF çıktısını destekler, böylece bulgular doğrudan pull request'lerde görüntülenebilir. pin-actions ile SHA sabitleme ve gha-budget ile aylık CI maliyetlerini tahmin etmek için birlikte kullanabilirsiniz.
Yapmadığı şeyler: YAML sözdizimini doğrulamak veya ifade düzeyinde enjeksiyonları tespit etmek. Bunlar için sırasıyla actionlint veya octoscan gerekmektedir.
İstediğiniz şey tutarlı, varsayılan olarak güvenli iş akışları ve küçük sorunların otomatik olarak düzeltilmesi olduğunda kullanın.
sherif: çok depolu standartlaştırıcı
Sherif, bir organizasyon altında birden fazla depoyu yönetirken öne çıkar. Farklı depolardaki iş akışlarını karşılaştırarak aynı göreve farklı zaman aşımı süreleri veya uyumsuz çalıştırıcı türleri gibi tutarsızlıkları tespit eder.
Politika tanımlamaz veya düzeltme önermez. Bunun yerine, ekiplerin ortak bir temel üzerinde anlaşmalarına yardımcı olmak için sapmaları ortaya çıkarır.
Onlarca projeye yayılmış CI'yi standartlaştırmak isteyen organizasyonlar için en iyisidir.
octoscan: güvenlik denetleyicisi
Sertleştirmeye odaklanan octoscan, güvenilmeyen GitHub olay verilerini kabuk komutlarına enjekte etmek gibi tehlikeli kalıpları taramaktadır. Sabitlenmemiş eylemleri, eksik permissions ayarlarını ve diğer sertleştirme boşluklarını kontrol eder ve sonuçları SARIF formatında dışa aktarır.
Maliyet analizi yapmaz, sözdizimini düzeltmez veya çoklu depolardaki iş akışlarını karşılaştırmaz. Değeri, özellikle dış katkıları kabul eden iş akışları için, yayın öncesi güvenlik kontrollerinde yatmaktadır.
Tedarik zinciri veya enjeksiyon risklerine karşı savunmasız olmadığınızdan emin olmak için büyük yayınlardan önce kullanın.
Bunları etkili şekilde nasıl birleştirebilirsiniz
Hiçbir kod denetleyici tüm riskleri kapsamaz, ancak beş saniyeden kısa sürede tüm dört alanı kapsayan minimal bir pipeline oluşturabilirsiniz:
# 1. Sözdizimi doğrulaması
npx actionlint
# 2. Politikaları otomatik düzeltme ve SARIF çıktısıyla denetleme
npx ci-doctor --fix
npx ci-doctor --sarif > ci-doctor.sarif
# 3. Tedarik zinciri sertleştirme
npx pin-actions --check
# 4. Güvenlik denetimi (çatal PR'ları için isteğe bağlı)
octoscan run
# 5. Çok depolu tutarlılık (yalnızca kuruluş genelinde)
sherif --workspace .Yapay zeka özeti
Compare actionlint, ci-doctor, sherif, and octoscan to validate syntax, enforce policies, and secure supply chains in GitHub Actions workflows.
Etiketler