GitOps, DevSecOps için neden önemlidir?
Yayınlanan: 2022-02-24DevOps'un otomasyon, izlenebilirlik ve özellikle önceden silolanmış gruplar ve paydaşlar arasındaki işbirliği için kazanımları büyük ölçüde kabul edilmektedir. Ancak DevOps grupları, operasyonları kapsayıcılı Kubernetes ortamlarına kaydırmakla önemli ölçüde görevlendirildiğinden, denenmiş ve test edilmiş uzun DevOps taktikleri daha kısa kayabilir. Güvenlik sorunları - ve tuzaklar - ayrıca benzersiz yöntemlerde kendini gösterir.
Harika bilgi, GitOps'un dağıtılmış ortamların kararlılığı için DevOps'taki bir dizi boşlukları doldurmaya hizmet etmesidir. Bunun nedeni, GitOps süreçlerinin, burada tüm yazılım yaşam döngüsü için geçerli olan en etkili güvenlik taktikleri olarak tanımlanan DevSecOps için çok elverişli olmasıdır.
Bu makalede, GitOps'un, CI/CD aracılığıyla artan güvenlik kontrolleri ve ayrıca Kubernetes kümelerinde uygulama yönetiminin yazma-dağıtım aşamaları aracılığıyla DevSecOps için nasıl hayati bir çerçeve sunduğuna bir göz atacağız.
Gerçekliğin tek değişmez kaynağı
GitOps şu şekilde tanımlanabilir:
Kubernetes ve diğer buluta özgü sistemler için, Git dağıtımını, yönetimini ve kapsayıcılı kümeler ve amaçlar için izlemeyi birleştiren bir dizi en iyi prosedürü sağlayan, işleyen bir tasarım.
Her işlemde ve geliştirmede tam olarak sonuçlandırılmış CI/CD ardışık düzenlerinin ve Git iş akışlarının kullanıldığı programlarla ilgilenmek için geliştirici pratik deneyimi yönünde bir yol.
Git, istenen konfigürasyon tam burada bildirildiği için gerçek gerçeğin tek kaynağıdır. Kubernetes içinde çalışan bir GitOps aracısı vardır, Kubernetes içindeki gerçek noktayı Git'te kaydedilen aranan nokta ile düzenli olarak karşılaştırır. Git'te izlenen departmanla birleştirilen tüm yeni varyasyonlar anında Kubernetes'e uygulanır. Tersine, Kubernetes'te kullanılan herhangi bir el kitabı varyasyonu mekanik olarak Git'te bildirilen ideal duruma geri döndürülür. Yapılandırma kayması ortadan kaldırılır.
Git, değişmez yapısı sayesinde GitOps için geçerli olduğu için genellikle gerçek gerçeğin tek kaynağı olarak tanımlanır. Diğer şeylerin yanı sıra, CI ve CD arasındaki endişeleri ayıran bir güvenlik duvarına aykırı olmayan bir sınırın sürdürülmesine yardımcı olacaktır. Bu şekilde, CI'nin bir parçası olarak uygulama geliştirmede yer alan çeşitli yollar - çekme istekleri, tarama, taahhütler vb. — Git'te ayrı olmaya devam edin.
Bir çekme isteği oluşturan geliştirici için, inceleme ve izin verildiğinde çekme isteği birleştirilir ve yaklaşan mutabakatta kümeye rutin olarak kullanılır - bu genellikle 15 dakika sürer.
Varsayılan olarak, süreç iki yönlüdür - bu, doğrudan Kubernetes'te üretilen bir değişikliğin, gelecekteki mutabakat döngüsü çalıştığında (genellikle her 15 dakikada bir) Git'te karşılık bulacağı anlamına gelir. Öyle olsa bile, bir DevOps iş gücü üyesi veya daha da kötüsü, olumsuz aktör bir davetsiz misafir, kümelerde hemen değişiklikler yapacaksa, bu durum en iyisinden önemli ölçüde daha azdır. Bu doğrudan kümeye varyasyonlar, birleştirme istekleri ve onayları aracılığıyla uygun şekilde incelenmemiştir ve sonuç olarak, Git'in, sürüklenme meydana geldikçe konunun gerçeğinin değişmez kaynağı olarak hizmet eden GitOps teorisini ihlal etmektedir.
Sürüklenmenin oluşmasını önlemeye alternatif olarak, bir GitOps kontrol kaynağı, kümede Git'te kullanılmaya başlanmamış değişiklikler üretilirse uyarı gönderebilir. Bu olduğunda, denetim izi sayesinde Git'teki yazılım kodu, çalışma zamanı doğal ortamında konuşlandırılmış noktasındaki denetleyiciler aracılığıyla kümeler için tasarlanan hatalı değişiklikleri değiştirebilir.
Tersine, değişmezlik sağlanmadığında, sürüklenme meydana gelebilir. Bu, muhtemelen bir ağ saldırısı sırasında veya bir DevOps personelinin küme yapılandırmasını Git'tekinden farklı olacak şekilde istemeden değiştirmesi durumunda gerçekleşebilir. Uyumsuzluk, bu gerçekleştiğinde - doğru GitOps ekipmanının kullanılmasıyla - işaretlenir ve böylece GitOps süreçlerinin sunduğu mükemmel bir DevSecOps'u sembolize eder.
Uygun uygulamalar, Git deposundaki yapılandırmanın istenen noktasının Kubernetes kümesindeki gerçek durumla eşleşmesini sağlamak için devam eden kontrol sistemini otomatikleştirir. Ayrıca, deponun beyan edilen koşulunda etkin bir şekilde tahsis edilir edilmez dağıtımları uzlaştırmak ve toplam dağıtımları yapmak için de kullanılır.
Denetim yönetimi
GitOps'un sunduğu denetim özellikleri, DevSecOps yardımı için de çok önemlidir. Tek gerçek kaynağı olarak Git deposunda kalarak, tüm uygulamalar, kodlar ve konfigürasyonlar sürümlendirilir ve korunan herhangi bir doğal ortam için temel bir gereklilik olan tam bir denetim yolunu korur. Bu denetim izi, genellikle geliştiricilere ve operasyon personeli üyelerine, kümede neyin çalıştığını fark etmeleri için satın alma sırasında eşit olarak sunulur (çoğu kullanıcı, küme yapılandırmasına yalnızca göz atma erişilebilirliği ile sınırlıdır).
Geliştirici, her zaman işlevler ve DevSecOps personeli müşterilerinin yaptığı gibi denetim yollarına bağımlı olmak zorunda olmayabilir, ancak bunlar, hangi varyasyonların ortaya çıktığını ve gerçekleşen depoda yapılan ayarlamaların arkasındaki sürücünün ne olduğunu anlama yeteneğinden yararlanabilir. . Özetle, geliştirici için - tüm DevOps personeli için olduğu gibi - her şey sadece bir Git günlüğü uzağınızda.
Git'teki denetim izleri de mevcuttur ve inşaatçıların gerektiğinde görünmesi için çok basittir. Bunun nedeni, sürecin bitiş mirasının, inşaatçıların anladığı Git rapor programında yakalanmasıdır.
Denetim izinin kullanılabilirliği ile, zorlukları tetikleyen uygulamalarda yapılan ayarlamaları hızla geri almak da mümkündür. Bu, özellikle kümelerin güvenliği ihlal edildiğinde veya yanlış yapılandırıldığında faydalıdır. Bu durumda, bir kümeyi sıfırdan yeniden oluşturmaya alternatif olarak, denetim izi, depoda aranan noktadan oluşur. Denetim izinden istenen nokta ile küme yapılandırması ve programlar daha sonra dağıtılır ve yeniden oluşturma prosedürü otomatiktir.
'Krallığın anahtarları' sayısı

