Docker sırları - Docker Compose sırları

Docker'ın Sırları CI/CDHassas Verilerin Sızmasını Durdurun

Docker'ın Gizli Bilgileri Nasıl Çalışır ve Geliştiriciler Bunları Nerelerde Kötüye Kullanır?

Docker secrets, API anahtarları, veritabanı şifreleri ve token'lar gibi hassas verileri güvenli bir şekilde yönetmek için tanıtılmıştır. Bu özellik, secrets'ı dosya olarak bağlayarak çalışır. /çalıştır/sırlar Bir konteynerin içinde yer alır ve yalnızca konteynerleştirilmiş hizmet tarafından erişilebilir. Bu mekanizma, en azından teoride, sırları ortam değişkenlerinden ve günlüklerden uzak tutar. Sorun, geliştiricilerin bu mekanizmayı atlamasıyla başlar. Docker Compose sırlarını kullanmak yerine... Özelliğin düzgün çalışması için, sırlar genellikle doğrudan kodlanır. Dockerfile, commitGit'e eklenir veya ortam değişkenleri aracılığıyla enjekte edilir. Bu kısayollar, sırların günlükler, kapsayıcı katmanları veya sürüm geçmişi yoluyla yanlışlıkla ifşa edilmesine karşı savunmasız hale gelmesine neden olur.

# Risky ENV DB_PASSWORD=mysecretpassword 

⚠️ Güvenlik açığı içeren örnek, üretim ortamında kullanmayın.

