Konteyner görüntüleri için SBOM’lar nasıl oluşturulur?


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.

kapsayıcı görüntüleri SBOM

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.



Source link