Yazılım malzeme listelerinin (SBOM’ler) önemi, kuruluşlar yazılım tedarik zincirinde daha fazla şeffaflık ihtiyacını fark ettikçe son yıllarda önemli ölçüde artmıştır.
SBOM’lara bu odaklanma, artan siber güvenlik tehditlerine ve yazılım güvenliğini iyileştirmeye yönelik yasal çabalara bir yanıttır. Modern Kubernetes mimarilerinin yükselişiyle birlikte, bu endişeleri gidermek için Kubernetes Malzeme Listesi (KBOM) kavramı bile ortaya çıktı. SBOM’ları dosyada tutan mühendislik ekipleri, bir güvenlik açığı keşfedildiğinde daha hızlı tepki verebilecek.
Bu makale, değiştirilemez yapıtlar için SBOM’un belirli bir yönünü inceleyecektir: kapsayıcı görüntüleri. Açık kaynaklı yazılım kullanarak OCI uyumlu bir görüntünün ve onunla ilişkili SBOM’un nasıl sorunsuz bir şekilde oluşturulacağını ele alacağım.
Araçlara hızlı bir genel bakış
Başlamak için, kullanacağımız açık kaynaklı araçları tanıtalım.
Buildpacks, uygulamanızın kaynak kodunu herhangi bir bulut platformunda çalışabilen görüntülere dönüştüren açık kaynaklı bir projedir. Buidpacks, uygulama kodunuzu tarayarak neyin gerekli olduğunu belirler ve tüm bileşenleri bir kapsayıcı görüntüsünde birleştirir. Dockerfile gerekmez.
Buildpacks görüntülerinizi sıfırdan oluşturabilir veya önceden birleştirilmiş görüntüleri kullanabilirsiniz. Paketo açık kaynak projesinin sağladığı şey budur: En popüler diller ve çerçeveler için üretime hazır Yapı Paketleri. Paketo Buildpacks, topluluğun desteklediği çok sayıda yığın (Java, Go, Python, Ruby, .NET…) ve her zaman güncel çalışma zamanı ve güvenlik yamaları için en iyi uygulamalarla görüntüler oluşturur.
Docker görüntüleri nasıl kolayca oluşturulur?
Şimdi bir kapsayıcı görüntüsünün ve onunla ilişkili SBOM’nin oluşturulmasına geçelim. Bu öğreticiyi mevcut bir Python (veya desteklenen başka bir dil) uygulamasıyla yapabilir veya aşağıdaki örnek uygulamayı kullanabilirsiniz.
Bu örnek uygulamayı kopyalayın:
git clone https://github.com/paketo-buildpacks/samples && cd samples/python/pipenv
CLI paketini yükleyin – proje Linux, macOS ve Windows’un yanı sıra bir dizi paket yöneticisini destekler:
brew install buildpacks/tap/pack
Ardından, örnek uygulama dizininden, adlı bir uygulama görüntüsü oluşturmak için CLI paketini kullanın. python-demo-app:
pack build python-demo-app --builder paketobuildpacks/builder:base
Kapsayıcı resminizin otomatik olarak oluşturulmasını izleyin. İlk yineleme sırasında pack build
temel Paketo Buildpacks görüntüsünü indirmesi gerektiğinden komut ilk çalıştırmada biraz zaman alabilir, sonraki yinelemeler çok daha hızlı olacaktır.
Artık uygulamanızı genellikle yaptığınız gibi çalıştırabilirsiniz.
docker run -d -p 8080:8080 -e PORT=8080 python-demo-app
Docker görüntüsünün bir SBOM’u nasıl oluşturulur?
Artık Docker imajınızı oluşturduğunuza göre, aşağıdaki pack komutuyla SBOM’u oluşturalım:
pack sbom download my-python-app --output-dir sbom-folder/path
Bu kadar! Bu komut, belirtilen dizinde SPDX, Syft, JSON ve CycloneDX biçimlerinde SBOM oluşturacaktır. Uzak bir kayıt defterindeki bir görüntünün SBOM’unu görüntüyü çekmeden indirmek istiyorsanız, --remote
bayrak.
Buidpack’ler, kendinizinkini veya önceden oluşturulmuş oluşturucu görüntüleri koleksiyonu arasından seçim yapmanızı sağlar. Aşağıdaki komutu uygulamanızın kök klasörüne yazarak önerilen oluşturucu görüntülerinin bir listesini alabilirsiniz.
pack builder suggest
Örneğin, ile devam etmek isteyebilirsiniz paketobuildpacks/builder:tiny
ancak güvenlik nedeniyle görüntünün nasıl oluşturulduğu hakkında daha fazla bilgi sahibi olmanız gerekir. Aşağıdaki pack komutunu çalıştırarak ihtiyacınız olan bilgiyi alabilirsiniz:
pack builder inspect paketobuildpacks/builder:tiny
Bu komut, güvenilir bir oluşturucudan gelip gelmediği, ilgili Buildpack’lerin mevcut olup olmadığı (sürüm ve kod ana sayfası ile) ve ayrıca kapsayıcı görüntüsünü oluşturmak için Buildpack’lerin çalıştırılma sırasını, görüntünün sürümünü döndürür.
Çözüm
Konteyner görüntüleri ve bunlarla ilişkili SBOM oluşturmak, Kubernetes tabanlı mimari için modern yazılım geliştirmenin önemli bir yönüdür. Bu, geliştiricilerin karmaşık projelerdeki bağımlılıkları anlamalarını kolaylaştırır ve yazılım tedarik zinciri şeffaflığını geliştirerek güvenlik endişelerini ve uyumluluk gereksinimlerini ele alır.
SBOM’lar giderek daha önemli hale geliyor; ABD hükümeti kısa bir süre önce, bir SBOM gereksinimini içeren, Ulusun Siber Güvenliğinin İyileştirilmesine ilişkin bir ABD Yürütme Emri yayınladı. Kapsayıcı görüntülerinin SBOM’larını oluşturmanın birden fazla yolu olsa da, basit ve CI/CD işlem hattınızın bir parçası olarak eklenebilen bir yol kullanmanızı öneririm.