Neden Sır Yönetimi Docker Swarm'da Önemlidir

Modern konteynerli akışlarda, veritabanı şifreleri, API jetleri, TLS sertifikaları ve şifreleme anahtarları gibi hassas bilgiler, çevre değişkenlerinde Storing sırları, yapılandırma dosyaları görüntülere veya geçişte zor kodlanmış, ancak resmi katmanlar aracılığıyla sızıntıya girebilir veya kayıt altına alınamaz.Docker Swarm Mode bu endişeleri, geri kalan sırları kullanarak ve geçişte şifreler ile adresler.

Proper sırları yönetimi, üretim-grad konteyner orkestrasının temel taşıdır.Bu makale, Docker Swarm Mode'de sırları uygulama kılavuzuna sahip, PCI-DSS veya SOS 2 gibi standartları basit bir denetim yolu sunar.

Docker Sırları Derinlik Anlamak

Docker Sırları Nedir?

Docker sırları, yığınların iç veri mağazasında saklanan hassas verilerin şifreli blobs of sensitive data that arecrypt blobs of sensitive data that are never visible via.FLT:0) or in the container's filesystem, tipik olarak bu dosya tabanlı yaklaşım, sırların posta yoluyla maruz kalmamasını sağlar.

Swarm Sırları Diğer Yaklaşımlardan Nasıl Differ

Birçok orkestra çözümü dış gizli mağazalarda (HashiCorp Vault, AWS Sırları Yöneticisi, Azure Key Vault) güvenmektedir ve özel yankar konteynerleri veya SDK entegrasyonu gerektirir. Docker Swarm'ın yerleşik sırları daha basit, entegre bir yol sağlar: hiçbir ilave hizmet, hiçbir satıcı kilitlemez ve karmaşık bir yükleme çözümü otomatik olarak doğrudan Swarm kripto tabakası (AES256-GCM) kullanarak şifrelenir ve TLSsein sırları iletilir kontrol edilir.Bu ana yaklaşım, dışsal olmayan bir çözüm için ideal değildir.

