docker build argümanları - docker build derleme argümanları - docker build derleme argümanı

Docker Derleme Argümanları: Görüntülerdeki Gizli Sızıntıların Gizli Kaynağı

Argüman Oluşturma: Güvenliği Tehlikeye Atabilecek Kolaylık

Docker derleme argümanları, yapılandırma değerlerini derleme zamanında iletmeyi kolaylaştırır, ancak genellikle gözden kaçan bir maliyeti de vardır: bu argümanlar imaj meta verilerinde ve katmanlarında kalır. Geliştiriciler genellikle bu değerlerin derlemeden sonra kaybolduğunu varsayarlar, ancak gerçekte, derleme argümanları Docker talimatları bunları Docker imaj geçmişine yerleştirir.

⚠️Bu örnek güvenlik açısından yetersizdir, yalnızca eğitim amaçlıdır. Üretim ortamında kullanmayın.

FROM node:18 ARG API_KEY=my-secret-key RUN echo "API_KEY=$API_KEY" > /app/config.txt 

Koşu yapan herkes liman işçisi geçmişi or liman işçisi teftiş bulacak API_KEY Görüntünün meta verilerine gömülü değer. Bu, Docker build argümanı talimatı nedeniyle gerçekleşir. commitHer yapım aşamasını kalıcı bir katman olarak ele alır.

Güvenli sürüm:

# Use Docker BuildKit secrets instead of ARG # docker build --secret id=api_key,src=./api.key . FROM node:18 RUN --mount=type=secret,id=api_key cat /run/secrets/api_key > /app/config.txt 

Eğitim notu: Docker derleme argümanları aracılığıyla gizli bilgileri enjekte etmekten kaçının. -gizli BuildKit tarafından hassas veriler için sağlanan bağlantılar; katmanlarda veya meta verilerde asla kalıcı olarak saklanmaz.

Sırlar Katmanlarda ve Meta Verilerde Nasıl Saklı Kalır?

Dockerfile'daki her komut yeni bir imaj katmanı oluşturur. Dosyaları üzerine yazsanız veya silseniz bile, önceki katmanlar önbellekte kalır. Bu nedenle Docker derleme argümanlarıyla veya Docker derleme argümanlarıyla enjekte edilen gizli bilgiler süresiz olarak saklanır.

⚠️Bu örnek güvenlik açısından yetersizdir, yalnızca eğitim amaçlıdır. Üretim ortamında kullanmayın.

FROM python:3.10 ARG GITHUB_TOKEN=ghp_ABC123TOKEN RUN pip install private-package --extra-index-url https://user:$GITHUB_TOKEN@pypi.example.com 

kullanma ARG Bu yöntem, belirteci görüntü katmanına yerleştirir ve bu da görüntü üzerinden görünür hale getirir. docker imajını incele veya önbellekten çıkarıldı. Güvenli sürüm:

# Secure alternative using BuildKit secrets # docker build --secret id=gh_token,src=.secrets/token.txt . FROM python:3.10 RUN --mount=type=secret,id=gh_token pip install private-package --extra-index-url https://pypi.example.com 

Eğitim notu: Bu yöntem kullanıldığında hassas değerler geçmişte kalır. Token'ları ve kimlik bilgilerini korumak için bunun yerine geçici gizli bağlantılar kullanın.

Sık Yapılan Yapılandırma Hataları CI/CD Pipelines

In modern pipelinesgeliştiriciler genellikle gizli bilgileri şu yollarla iletirler: CI/CD Docker argümanları veya paylaşımlı önbellekler kullanan ortamlar. Bu alışkanlık, gizli bilgilerin günlük dosyalarına, çalıştırıcılara ve kayıt defteri önbelleklerine sızmasına neden olur. Ortak koşucularla birlikte GitHub EylemleriGitLab CI veya JenkinsBu sırlar, ilgisiz işlere de kolayca yayılabilir.

⚠️Bu örnek güvenlik açısından yetersizdir, yalnızca eğitim amaçlıdır. Üretim ortamında kullanmayın.

# Never expose real tokens, credentials, or internal URLs in pipelines - name: Build image   run: docker build -t app --build-arg TOKEN=${{ secrets.API_TOKEN }} . 

Bu gizli bilgi, derleme günlüklerine ve görüntü meta verilerine yansıyor ve en az ayrıcalık ilkesini ihlal ediyor. Güvenli sürüm: 

# Secure build command using BuildKit secret mount - name: Secure Docker build   run: docker buildx build --secret id=api_token,src=.secrets/api_token.txt . 

Eğitim notu: Önlemek –yapı-argümanı sırlar için. İçinde CI/CDSırlar asla ortam değişkenleri veya günlükler aracılığıyla iletilmemelidir. Her zaman geçici sır bağlantıları tercih edilmelidir.

Sırların Açığa Çıkmasını Önlemek İçin En İyi Uygulamalar

Gizli bilgilerin ifşa edilmesini önlemek, Docker derleme argümanlarının tasarım gereği herkese açık olduğunu kabul etmekle başlar. Bunlar yapılandırma için (sürüm etiketleri veya özellik bayrakları gibi) harika olsa da, kimlik bilgileri için uygun değildir.

