Düzenle

Aracılığıyla paylaş


Karantina düzeni

Azure Container Registry

Tedarik zincirinizde üçüncü taraf yazılım yapıtlarını yalnızca doğrulandığında ve iyi tanımlanmış süreçler tarafından güvenli olarak işaretlendiğinde kullanın. Bu desen, geliştirme sürecinin operasyonel bir sepettir. Bu düzenin tüketicisi, güvenlik açıklarına neden olabilecek yazılımların kullanımını doğrulamak ve engellemek için bu işlemi çağırır.

Bağlam ve sorun

Bulut çözümleri genellikle dış kaynaklardan elde edilen üçüncü taraf yazılımları kullanır. Açık kaynak ikili dosyaları, genel kapsayıcı görüntüleri, satıcı işletim sistemi görüntüleri bu tür yapıtlara örnek olarak verilebilir. Bu tür dış yapıtların tümü güvenilmeyen olarak kabul edilmelidir.

Tipik bir iş akışında yapıt çözümün kapsamının dışındaki bir depodan alınır ve ardından dağıtım işlem hattıyla tümleştirilir. Bu yaklaşımda bazı olası sorunlar vardır. Kaynağa güvenilmeyebilir, yapıt güvenlik açıkları içerebilir veya geliştirici ortamı için başka bir şekilde uygun olmayabilir.

Bu sorunlar giderilmiyorsa, çözümün veri bütünlüğü ve gizlilik garantileri tehlikeye girebilir veya diğer bileşenlerle uyumsuzluk nedeniyle tutarsızlığa neden olabilir.

Bu güvenlik sorunlarından bazıları, her yapıta denetimler eklenerek önlenebilir.

Çözüm

Yazılımı iş yükünüzde kullanıma sunmadan önce güvenlik için doğrulayan bir süreciniz olsun. İşlem sırasında her yapıt, belirli koşullara göre doğrulayan kapsamlı bir işlem katılaşmasından geçer. Yalnızca yapıt bu koşulları karşıladıktan sonra işlem bunu güvenilir olarak işaretler.

Quarantining işlemi, bir yapıt tüketilmeden önce kullanılan bir dizi denetim noktasından oluşan bir güvenlik önlemidir. Bu güvenlik denetim noktaları, bir yapıtın güvenilmeyen bir durumdan güvenilir bir duruma geçiş yapmasını sağlar.

Karantina işleminin yapıtın bileşimini değiştirmediğini unutmayın. Süreç, yazılım geliştirme döngüsünden bağımsızdır ve tüketiciler tarafından gerektiğinde çağrılır. Yapıtın tüketicisi olarak, karantinadan geçene kadar yapıt kullanımını engelleyin.

İşte tipik bir karantina iş akışı:

Bu diyagramda genel Karantina düzeni iş akışı gösterilmektedir.

  1. Tüketici amacına işaret eder, yapıtın giriş kaynağını belirtir ve kullanımını engeller.

  2. Karantina işlemi isteğin kaynağını doğrular ve belirtilen depodan yapıtları alır.

  3. Özel doğrulama işlemi, giriş kısıtlamalarını doğrulamayı ve öznitelikleri, kaynağı ve türü belirlenmiş standartlara göre denetlemeyi içeren karantinanın bir parçası olarak gerçekleştirilir.

    Bu güvenlik denetimlerinden bazıları gönderilen her yapıtta güvenlik açığı taraması, kötü amaçlı yazılım algılama vb. olabilir.

    Gerçek denetimler yapıtın türüne bağlıdır. bir işletim sistemi görüntüsünü değerlendirmek, örneğin NuGet paketini değerlendirmeden farklıdır.

  4. Doğrulama işlemi başarılı olursa yapıt, açık ek açıklamalarla güvenli bir depoda yayımlanır. Aksi takdirde, tüketici tarafından kullanılamaz durumda kalır.

    Yayımlama işlemi, doğrulama kanıtını ve her denetimin kritikliğini gösteren bir toplu rapor içerebilir. Raporun geçersiz olması gereken süre sonunu rapora ekleyin ve yapıt güvenli değil olarak kabul edilir.

  5. İşlem, bir olaya raporla birlikte durum bilgileriyle işaret vererek karantinanın sonunu işaretler.

    Bilgiler temelinde, tüketiciler güvenilen yapıtı kullanmak için eylem gerçekleştirmeyi seçebilir. Bu eylemler Karantina düzeninin kapsamı dışındadır.

