Hashicorp Vault ile Docker Konteyner Sırları Yönetimi
Docker'deki Güvenli Gizli Yönetimin İhtiyaçlarını Anlamak
Konteynerler, hafif, taşınabilir ortamlar sunarak uygulama dağıtımını değiştirdiler, ancak bu değişim API anahtarları, veritabanı bildirimleri ve TLS sertifikaları gibi hassas verileri yönetme zorluğunu güçlendirdi.Docker görüntülerindeki sırları kullanarak, onları sürüm kontrolüne ya da onları konteynerleme uygulamaları için dağıtmaya zorlayan sırları dağıtır.
HashiCorp Vault nedir?
HashiCorp Vault, güvenli bir şekilde mağazaya ve jetonlara, şifrelere, sertifikalara ve şifreleme anahtarlarına erişimi kontrol etmek için tasarlanmış açık kaynak bir araçtır.Gizli erişim için birleşik bir arayüz sunar. Core features include:
- [FONT:0]Dynamic Sırlar:[Dynamic Sırlar:[DDynamic Sırlar:[DDDDynamic Sırlar:[DDDDDDDDDDDDynamic Sırlar:[DDDDDDDDDDDDDynamic Sırlar:[DDDDDDDDDDDDynamic Sırlar:[DDDDDDDDDDDDDDDDDD) Genrate kısa ömürlü, talep üzerine bilgi talebine ilişkin bilgiler (örneğin, 24 saat kiralanan bir veritabanı kullanıcısı).
- [FONT:0]Leasing ve Renewal:[Dönetici:[Dönetici: 1 ) Her sırrın bir kira süresi vardır; uygulamalar bir uzlaşmanın patlama yarığını azaltmak zorundadır.
- [FONT:0)Revokasyon:[Dönemli bir uygulama veya kullanıcı uzlaşmazsa sırlar geçersiz kılar.
- [FONT:0) Reklamcılık Logging:[Dönetici:[Dönetici:[Dönetici: 1 ) Tüm erişim talepleri kaydetmek, açık bir gözaltı zinciri sağlamak.
- [FONT:0) Bir Hizmet Olarak Şifreleme:), Anahtarları uygulamaya maruz bırakmadan şifre ve şifreleme verileri.
Ekran birden fazlaFLUTT'yi destekler: 0.secrets motorları[Dönetici, anahtar değer, veritabanı, PKI, transit, vb.) ve [[Döntme yöntemleri[Döntmeler, AppRole, Kubernetes, LDAP, vb.), neredeyse herhangi bir altyapıya adapte edilebilir hale getirir.
Neden Docker ile Vault kullanın?
Docker konteynerleri ile birlikte, geleneksel gizli enjeksiyon yöntemleri üzerinde çeşitli avantajlar getiriyor:
- [FONT:0]Runtime Retrieval: Sırlar konteyner başladığında veya talep üzerine getirilirken, asla görüntü kayıtlarından sızdıran sırların riskini ortadan kaldırır.
- [FONT:0) Orta Yönetim:[Dönetici:[Dönetici:[Dönetici:0) Tek bir Vault kümesi tüm konteynerli hizmetler için sırları yönetir, konfigürasyonu sürükler ve rotasyonu azaltır.
- [FONT:0]Dynamic Credentials: Her bir konteyner örneği eşsiz, zaman sınırlı kimlikler alabilir.Eğer bir konteyner uzlaşmazsa, haçlı sona erer veya merkezi olarak geri alınabilir.
- [FONT:0]Sürücük Yollar: [Dönetici: [Dönetici: 0,3] Her gizli erişim giriş, uyumluluk gereksinimlerine (SOC 2, HIPAA, PCI DSS) yardımcı olmak için giriş yapılır.
- [FONT:0)Policy-Based Access:[Dönesel erişim: [Dönetici: [Dönesel ACL] Her bir konteynerin ihtiyaç duyduğu sırları sadece görür (en küçük ayrıcalık).
HashiCorp Vault Architecture for Container Workloads
İntegrasyona girmeden önce, Vault'un dağıtım mimarisini anlamak faydalı. Vault, bir sunucu olarak sunucu daemon olarak alginç-değer mağazası geri kazanmak için ) (konsolosluk, vb.), Raft bütünleşik depolama veya bulut tabanlı bir depolamayı ortaya koyar.
konteyner ortamları için, Vault genellikle iki şekilde dağıtılır:
- [FONT=0)Vault Server Cluster[Dönetici: Son derece mevcut, mühürlenmiş/altın küme kullanım talepleri birden fazla konteynerden satın alın.Prot entegre depolamayı daha büyük dağıtımlar için kullanın.
- [FONT:0]Vault Dev Server[Dönetici: Tek bir-node, otomatik olarak, yerel test için ideal, ancak asla üretim için.
Konteynerler resmi olarak ile etkileşime girerler:0)Vault (Dönetici: 0), HTTP API veya bir yankar ajan (Vault Agent) otomatik olarak kimlik doğrulama ve gizli bir şekilde teslim eder.
Docker ile bütünleştirici: Core Desenler
Ekran sırlarına Docker konteynerlerine enjekte etmek için birkaç kanıtlanmış desen var. Seçim sizin orkestratasyon katmanınıza ve operasyonel olgunluğa bağlıdır.
1.Internalpoint scripts'te Vault CLI'yı kullanarak
Bu en basit modeldir. konteyner resmi, Vault CLI'yı içeriyor ve bir giriş noktası kabuğu senaryosu, Vault'a gerçekleştirilebilir, sırları getiriyor ve bunları çevre değişkenleri veya dosyaları olarak uygulamaya enjekte ediyor.
# Dockerfile
FROM alpine:latest
RUN apk add --no-cache vault ca-certificates
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
# entrypoint.sh
#!/bin/sh
export VAULT_ADDR="http://vault.example.com:8200"
vault login -method=approle role_id="$ROLE_ID" secret_id="$SECRET_ID"
API_KEY=$(vault kv get -field=api_key secret/myapp)
export API_KEY
exec myapp
konteyner, ortam değişkenleri (veya monte edilmiş dosyalar aracılığıyla) olarak belirlenen USBAR:2) ve [[Düzgeler (veya monte edilmiş dosyalar) olarak kabul edilir.Bu yaklaşım, kapın Vault ve tam Vault ikilisine erişimi olmasını gerektirir.
2. Vault Agent Sidecar
[FONT=0]Vault Agent[[Dönetici:0)[Dönetici] veya Dockere hizmeti veren bir daemondır.Onlara dosyaları veya şablonları yeniler ve işliyor.
# config.hcl for Vault Agent
vault {
address = "http://vault.example.com:8200"
}
auto_auth {
method "approle" {
mount_path = "auth/approle"
config = {
role_id_file_path = "/tmp/role-id"
secret_id_file_path = "/tmp/secret-id"
}
}
}
template {
source = "/tmp/secrets.ctmpl"
destination = "/etc/secrets/app.env"
}
Ajan, sırların yenilendiği zaman çoğaltma ve yeniden elde edilen çıktı için şablon izler.Bu de uygulama kodundan gizli geri dönüş.
Docker Swarm, inşa edilmiş bir gizli sisteme sahiptir, ancak Swarm Raft loglarında sırları depolamak uyumluluk ihtiyaçlarını karşılayamaz. Üçüncü taraf Vault gizli sürücü, Swarm gizli isteklerine göre daha az yaygındır, ancak organizasyonlar için zaten Swarm'a yatırım yapmak için kullanışlıdır.
4. Kubernetes CSI Sürücü ile Bütünleşme
Kubernetes kullanıcıları için, [[Dönetici:0)Vault CSI Provider[DÜT:1), App değiştirmeksizin bir araya getirmek için Konteyner Depolama Interface (CSI) kullanır.Bu, Kubernetes Sırları ile sorunsuz bir şekilde entegre eder ve otomatik rotasyonu destekler.
Konteynerler için Kimlik Yöntemleri
Doğru kimlik doğrulama yöntemi seçmek güvenlik ve otomasyon için kritiktir. Ortak seçenekler şunlardır:
- [FONT:0)AppRole[[Dönetici: Otomasyon için ideal. konteynere bir aŞFLT:5) ve aahiFLT:6) (sonuncu bir token veya başka bir sır olabilir).
- [FONT=0]Kubernetes Auth[[Dönler: Kubernetes'te çalışırken, Vault hizmet hesap belirteçlerini doğrulayarak gerçekleştirilebilir.
- [FONT:0)JWT/OIDC[DÜT:1): konteynerlerin güvenilir bir kimlik sağlayıcından JWT jetleri olduğu bulut-natif ortamlar için uygun.
- [FONT:0)Token[[DÜT:1): Basit ama en azından güvenli. Hediyeler CI/CD boru hatlarında veya orkestra aracılığıyla önceden yapılandırılabilir.
Dinamik Sırlar: Gerçek Güç
Bir Vault'un Docker iş yükleri için en güçlü özelliklerinden biri şu şekildedir:0)dynamic sırları).Aksiyeltendeki statik kimlikleri depolamak yerine, Vault'un anahtar değerli mağazasına bağlanabilir, Azure, MongoDB) ve uçta geçici bir kullanıcı oluşturabilir.
# Example: Enable PostgreSQL secrets engine
vault secrets enable database
vault write database/config/my-postgres-database \
plugin_name=postgresql-database-plugin \
allowed_roles="my-role" \
connection_url="postgresql://{{username}}:{{password}}@postgres.example.com:5432/myapp" \
username="vault_admin" \
password="super_secret"
vault write database/roles/my-role \
db_name=my-postgres-database \
creation_statements="CREATE USER \"{{name}}\" WITH PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
default_ttl="1h" \
max_ttl="24h"
Konteyner daha sonra bir haçlı talep eder: 03.Örnek: 03. Bu, bir saat boyunca geçerli eşsiz bir kullanıcı / kelime döndürür. Hiçbir statik bilgi hiçbir yerde depolanmaz.
Docker + Vault için en iyi uygulamalar
- [FONT:0) Görüntülerde asla sert kodlanmış sırların.[Dönetici:0) Yalnızca çalıştırma süresini kullanın.
- [FONT:0)En az ayrıcalık tablo politikaları kullanın.[[Dönetici: 1 ) Her bir konteyner veya hizmet sadece kendi sırları ve yollarını okuyabilmelidir.
- [FONT=0)Prefer Vault Agent veya yancars[Döneticileri içinde yer alan tabloları genişleterek, yaşam döngüsünü yönetimlerini basitleştirir ve görüntü boyutunu azaltır.
- [FONT:0)Rotate AppRole SecretIDs sık sık sık sık kullanılır.[DÜT:1) veya maruz kalmaları için periyodik jetonlar kullanın.
- [FONT:0)Enable denetim Girişi, Pencere ve gemi girişlerinde merkezi bir SIEM'e giriş yapar.
- [FONT:0)Secure Vault'un kendisi:[Dönetici:[Dönetici:0) Tüm iletişim için TLS kullanın, otomatik olarak otomatik olarak (KMS, bulut HSM) ve sadece orkestralara ve konteynerlere erişim kısıtlama.
- [FONT:0]Handle gizli yenileme lütufla bir şekilde yeniden yapılır.[[Döneticiler) Uygulamalar yeniden başlatmadan önce kimlikleri yenilemelidir.
- [[Dönetici senaryoları için test:[Dönetici:0) Uygulamanın incelenmesini sağlamak için Simulate Vault downtime, network partitions ve token sonsuzluk.
- [0]Sürek sırları ve bir konteynerin uzlaşması durumunda maruz kalmaları için kısa TTL'leri [DüzDÜT:1] kullanın.
- [FONT:0) Bir sır kıkırık tabakası[Dönetici:0)[Dönetici:0)Düzücük ortam için yüklemeyi ve performansı geliştirmek.
Alternatiflerle Karşılaştırma
Vault lider bir çözüm olsa da, diğer yaklaşımlara nasıl kıyaslandığını anlamak gerekir:
- [FONT=0]Docker Yerli Sırlar [Dönetici: Basit ama statik sırları ile sınırlı değil, dinamik bir nesil, denetim izi veya iyi ölçeklenmiş politikalar. Raft loglarında mağazaya.
- [FONT=0]Kubernetes Sırları : Temel statik sırları altta 64-kolaysız (ve bu ekstra yapılandırma gerektirir) kümeler arasında merkezi yönetim olamaz.
- [FONT=0)Cloud Provider Secret Managers[Dönetici:0)[Dönetici:0)Cloud Provider Secret Managers[Dönetici:0)Cloud Provider (AWS Sır Manager, Azure Key Vault, GCP Gizli Manager): Ekosistemleriyle iyi entegrasyon ancak kilit-in. genellikle veritabanı veya PKI için dinamik sırların olmaması.
- [FONT:0]CyberArk Conjur[[Dönetici: Enterprise- odaklı, ayrıcalıklı erişim yönetimi üzerinde güçlü, ancak konteyner kullanımı için daha karmaşık ve maliyetlidir.
Vault açık kaynak esnekliği, zenginlik ve geniş platform desteği arasında bir dengeyi vuruyor, bunu çoklu bulut ve hibrit Docker dağıtımları için popüler bir seçim yapıyor.
Docker için bir üretim-Grade Vault
- [FONT:0)Yüksek olarak kullanılabilir bir Vault Cluster [Dönetici: Kubernetler üzerinde resmi Vault Helm grafiğini kullanın veya Raft depolama ile manuel HA modunda çalıştırın. en az üç düğümü öğrenin.
- [FONT=0) Auto-Unseal[[Dönetici: Bir bulut KMS (AWS KMS, Azure Key Vault, GCP Cloud KMS) veya HSM. asla aynı kümede yersiz anahtarlar depolayın.
- [[Enable Denetim Cihazları[[Dönetici:0)[Döneticileri kontrol etmek için oturumlar gönderin ve güvenli bir dış mağazaya gönder.
- [FONT:0]Set Up Politikalar ve Rollar[Dönler: Her hizmet için politikalar oluşturun (örneğin, [[Dönler: 0:10). Bu, bunları AppRole rolleri veya Kubernetes hizmeti hesaplarına uygulamak için.
- [FONT=0)Efkele İçerenler[Döneticiler: Kubernetes'te, Vault CSI Provider veya Vault İnit (mutating webhook) için ham Docker, Use Vault Agent sidecar kapsayıcı konteynerleri Docker aracılığıyla kullanın.
- [[Düzücüler:0)Test Dinamik Sırlar): Veritabanı sırları motoru kullanılabilir ve roller oluşturabilir.Korunlar geçici kimlikleri talep edebilir ve kullanabilir.
- [FONTNT=0)Implement CI/CD Entegrasyonu[DÜT:1): Boru hattınızda her bir inşaat aşaması için geçici jet API'si kullanın, statik kimliklerden kaçın.
Güvenlik Gizli Depolamanın Ötesinde Düşünmek
Vault kullanarak gizli maruz kalma riskini azaltır, ancak tüm saldırı vektörlerini ortadan kaldırmaz:
- [FONT:0)Network güvenliği): Güvenli bir ortamdaki pencerelerin halka açık internete maruz kalmamasını sağlamak. mümkünse iç DNS ve TLS karşılıklı kimlik doğrulamasını kullanın.
- [FONT:0]Image kanıtlanmışance[[[DÜT 1: 1): Bu temel görüntülere ve geri çekilen paketlerin güvenilir kayıtlardan olduğunu belirtmek.
- [FONT:0]Runtime monitoring[[[DÜT:1): konteyner güvenlik araçları kullanın (Falco, Tracee, AppArmor) beklenmedik işlem yürütmelerini veya dosya erişimlerini tespit etmek için.
- [FONT:0) Sekreterlik [Döntücüler: Pencere ile bile geliştiriciler yerel test için çevre dosyalarında hala zor kodlanmış sırları kullanabilir. Enforce politikaları ve Vault Dev proxy'leri kullanabilir.
- [FONT:0)L Hastalık yönetimi[DÜT:1): Yeni kiralamaları yenilemeye başarısız olan uygulamalar kritik anlarda erişim kaybedebilir. Uygulama sağlık kontrolleri ve geri dönüş mekanizmaları.
Gerçek Dünya Kullanım Örneği: Veritabanı Credentials ile Mikro hizmetler
20 mikro hizmetle e-ticaret platformu düşünün, her biri belirli bir PostgreSQL veritabanına bağlanır.Atra olmadan, her hizmet, dağıtımda sabit veya görüntüde zor bir veritabanı kullanıcısına sahiptir. Rotating password tüm hizmetleri yeniden çalıştırmayı gerektirir.
- Her hizmet AppRole veya Kubernetes auth aracılığıyla gerçekleştirilebilir.
- Tüm hizmetler başlangıçta dinamik veritabanı bilgilerini talep eder.
- Credentials 1 saat boyunca geçerlidir ve otomatik olarak Vault Agent tarafından yenilenir.
- Bir hizmet uzlaşmazsa, operatör bir komutadaki tüm aktif kiralarını geri döndürür.
- Veritabanı denetim logları geçici kullanıcılar ortaya çıkıyor, çalınan herhangi bir kriedential patlama yarığını azaltır.
Bu model operasyonel yükü azaltır ve güvenlik duruşunu önemli ölçüde geliştirir.
Ortak Pitfalls ve Them'dan Nasıl Kaçırmak
- [FONT:0)Kontrol/unseal Vault'u mühürlemek için: [Dönetici: 1) Üretimde, Vault mühürlenmiş. Otomatik unsealing ( oto-unseal) gereklidir.
- [FONT:0)Dörtlü pencere pencere pencere pencereleri girişlerinde belirtilmiş:) Tank girişlerinde ortaya çıkan jet Bank'ı kullanarak yanıt almak veya Vault Agent'ı kullanın.
- [FONT:0)Mixing statik ve dinamik sırları:) Pencerenin KV mağazasında uzun ömürlü statik sırları depolamaktan kaçının.
- [FONT:0) Pencereyi planlamamak için değil: TTL-aware caching ile önbellek sırları veya geçici olarak ayakta tutan yankarları kullanın.
- [FONT:0) Tamamen izinsiz politikalar: Ön uç konteynere verilen bir politika, veritabanı şifrelerini geri getirebiliyordu.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Docker konteynerleri ile HashiCorp Vault, güvenlik, uyumluluk ve operasyonel verimlilik konusunda ciddi bir organizasyon için en iyi uygulamadır. Statik, sert kodlanmış sırları dinamik, merkezi olarak yönetilen gizli bir yaşam döngüsüne yönlendirerek, riskinizi azaltırsınız, rotasyonlarınızı basitleştirir ve müşteri yankarlarını kullanın, Kubernetes CSI veya özel giriş noktaları, Vault, konteynerleşmiş ortamlardaki gizli bir temel sağlar.
Daha fazla okuma için, [[Döneticileri:0) resmi olarak tablo belgeleri[Dönetici:2)Docker Sırları genel olarak genel olarak[Dönetici: 3 ) ve [[Dönetici|Dönetici|Dönetici|Dönetici|Dönetici|Dönetici|ebilinme/tr|ekonuşturma|egiler)