Bu satır eklendikten sonra, resmin içine katmanlanır. Resme erişimi olan herkes (yapı önbelleği, kayıt defteri veya CI/CD (kayıtlar) bunu çıkarabilir. Daha da kötüsü, bu durum genellikle incelemeler sırasında fark edilmez çünkü "kendiliğinden çalışır".

Docker Compose Sırları ve Paylaşılan Yapılandırma Dosyalarındaki Gizli Riskler

Docker Compose, çoklu konteyner uygulamalarını basitleştirir, ancak Docker Compose sırları Gizli riskler de beraberinde gelir. Geliştiriciler sıklıkla paylaşır. Docker Compose.yml or .env Git, Slack veya paylaşımlı sürücüler aracılığıyla dosyaları ekipler ve ortamlar arasında paylaşın.

services: app: image: myapp secrets: - db_password  secrets: db_password: file: ./secrets/db_password.txt 

⚠️ Bu sadece bir örnektir, sürümlü dosyalara gerçek gizli bilgilerinizi eklemeyin.

Sorun ne? Bunlar Docker Oluşturma sırları Referanslar yerel dosyaları varsayar, ancak pratikte bu dosyalar sürümlendirilir veya güvenli olmayan bir şekilde dağıtılır. Sırlar Git depolarına sızar, ortaya çıkar. pull requestsYa da diğer klasörlere kopyalanır. "Hepimiz bunun yapılmaması gerektiğini biliyoruz" varsayımı commit "Sırlar" bir güvenlik politikası değildir.

Daha da kötüsü, test ve üretim gibi ortamlar aynı dosyaları tekrar tekrar kullanabilir. liman işçisi-compose.ymlBu durum, yanlış bir ayrılık hissi yaratıyor. Yanlış yapılandırılmış bir .env Dosya ve üretim sırları bir test ortamına enjekte edilir.

CI/CD Pipelines: Docker'da Gizli Bilgilerin İşlenmesinin Bozulduğu Noktalar

In CI/CD, Docker sırları İzole edilmezlerse dağılırlar. Sırlar sık ​​sık sızar. Üç yerde: günlüklerde, görüntü katmanlarında ve paylaşılan çalıştırıcılarda.

Kayıtlar: CI adımları yazdır echo $SECRET_KEY Sorunları gidermek için. Ancak bu kayıtlar bazen herkese açık olarak saklanır. Şu gibi araçlar: GitHub Eylemleri or GitLab Kayıtları günlerce veya haftalarca saklayın.

Görüntü KatmanlarıEğer bir Dockerfile derleme sırasında gizli bir veri ekliyorsa:

RUN echo "$SECRET_KEY" > /app/config.txt 

⚠️ Güvenlik açığı içeren örnek; bu, görüntü katmanlarındaki gizli bilgileri açığa çıkarır.

O Docker sırrı Artık bir görüntü katmanının parçasıdır. Dosyayı daha sonra silseniz bile, önceki katman görüntü geçmişinde kalır.

Paylaşımlı Koşucular: Birçok CI/CD Platformlar paylaşımlı çalıştırıcılar kullanır. Gizli bilgiler düzgün bir şekilde kapsamlandırılmaz veya temizlenmezse, diğer derlemeler bunlara erişebilir. Daha da kötüsü, gizli bilgiler bazen varsayılan olarak tüm adımlara ortam değişkenleri olarak iletilir.

Kodda Docker'ı Güvenli Hale Getirme, Pipelines ve Siciller

Karantinaya almak için Docker sırlarıGeliştirme ekiplerinin katmanlı savunmalara ihtiyacı var:

  • Gizli yöneticileri kullanın. AWS Secrets Manager, HashiCorp Vault veya Doppler gibi araçlar, çalışma zamanında gizli bilgileri güvenli bir şekilde konteynerlerinize enjekte eder ve döndürür.
  • Kapsamları sınırlandırınÜretim ortamındaki gizli bilgileri asla geliştirme/test ortamlarında ifşa etmeyin. Kimlerin gizli bilgileri ekleyebileceğini veya okuyabileceğini kısıtlamak için rol tabanlı erişim kontrolü (RBAC) kullanın.
  • Gizli bilgiler için ortam değişkenlerinden (ENV) kaçının.. Kullanmak Docker sırrı Birimleri veya bağlama sırlarını açıkça dosya olarak tanımlayın.
  • Yapıları temizle: Gizli bilgilerin görsellere işlenmediğinden veya ara dosyalarda kalmadığından emin olun.
  • Konteynerleri ve depoları tarayınGörüntüleri, git geçmişini ve diğer dosyaları inceleyen araçlar kullanın. CI/CD Sızdırılan gizli bilgiler için yapılandırma dosyaları.

Docker Gizli Bilgilerinin Açığa Çıkmasını Önlemek İçin En İyi Uygulamalar

  • Geçici sırlarCI çalıştırmaları sırasında tek kullanımlık gizli anahtarlar oluşturun. Bu anahtarlar süresi dolduğu için çalınırsa tekrar kullanılamaz.
  • Gizli sırlarGit'te gizli bilgileri şifrelemek için Kubernetes Sealed Secrets veya SOPS kullanın. Bu, gizli bilgilerin güvenli bir şekilde sürümlendirilmesini sağlar.
  • CI/CD politikaları: Şu gibi politikaları uygulamaya koymak: Dockerfile'da gizli bilgi yok.Blok, gizli bilgilerin tespitine dayanır ve kullanım günlüğüne kaydedilir. Docker sırları başına pipeline.
  • Pre-commit hooks: Engellemek commitSırları olan s'leri, aşağıdaki gibi araçlar kullanarak git-sırları or gizli sırları tespit et.
  • Değişmez altyapı: Konteynerlerdeki gizli bilgileri değiştirmeyin. Yeni bilgilerle yeniden oluşturun ve yeniden dağıtın. Docker sırları yerine.

Sonuç

Yanlış kullanıldığında, Docker sırları Güvenlik özelliği olmaktan ziyade bir yükümlülük haline gelmek. Docker Compose sırları YAML dosyaları aracılığıyla sızmak CI/CD pipelineKayıtlarda veya katmanlarda gizli bilgilerin açığa çıkması gibi durumlarda riskler gerçek ve önlenebilirdir.

Gibi araçlar kullanarak XygeniEkipler, açığa çıkan durumları tespit edebilir. sırları Erken aşamada, gizli bilgilerin işlenmesine ilişkin politikaları uygulayın ve kod, konteynerler ve diğer ortamlarda güvenlik açıklarını tarayın. pipelines. D'nize iyi bakın.ocker sırrı Stratejiyi kritik altyapı olarak görün. Güvenliğini ciddiye alın.

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