Sorunlar ve dikkat edilmesi gerekenler

  • Üçüncü taraf yapıtları kullanan bir ekip olarak, güvenilir bir kaynaktan edinildiğinden emin olun. Seçiminiz, üçüncü taraf satıcılardan temin edilen yapıtlar için kuruluş onaylı standartlara uygun olmalıdır. Satıcıların iş yükünüzün (ve kuruluşunuzun) güvenlik gereksinimlerini karşılayabilmesi gerekir. Örneğin, satıcının sorumlu açıklama planının kuruluşunuzun güvenlik gereksinimlerini karşıladığından emin olun.

  • Güvenilir ve güvenilmeyen yapıtları depolayan kaynaklar arasında segmentasyon oluşturun. Yetkili kullanıcılara erişimi kısıtlamak için kimlik ve ağ denetimlerini kullanın.

  • Karantina sürecini çağırmak için güvenilir bir yönteme sahip olun. Yapıtın güvenilir olarak işaretlenene kadar yanlışlıkla tüketilmediğinden emin olun. Sinyal otomatik olmalıdır. Örneğin, geliştirici ortamına bir yapıt alınırken sorumlu taraflara bildirim gönderme, GitHub deposunda değişiklik yapma, özel kayıt defterine görüntü ekleme vb. ile ilgili görevler.

  • Karantina deseni uygulamanın bir alternatifi de dış kaynak kullanmaktır. İş modeli olarak kamu varlık doğrulaması konusunda uzmanlaşmış karantina uygulayıcıları vardır. Düzeni uygulama ile sorumluluğu dış kaynak oluşturmanın hem finansal hem de operasyonel maliyetlerini değerlendirin. Güvenlik gereksinimleriniz daha fazla denetime ihtiyaç duyuyorsa kendi işleminizi uygulamanız önerilir.

  • Yapıt alma işlemini ve ayrıca yapıtı yayımlama işlemini otomatikleştirin. Doğrulama görevleri zaman alabildiği için, otomasyon işleminin tüm görevler tamamlanana kadar devam edebilmesi gerekir.

  • Desen, ilk fırsat anlık doğrulama işlevi görür. Karantinanın başarıyla geçirilmesi, yapıtın süresiz olarak güvenilir kalmasını sağlamaz. Yapıtın, yayını yükseltmeden önce son fırsat doğrulamaları olarak hizmet veren sürekli tarama, işlem hattı doğrulaması ve diğer rutin güvenlik denetimlerinden geçmesi gerekir.

  • Desen, bir kuruluşun merkezi ekipleri veya tek bir iş yükü ekibi tarafından uygulanabilir. Karantina işleminin birçok örneği veya varyasyonu varsa, bu işlemler kuruluş tarafından standartlaştırılmalı ve merkezileştirilmelidir. Bu durumda iş yükü ekipleri süreci paylaşır ve yük boşaltma işlemi yönetiminden yararlanir.

Bu düzenin kullanılacağı durumlar