Docker Swarm Sırlarının Anahtar Özellikleri

  • [FONT:0) Geri ve geçişte şifreleme: Sırlar, domuzlukta saklanan zaman şifrelenir ve yönetici ve işçi düğümlerine taşınırken şifrelenir.
  • [FONT:0)Immutability:[[Dönetici: 1 ) Bir kez yaratılan bir sır, bir sır olarak değiştirilemez, yeni bir tane ve yeniden işleyebilme hizmetleri oluşturmanız gerekir.
  • [FONT:0]Least-privilege erişim: Sırlar sadece hizmet tanımının açıkça gizli içerdiği konteynerlere monte edilir. başka bir hizmet veya standalone konteynere erişemez.
  • [FONT:0] Hiçbir çevre değişkeni sızıntısı yoktur:[Dönem:2) Aksine, sırlar hiçbir zaman çevre değişkenleri ile geçilmemektedir, çocuk süreçleri veya debugging komutlarında kaza riskini azaltır.
  • [FONT:0)Automatic Temizleme:[Dönetici:[Dönetici:0) Bir hizmet kaldırıldığında, ilişkili gizli dosyalar konteyner dosya sistemi tarafından silinir.

Docker Swarm Sırlarını Kullanımı Önlemler

Uygulamaya girmeden önce, ortamınızın bu gereklilikleri yerine getirmesini sağlayın:

  • Bir Docker Swarm kümesi ( tek bir ton batarm test için yeterli, ancak üretim birden fazla yönetici kullanmalıdır).
  • Docker Engine 1.13 veya daha sonra (gizliler Docker 1.13 / API v1.25) tanıtıldı.
  • swarm'daki tüm düğümler aynı kümenin ve zaman senkronizasyonun bir parçası olmalıdır (NTP tavsiye edilir) sertifika doğrulama sorunları önlemek için.
  • [FONT: 3] Yöneticide çalıştırılıyor ve herhangi bir işçi düğümleri batarm'a katıldı.

Docker Swarm'daki Sırları Uygulamak için Adım Adım Kılavuzu

Gizli Bir Gizli Yaratmak

Sırlar dosyaların veya gerçek dizelerden oluşturulabilir. önerilen yaklaşım dosyaları kullanmak, çünkü kabuk tarihinin veya loglarda gizli değeri açığa çıkarmaktan kaçınırlar.

Bir Dosyadan Gizli Oluşturun

echo "my-super-secure-password" > secret-file.txt
docker secret create db_password secret-file.txt

Komut sırrın kimliğini döndürür ( 25-karacter hex dizesi). Yaratılışı [[Şeytan-ı Zücelâl-i Zührü-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl-i Zülcelâl

Stdin'den bir Gizli Yaratmak ( disk üzerinde bir dosya bırakmadan)

printf "my-api-token" | docker secret create api_token -

[FONT=S=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FO

Bir Literal Değerinden Gizli Yaratmak (Yazık için tavsiye edilmez)

docker secret create my_secret "literal-value"

Bu yöntem daha az güvenlidir çünkü gerçek değer kabuk tarihinde, komut denetim loglarında veya süreç listelerinde görünebilir. Dosya tabanlı veya stil bazlı yaratımı tercih edin.

Listeleme ve Inspecting Sırları

swarm'daki tüm sırları listelemek:

docker secret ls

Ayrıntıları incelemek (sadece) - gizli değer asla ortaya çıkmamıştır:

docker secret inspect db_password

Çıktı, ID, isim, yaratım tarihi ve etiketler içerir (eğer herhangi biri varsa), ancak gerçek gizli veriler asla.

Gizli Bir Servis Bu Kullanıyor

Bir hizmeti oluştururken, bayrak ile sırlara erişim sağlarsınız. Gizli, konteyner içinde bir dosya olarak monte edilir.

Tek Gizli Bir Servis Oluştur

docker service create \
 --name web_app \
 --secret db_password \
 --publish 80:80 \
 my_alatest

Konteyner içinde, dosyaRANFLT:15 gizli değeri içerir. Uygulama bu dosyayı şifre almak için okur.

Mount Target'ı özelleştirin

Eğer sırrı farklı bir şekilde ya da farklı bir dosya adı ile dökmeniz gerekiyorsa, ESRAT:17 ile bayrağı kullanın. ”

docker service create \
 --name web_app \
 --secret src=db_password,target=/etc/app/db_pass \
 my_alatest

Şimdi sır, konteynerin içinde mevcut.

Konteyner İçen Sırları Erişim

Herhangi bir dilde yazılmış uygulamalar, dosyayı açarak sırrı okuyabilmektedir. Örneğin, bir Bash kabuğunda konteyner içinde:

cat /run/secrets/db_password

Bir Python senaryosu:

with open('/run/secrets/db_password', 'r') as f:
 db_password = f.read().strip()

Sırlar hiçbir zaman çevreye inceleme yoluyla maruz kalmaz; dosya köke aittir ve sadece gizli varsayılan izinler (0400) uygunsa (örneğin, ►FLT:24) tarafından okunabilir.

Bir Gizli (Rotation) Updating a Secret (Rotation)

Çünkü sırlar hayal edilemez, bir sırı güncellemek aslında yeni bir sır yaratmak ve sonra onu kullanan tüm hizmetleri güncellemek demektir:

  1. Yeni bir sır oluşturun: “Şeytan: ﴾29﴿
  2. Yeni sırrı kullanmak ve eski olanı kaldırmak için hizmet Güncelleme: 03:30).
  3. Hizmetin doğru bir şekilde doğru doğru bir şekilde doğru şekilde doğru bir şekilde doğru şekilde doğrulanmasından sonra eski sırrı ortadan kaldırır: “HAKKT:31).

Bu yaklaşım sıfırdan aşağı zaman sağlar: yuvarlanma güncelleştirmesi bir tane tarafından konteynerleri değiştirir, her biri yeni gizli dosyayı alır.

Sırları Yeniden Hareket Etmek

Artık herhangi bir hizmet tarafından referanslanmamış sırları kaldırılabilir. Kullanımın içinde bir sırrı kaldırmaya çalışmak bir hatayla başarısız olacaktır.

docker secret rm db_password_v2

Her zaman hiçbir çalışan hizmetin, kesintiden önce sıra bağlı olmadığını doğrulayın.UseFLT:33). ve gizli referansları kontrol edin.

Gelişmiş düşünceler ve En İyi Uygulamaları

Şifreleme ve Depolama Güvenliği

Docker Swarm Raft loglarında ( dağıtılmış devlet mağazası) bir anahtar kullanarak, swarm'ın TLS sertifikalarından elde edilen anahtarı kullanarak asla düz metinde depolanmaz.Docker Enterprise, işleyici ayrıntılar için zaman önce yönetici sırlarıyla şifrelenir.

LeastPrivilege Access and Segmentation-

  • Sadece onlara ihtiyaç duyan özel hizmetlere yardım edin. vahşi kart veya “tüm sırları” bayrakları kullanmaktan kaçının.
  • Organizasyon sınırlarını uygulamak için etiket sırları ve hizmetleri (örneğin, [[FONTD: 34).
  • Farklı ortamlar için ayrı sırları kullanın (daha fazla üretim) aynı sırrı yığınlara paylaşmak yerine.

Rotation and Expiration

  • CI/CD boru hatları kullanarak otomatik gizli rotasyon. Yeni bir sır yaratın, hizmeti güncelleyin, eski sırrı ortadan kaldırır.
  • Bir program uygulayın (örneğin, her 90 gün veya güvenlik olayından sonra).
  • Yüksek güvenlik ortamları için HashiCor-ptra ile entegrasyon veya dinamik gizli nesil ve kiralama yönetimi için benzer araçlar dikkate alın, ancak bu karmaşıklığı ekliyor.

Denetim ve İzleme

  • Enable Docker denetim (örneğin, [[DüzDÜDÜŞÜN) veya merkezi bir giriş sistemi ile bütünleşmek.
  • Docker Events kullanarak gizli yaratımı, güncelleme ve olayları ortadan kaldırmak: 03.03.2012.
  • Uygulama loglarını veya sistem çağrı denetimini kontrol ederek beklenmedik gizli erişim girişimlerine dikkat edin (örneğin, [[ENFLT:38).

Dış Gizli Mağazalarla entegrasyon

Docker Swarm'ın inşa edilmiş sırları birçok kullanım vakası için yeterli olsa da, bazı kuruluşlar birden fazla orkestrada merkezileştirilmiş gizli yönetim gerektirir (Kubernetes, Docker Swarm, VMs). Bu senaryolarda, Docker Swarm'ı hala docker Swarm'ı dış bir teslimat mekanizması olarak kullanabilirsiniz. Örneğin, bir gizli mağazanın içindeki bir inisiyatifi çağırabilir (kendisi bir Docker sırrı olarak teslim eder) ve sonra çalıştırdığınızda gerçek sırları alabilirsiniz.

Ortak Pitfalls ve Them'dan Nasıl Kaçırmak

  • [FONT:0)Pitfall:[Dönetici:[Dönetici:0))[[Dönetici:0))) Hiçbir zaman gizli dosyaların içeriğini açmaz.
  • [FONT:0)Pitfall:[Dönem:[Dönem: 1]Dönem:[Döncükler:))))|Dış hattınızda otomatik olarak otomatik olarak otomatik olarak otomatik olarak otomatik olarak otomatik olarak otomatik olarak satışa sunuluyor.
  • [FONT:0)Pitfall:[Dönetici:[Dönetici:0)[Dönetici:0)))[Dönetici:[Dönetici:))))))))))))))))) Bir yöneticiye sırf yönetim komutları her zaman bir kuarm yöneticisine ait değildir.
  • [FONT:0)Pitfall:[Döneticileri varsayarsak, her zaman otomatik olarak şifrelenir.]Döntme:2)Döntme:[Dönetici:0)Docker versiyonunun sırları desteklediğini ifade edin (1.13+) ve o eski versiyonlarda, sırlar sadece geçişte şifrelenir, geri kalanı değil.