Oluşturucular, Kubernetes ortamları için üretim boru hatları için CI/CD'yi geliştirmek, incelemek ve yardımcı olmak için genellikle bir otomasyon sunucusu olan Jenkins'e güvenir. GitOps'tan yoksun olan geliştiriciler, başka herhangi bir durumda kodlarını doğrudan dağıtırken Kubernetes kümelerine anında erişebilir. Başka bir deyişle, inşaatçılar - kuruluşun bir parçası olmaları veya uzaktan çalışan bir müteahhit olmaları fark etmeksizin - çıktı ortamına anında erişime sahip olacak ve sohbet etmek için "krallığın anahtarlarına" sahip olacaklardı. Bu nadiren ideal bir güvenlik durumudur.
Daha önce bahsedilen durumda, seçeceği tek şey, uygunsuz kullanıcının - veya daha da kötüsü, ancak bir davetsiz misafirin - üretimdeki kümelere dizüstü bilgisayarlarından çalıştırabilecekleri KubeConfig veya Kubectl komut erişilebilirliğine sahip olmasıdır. Bir saldırgan, CI sürecinin ve oluşturulan kimlik bilgilerinin güvenliğini ihlal ettiyse, örneğin, bu durumda, CI sisteminin erişimi olan herhangi bir kümeye de erişebilir.
GitOps'un kullanıcıların veya saldırganların küme yapılandırmalarını herhangi bir iz bırakmadan değiştirmelerini önlemeye yardımcı olduğu basit gerçeği, geliştiricinin zihinsel yükünü en aza indirmeye ek olarak, operasyonlar ve güvenlik ekipleri için hayati önem taşır. Örneğin, yönetmek elde ederek, geliştiricinin genellikle Kubernetes düğümlerine ve/veya kubectl komut satırlarına doğrudan erişimi olmaması gerekir. GitOps, inşaatçıların Git'te ana hatlarıyla belirttiği hemen hemen her şeyi uzlaştırır, ancak inşaatçıların benzersiz erişim denetimi izinlerine sahip olması dışında Kubernetes kümelerine veya üretim ortamlarına manuel erişime izin vermez.
GitOps'un DevSecOps özelliği, CD için bu saldırı vektörü durumunu engellemenin bir yolu olarak "krallığın anahtarlarını" koruyor. Açık kaynak Flux gibi GitOps operatörleri - aşağıda bununla ilgili ek olarak - Kubernetes içinde çalıştığında ve sonuç olarak kümelere erişilebilirliğe sahip olduğunda, elde etme kontrolleri Kubernetes güvenlik çerçevesi içinde olmaya devam eder. Tüketici erişilebilirliği, ayırt edici grupların ve grup üyelerinin ad alanlarına ayrıcalıklar atanarak oluşturulur.
DevSecOps ve GitOps'un bir kişiye nasıl farklı bir şekilde yardımcı olduğuna dair bir örnek olarak, ABD Hava Kuvvetleri'nin ana bilgisayar yazılımı sorumlusu Nicolas Chaillan, kısa bir süre önce ABD Savunma Bölümü (DoD), DevSecOps ve GitOps'un nasıl çalıştığını açıkladı. — Flux ile — ABD'nin güvenlik güçlerinin tüm yelpazesini destekleyen yazılım programı ilerlemesinde hayati bir rol oynar.
Chaillan, "Güvenlik ve güvenlik tartışılamaz, ancak geliştiricinin kendi şirketinin verimliliği ve hızı artırmasını da istiyoruz" dedi.
DoD, bir örnek olarak, GitOps'un "tüm DoD'de yalnızca bir Platform Platformu kurma ve kullanıma sunma konusundaki başarımızın anahtarı" olduğunu iddia ediyor. DoD'ye göre, System Just one, yerleşik güvenlik boru hatlarıyla "izin verilen, sağlamlaştırılmış Bulut Yerli Bilgi İşlem Vakfı (CNCF) uyumlu Kubernetes dağıtımları, kod oynatma kitapları olarak altyapı ve sertleştirilmiş kaplar" çeşitleridir.
Çekler ve bakiyeler
DevSecOps prosedürleri, GitOps tedarik kontrolleri ve dengeleri ile birleşir. Bu şekilde, verdiği erişilebilirlik komutu, geliştiricinin - veya davetsiz misafirin - örneğin, bir arka kapı, sıfır gün veya CI süresi boyunca başka bir güvenlik açığı biçimi tanıtmak için bir tedarik kodu deposuna erişmesini önlemeye yardımcı olur. prosedür. Bunun nedeni, tüm çekme isteklerinin hakem tarafından gözden geçirilmesidir.
CI sistemini destekleyen DevSecOps ile, koddan önce kullanılan kontroller ve dengeler Git'e tahsis edilir ve kümede dağıtılır. Geliştirici normalde bir değişikliği, hakem tarafından gözden geçirilen bir çekme talebi olarak yayınlar. İncelenip yetkilendirildikten sonra kod Git'te birleştirilir ve aranan durumun YAML dosyası daha sonra buna göre değiştirilir.
İstenen koşul, Kubernetes kümesine hemen uygulanacaktır. Daha önce bahsedildiği gibi, DevSecOps özelliklerine sahip doğru GitOps ekipmanı, Git'te bildirilenlere karşılık verdiğinden emin olmak için hedef sürecindeki kesin koşulu sürekli olarak takip eder. Herhangi bir sapma varsa uyarı verilir, böylece düzeltici hareket alınabilir.
DevSecOps görüşlü
Bir dizi GitOps aracı DevSecOps'a yardımcı olur. Açık tedarik Flux, örneğin, gerçek gerçeğin değişmez tek kaynağı olarak Git deposunu sürdürmeye yardımcı olur. Flux'un yetenekleri ayrıca, tahsis edilen ve dağıtılan kod için CI/CD sırasında kontroller ve dengeler için erişilebilirliği düzenlemeye kadar uzanır.
Çok daha fazla fikir sahibi bir Flux karşılaşması için açık kaynak Weave GitOps Main, birçok kümede CI/CD'yi otomatikleştirmeyi etkinleştirmenin ilk yollarını basitleştirir. Weave GitOps Main ile bir GitOps ve DevSecOps yöntemi yerleştirme sistemi, bir konsolda birkaç karmaşık olmayan komut içerir.
Weave GitOps Company, Kubernetes için sürekli uygulama gönderimini ve otomatik operasyonel yönetimi otomatikleştiren ilk GitOps platformu olarak ortaya çıktı. hibrit bulut, çoklu bulut ve uç mimariler boyunca herhangi bir ölçekte.
Birkaç aracın tümü, sürüklenmeyi önlemeye yardımcı olmak için küme yapılandırmasının normalde Git'tekiyle eşleşmesini sağlamak için izlemeyi otomatikleştirmeye yardımcı olur. Eksiksiz ve kullanılabilir bir denetim izi, kümeyi sıfırdan yeniden oluşturmaya gerek kalmadan, temel bir temel üzerinde oluşturulacak uygulama ve küme yapılandırması geri almalarına izin verir.
Özetle GitOps, dağınık Kubernetes ortamları için DevOps'un evrimini ifade eder, ancak DevSecOps, uygulama yaşam döngüsü boyunca GitOps için CI/CD kararlılığını korumanın önemli bir yolu olarak ortaya çıkmıştır.
Steve Waterworth, Weaveworks'te Teknik Pazarlama Süpervizörüdür .