Bu düzeni aşağıdaki durumlarda kullanın:

  • İş yükü, iş yükü ekibinin kapsamı dışında geliştirilen bir yapıtı tümleştirir. Bazı yaygın örnekler aşağıdakileri içermektedir:

    • DockerHub, GitHub Container registry, Microsoft container registry gibi genel kayıt defterlerinden bir Open Container Initiative (OCI) yapıtı

    • NuGet Galerisi, Python Paket Dizini, Apache Maven deposu gibi genel kaynaklardan bir yazılım kitaplığı veya paketi

    • Terraform modülleri, Community Chef Cookbook'ları, Azure Doğrulanmış Modülleri gibi bir dış Kod Olarak Altyapı (IaC) paketi

    • Satıcı tarafından sağlanan işletim sistemi görüntüsü

  • İş yükü ekibi yapıtı azaltmaya değer bir risk olarak kabul eder. Ekip, güvenliği aşılmış yapıtları tümleştirmenin olumsuz sonuçlarını ve güvenilir bir ortamı güvence altına almak için karantinanın değerini anlar.

  • Ekip, bir yapıt türüne uygulanması gereken doğrulama kuralları hakkında net ve paylaşılan bir anlayışa sahiptir. Fikir birliği olmadan, desen etkili olmayabilir.

    Örneğin, bir işletim sistemi görüntüsü her karantinaya alınışında farklı bir doğrulama denetimleri kümesi uygulanırsa, işletim sistemi görüntüleri için genel doğrulama işlemi tutarsız hale gelir.

Bu düzen aşağıdaki durumlarda kullanışlı olmayabilir:

  • Yazılım yapıtı iş yükü ekibi veya güvenilir bir iş ortağı ekibi tarafından oluşturulur.

  • Yapıtı doğrulamama riski, karantina sürecini oluşturma ve sürdürme maliyetinden daha düşük maliyetlidir.

İş yükü tasarımı

Bir mimar ve iş yükü ekibi, Karantina düzeninin iş yükünün DevSecOps uygulamalarının bir parçası olarak nasıl kullanılabileceğini değerlendirmelidir. Temel ilkeler, Azure İyi Tasarlanmış Çerçeve yapı taşlarında ele alınmıştır.

Yapı Taşı Bu desen sütun hedeflerini nasıl destekler?
Güvenlik tasarımı kararları, iş yükünüzün verilerinin ve sistemlerinin gizliliğini, bütünlüğünü ve kullanılabilirliğini sağlamaya yardımcı olur. Güvenlik doğrulamasının ilk sorumluluğu Karantina düzeni tarafından karşılanır. Bir dış yapıt üzerindeki doğrulama, geliştirme işlemi tarafından kullanılmadan önce kesimli bir ortamda gerçekleştirilir.

- SE:02 Güvenli geliştirme yaşam döngüsü
- SE:11 Test ve doğrulama
Operasyonel Mükemmellik, standartlaştırılmış süreçler ve ekip uyumu aracılığıyla iş yükü kalitesinin sunulmasına yardımcı olur. Karantina düzeni, güvenliği aşılmış yapıtların iş yükü tarafından kullanılmamasını sağlayarak güvenli dağıtım uygulamalarını (SDP) destekler ve bu da aşamalı maruz kalma dağıtımları sırasında güvenlik ihlallerine yol açabilir.

- OE:03 Yazılım geliştirme uygulamaları
- OE:11 Test ve doğrulama

Herhangi bir tasarım kararında olduğu gibi, bu desenle ortaya konulabilecek diğer sütunların hedeflerine karşı herhangi bir dengeyi göz önünde bulundurun.

Örnek

Bu örnek, çözüm iş akışını, iş yükü ekibinin genel kayıt defterlerindeki OCI yapıtlarını iş yükü ekibine ait azure container registry (ACR) örneğine tümleştirmek istediği bir senaryoya uygular. Ekip bu örneği güvenilir bir yapıt deposu olarak ele alır.

İş yükü ortamı, idareyi zorlamak için Kubernetes için Azure İlkesi kullanır. Kapsayıcı çekme işlemlerini yalnızca güvenilen kayıt defteri örneğinden kısıtlar. Ayrıca Azure İzleyici uyarıları, beklenmeyen kaynaklardan kayıt defterine yapılan tüm içeri aktarmaları algılamak için ayarlanır.