En İyi Uygulamalar

  1. BuildKit'i kullanın. - gizli hassas veriler için.
  2. Gizli bilgileri asla ARG veya ENV aracılığıyla tanımlamayın.
  3. Ekle .env, sırlar/, ve config / dizinlere .dockerignore.
  4. Çok aşamalı derlemeleri uygulayın Özel aşamaları izole etmek için.
  5. Önbellekleri temizle Hassas yapım aşamalarından sonra.
  6. Görüntü meta verilerini doğrulayın Yayınlamadan önce Docker geçmişiyle birlikte.

Mini Önleyici Kontrol Listesi

  • Tüm Dockerfile'ları denetleyin Docker'da derleme argümanları kullanımı.
  • Kimlik bilgilerini BuildKit ile değiştirin. -gizli.
  • Sağlamak .dockerignore Hassas dosyaları hariç tutar.
  • Hassas Temizlik CI/CD Ortam Değişkenleri.
  • Görüntüleri göndermeden önce gizli bilgilerin taranmasını otomatikleştirin.

Eğitim notu: Bir değer Docker derleme argümanı aracılığıyla geçerse, kalıcı hale gelir. Hassas verileri korumak için gizli bağlama noktaları ve izole edilmiş derleme aşamaları kullanın.

Dağıtımdan Önce Derleme Argümanlarının Güvenli Olmayan Kullanımını Tespit Etme

Otomatik tarama, bir imajın üretime gönderilmeden önce riskli Docker derleme argümanı kalıplarını belirlemek için çok önemlidir. Bu amaçla kullanılabilecek araçlar şunlardır: Önemsiz, Hadolint, ve Xygeni Dockerfile'lara veya imaj katmanlarına gömülü kimlik bilgilerini tespit edebilir.

Bağlam ve kontrol koruma mekanizması içeren işlevsel kod parçası.

# CI/CD guardrail: pre-deployment Dockerfile security scan - name: Dockerfile security scan   run: trivy config --severity HIGH, CRITICAL --ignore-unfixed. 

Bu adım, dağıtım öncesinde güvensiz derleme argümanlarını içeren Docker talimatlarını engelleyerek önleyici bir kontrol görevi görür.

Eğitim notu: Dockerfile taramasını zorunlu bir işlem olarak entegre edin. CI/CD Aşama. Otomatik araçlar, tutarlı ve güvenli derleme süreçlerinin uygulanmasına yardımcı olur.

Xygeni, derleme aşamasındaki gizli bilgilerin sızmasına karşı nasıl koruma sağlıyor?

Xygeni Sırların Güvenliği Docker argümanlarının yanlış kullanımına yönelik özel bir tespit mekanizması sağlar. Güvenli olmayan ARG tanımlarını belirler, gizli değerleri derleme aşamaları boyunca izler ve görüntü meta verilerinde veya önbelleğe alınmış katmanlarda kalan kimlik bilgilerini işaretler. Sizinle bütünleşerek CI/CD pipelineBu, birleştirme veya sürüm işlemlerinden önce Docker derleme argümanı güvenlik politikalarını uygular.

İşlevsel kod parçası, bağlamsal uygulama örneği

# Secure enforcement of Docker build arg usage - name: Xygeni Docker ARG enforcement   run: dotnet xygeni enforce --rules dockerfile,secrets,build --fail-on-risk 

Bu işi listenize ekleyin. pipelineSürekli koruma için doğrulama aşaması.

Eğitim notu: Xygeni, güvenli Docker uygulamalarını otomatik olarak uygulayarak, riskli derleme zamanı yapılandırmalarının ortamlar arasında gizli bilgilerin sızmasını önler.

Özetle: Docker'ın Asla Gizli Bilgileri İşlememesi Gereken Derleme Argümanları

Docker derleme argümanları iki ucu keskin bir kılıç gibidir; yapılandırma için kullanışlıdır, ancak gizli bilgiler için risklidir. Eklediğiniz her Docker derleme değeri meta verilerde, imaj geçmişinde veya önbelleklerde kalıcı olabilir.
Yapılarınızı şu şekilde koruyun:

  • BuildKit Kullanımı -gizli Kimlik bilgileri için.
  • Çok aşamalı derlemelerde hassas verilerin izole edilmesi.
  • Dağıtımdan önce sızdırılmış değerleri tarama.
  • Güvenlik politikalarının uygulanması yoluyla Xygeni Code Security.

Sizin yapınız pipeline Güvenliğiniz, ifşa etmediğiniz sırlar kadar sağlamdır. Her Docker build argümanını potansiyel bir ifşa vektörü olarak değerlendirin ve saldırganlar bulmadan önce onu kilitleyin.

sca-tools-software-composition-analysis-tools
Yazılım risklerinizi önceliklendirin, giderin ve güvence altına alın.
Ücretsiz hesabınızı alın.
Hiçbir kredi kartı gerekmektedir.

Yazılım Geliştirme ve Teslimatınızı Güvence Altına Alın

Xygeni Ürün Paketi ile