Gerçek Dünya Örneği: Çok Hizmetli Bir Bakış Bağlantısını Güvenin

Tipik bir yığın düşünün: Natasha tarafından desteklenen bir WordPress sitesi. sırlar olmadan, PNG şifresi çevre değişkeni ile aktarılacak, [[ŞUygunluk sırları ile, bir İZFLT:41'ı yaratırsınız, sonra her iki hizmeti ayrı sır erişimi ile dağıtabilirsiniz.

  1. Gizlilik Yaratın:
  2. İşgücü Natasha hizmeti: [[Dint|
  3. İşsiz WordPress hizmeti: [[Şeytan: 00:23

Her iki hizmet de dosyayı okudu. Şifre hiçbir zaman çevre değişkenlerinde görünmedi ve hiçbir saldırgan bunu, domuzaj yöneticisi erişimi olmadan Docker API'den alabilir.

Dış Kaynaklar ve Daha Fazla Okuma

  • [FONT:0]Docker Resmi Dokümantasyon: Docker Sırları ile Hassas Verileri Yönetmek).
  • [FONT:0]Docker K Referans: Docker gizli bir yarat).
  • [FONT:0]Docker Swarm Mode Architecture and Security).
  • [FONT=0)Docker Blog: Sır Yönetimi için En İyi Uygulamalar).
  • [FONT=0)OWASP Sırları Yönetim Hile Belgesi).

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Docker Swarm Mode, yalnızca yetkili hizmetlere monte edilen sırları, kullanılabilir olmayan birçok saldırı vektörünü ortadan kaldırır ve operasyonel bir ek ekleme olmadan güvenlik gereksinimlerine karşı ihtiyacınız olan en yaygın saldırı vektörlerini ortadan kaldırır.

Takımlar daha gelişmiş yeteneklere ihtiyaç duyuyorlar - dinamik gizli nesil, ince ölçekli erişim kontrolü bugün çok sayıda orkestracı veya donanım güvenlik modülleri ile entegrasyon - Docker Sırları dışlanmış sistemlerle birleştirilebilir. Ancak Docker Swarm dağıtımları için, yerli sırların büyük çoğunluğu için bugün yeterli.