Bu diyagramda, Karantina deseninin Azure Container Registry uygulaması gösterilmektedir.

  1. Dış görüntü isteği, iş yükü ekibi tarafından Azure Web Apps'te barındırılan özel bir uygulama aracılığıyla yapılır. Uygulama gerekli bilgileri yalnızca yetkili kullanıcılardan toplar.

    Güvenlik denetim noktası: İstek sahibinin kimliği, hedef kapsayıcı kayıt defteri ve istenen görüntü kaynağı doğrulanır.

  2. İstek Azure Cosmos DB'de depolanır.

    Güvenlik denetim noktası: Veritabanında bir denetim izi tutulur ve görüntünün kökeni ve doğrulamaları izlenir. Bu iz geçmiş raporlama için de kullanılır.

  3. İstek, dayanıklı bir Azure İşlevi olan bir iş akışı düzenleyicisi tarafından işlenir. Düzenleyici, tüm doğrulamaları çalıştırmak için dağılım toplama yaklaşımını kullanır.

    Güvenlik denetim noktası: Düzenleyici, doğrulama görevlerini gerçekleştirmek için yeterli erişime sahip bir yönetilen kimliğe sahiptir.

  4. Düzenleyici, görüntüyü güvenilmeyen bir depo olarak kabul edilen karantina Azure Container Registry'ye (ACR) içeri aktarma isteğinde bulunur.

  5. Karantina kayıt defterindeki içeri aktarma işlemi görüntüyü güvenilmeyen dış depodan alır. İçeri aktarma başarılı olursa, doğrulamaları yürütmek için karantina kayıt defterinde görüntünün yerel kopyası bulunur.

    Güvenlik denetim noktası: Karantina kayıt defteri, doğrulama işlemi sırasında kurcalama ve iş yükü tüketimine karşı koruma sağlar.

  6. Düzenleyici, görüntünün yerel kopyasında tüm doğrulama görevlerini çalıştırır. Görevler Arasında Ortak Güvenlik Açıkları ve Etkilenmeler (CVE) algılama, yazılım ürün reçetesi (SBOM) değerlendirmesi, kötü amaçlı yazılım algılama, görüntü imzalama ve diğerleri gibi denetimler bulunur.

    Denetim türüne, yürütme sırasına ve yürütme zamanına düzenleyici karar verir. Bu örnekte, görev çalıştırıcıları olarak Azure Container Instance'ı kullanır ve sonuçlar Cosmos DB denetim veritabanında olur. Tüm görevler önemli zaman alabilir.

    Güvenlik denetim noktası: Bu adım, tüm doğrulama denetimlerini gerçekleştiren karantina işleminin çekirdeğidir. Denetimlerin türü özel, açık kaynaklı veya satıcı tarafından satın alınan çözümler olabilir.

  7. Düzenleyici bir karar verir. Görüntü tüm doğrulamaları geçerse, olay denetim veritabanında not edilir, görüntü güvenilen kayıt defterine gönderilir ve yerel kopya karantina kayıt defterinden silinir. Aksi takdirde, yanlışlıkla kullanılmasını önlemek için görüntü karantina kayıt defterinden silinir.

    Güvenlik denetim noktası: Düzenleyici, güvenilen ve güvenilmeyen kaynak konumları arasında segmentasyon sağlar.

    Not

    Karar veren düzenleyici yerine iş yükü ekibi bu sorumluluğu üstlenebilir. Bu alternatifte, düzenleyici doğrulama sonuçlarını bir API aracılığıyla yayımlar ve görüntüyü bir süre karantina kayıt defterinde tutar.

    İş yükü ekibi, sonuçları gözden geçirdikten sonra kararı verir. Sonuçlar risk toleransını karşılıyorsa, görüntüyü karantina deposundan kapsayıcı örneğine çeker. Bu desen, farklı güvenlik riski toleranslarına sahip birden çok iş yükü ekibini desteklemek için kullanıldığında bu çekme modeli daha pratiktir.

Tüm kapsayıcı kayıt defterleri, yeni bulunan sorunları sürekli tarayan Kapsayıcılar için Microsoft Defender kapsamındadır. Bu sorunlar Microsoft Defender Güvenlik Açığı Yönetimi'de gösterilir.

Sonraki adımlar

Bu desen uygulanırken aşağıdaki yönergeler uygun olabilir: