Hashicorp Vault ile Sırları Yönetmek için En İyi Uygulamalar Ci /cd
CI /CD'de HashiCorp Vault ile Sırları Yönetmek için En İyi Uygulamalar
Gizliliği güvenli bir şekilde yönetmek modern CI/CD boru hatlarının kritik bir yönüdür. API anahtarlarının herhangi bir sızıntısı, veritabanı kimlikleri veya jet entegrasyonu için en iyi uygulamaları benimsemeye, takımların maruz kalmalarını ve teslimiyetin kesintisini azaltmasını sağlar. HashiCorp Vault, gizli yönetim için sağlam, kurumsal sınıflama çözümü sunar.
Bu kılavuz, HashiCorp Vault'u CI/CD ortamında kullanmayı amaçladığı kanıtlanmış stratejileri özetliyor.Sesersiz sırları nasıl kullanacağınızı öğrenecek, geçişte ve geri kalanında şifreli verileri kullanarak, sürekli olarak geri dönüşümlü kimlikleri takip edeceğiz ve tüm gizli erişimleri izlemek için entegrasyon modellerini de izleyeceğiz.
Bu uygulamalara giriş sadece güvenlik duruşunuzu güçlendirmeyecek, aynı zamanda operasyonel iş akışlarını da azaltır ve SOC 2, PCI DSS ve HIPAA gibi düzenleyici gereklilikleri yerine getirmeye yardımcı olacaktır.
HashiCorp Vault'u CI/CD'de Anlamak
HashiCorp Vault, güvenli bir şekilde depolamak ve kablolara, şifrelere, sertifikalara ve diğer sırları kontrol etmek için tasarlanmış bir araçtır. CI/CD iş akışlarında, Vault, gizli yaşam döngüsü oluşturabilir ve erişim politikalarına izin vermek için tasarlanmıştır.
Vault, REST API, CLI ve yerli kimlik doğrulama eklentileri aracılığıyla CI/CD sistemleri ile bütünleşir: Tipik desen şunları içerir:
- [FONT:0]Authentication:[Dönetici:[Dönetici: 0) CI/CD boru hattı, AppRole, Kubernetes auth veya CI aracı tarafından enjekte edilen kısa ömürlüdür.
- [FONT:0)Gizlilik Retrieval:[Dönetici:[Dönetici: 1) Bir inşa veya dağıtım aşamasında, boru hattının pencereden sırları – bir KV mağazasından veya dinamik sırların bir veritabanından, buluttan veya PKI motorundan.
- [FONT:0)Usage:[[Döneticiler geçici olarak çevre değişkenlerine, konfigürasyon dosyalarına veya komut argümanlarına enjekte edilir, sonra bir veritabanına bağlanmak, eserler imzalamak veya bulut sağlayıcıya dağıtma gibi görevler için kullanılır.
- [FONT:0)Temiz:[[Dönem:[Dönem:))) Uygulamadan sonra, boru hattı geçici kimlik veya başlangıç ortamı değişkenlerini maruz kalma penceresini azaltmak için geri döndürür.
Bu yaklaşım, Git havuzlarında sırları saklama ihtiyacını ortadan kaldırır, CI/CD yapılandırma dosyaları veya sanat kayıt kayıtları, büyük ölçüde saldırı yüzeyinin azaltılması.
Pencere ile Gizli Yönetimin Temelleri
1. Dinamik Sırları Kullanın
Statik sırları - yıllardır kullanılan tek bir veritabanı şifresi gibi - bir güvenlik sorumluluğudur. Eğer uzlaşmazsa, bir AWS rolüne kadar kalıcı erişim sağlar. Vault'un dinamik gizli motorları kısa süre boyunca uçarak (TTL) değerleri ile ilgili bilgi oluşturur. Örneğin, Vault, bir PostgreSQL kullanıcısı veya bir IAM erişimi için benzersiz, zaman kısıtlı bir şifre oluşturabilir.
Dinamik sırları birkaç avantaj sunar:
- [FONT:0)Short yaşam:[Dönem:[Dönem: 1] Sırlar otomatik olarak, genellikle dakika veya saat içinde sona ermektedir.
- [FONT:0)Per-session benzersizness:[Dönetici:[Dönetici: 1 ) Her bir boru hattının çalıştırdığı ayrı kimlikler, daha önceki bir inşadan bir uzlaşmayı yeniden kullanmak imkansız hale getirir.
- [0]Automatic revokasyon: [Dönetici:[Dönetici:0) Pencereler boru hattı tamamlandıktan hemen sonra dinamik sırları geri döndürebilir veya TTL sona erdiğinde.
Dinamik sırları uygulamak için, gizli bir motor (örneğin, veritabanı, AWS, Azure) tanımlanmış bir rol ve varsayılan TTL ile yapılandırın. Boru hattınız o rolün için bir kira talep eder ve sadece işin süresi için geri bildirim kullanır.
2. Tamamlement Fine-Grateed Access Control
Ekran politikaları HCL'de yazılır (HashiCorp Konsül Dili) ve bir yol tabanlı izin modeli takip eder. Her politika hibeleri veya belirli gizli yollara ve yeteneklerine erişim sağlar (oku, oluşturmak, güncelleme, silme, liste, sudo).
Bu yönergeleri göz önünde bulundurun:
- [FONT:0)Role tabanlı politikalar:[Dönetici:[Dönetici:0))) gelişim, yönlendirme ve üretim hatları için ayrı politikalar oluşturun. Bir CI iş binası asla üretim sırlarına erişilmemelidir.
- [FONT:0)Path kısıtlamaları:[Dönetici:0)[Dönemli yollara erişimin gerekli olduğu kesin gizli yollara erişimin sınırlandırılması. Örneğin, bir veritabanı politikası, [[Dönetici:0)\'a izin verebilir.
- [FONT=0) Zamana ulaşan erişim:[Dönetici:[Dönetici:0) TTLs ve yenileme sınırları ile politikaları birleştirin. Bir boru hattının token çalınsa bile, geçerlilik penceresi sınırlıdır.
- [FONT:0) Kimlikler kullanın:[Döneticiler ve Gruplar Belirli CI /CD araçları, işler veya hizmet hesapları için politikalar eklemek için politikaya giriş.
CI boru hattı için minimum politika:
path "database/creds/ci-app" {
capabilities = ["read", "list"]
}
path "secret/data/ci/*" {
capabilities = ["read", "list"]
}
path "auth/token/lookup-self" {
capabilities = ["read"]
}
3. Geri ve Transitta Sırları Şifreleme
Ekran otomatik olarak, arka uçlarında bir master anahtar kullanarak depolanan tüm verileri şifreler. Bu anahtarın kendisi şifreli ve dış anahtar yönetim servisi (KMS) veya bir donanım güvenlik modülü (HSM) ile yönetilebilir. Ancak, transitteki şifreleme CI/CD ajanlar ve Vault arasındaki tüm iletişim TLS 1.2 veya daha yüksek olmalıdır.
En İyi uygulamalar:
- [FONT:0)Enable TLS:[Dönetici:[Dönetici:0) Configure Vault server with a valid sertifika from a reliable CA or an internal PKI.
- [FONT:0) Sertifikaları Çözme:[Döneticiler:[Döneticiler:0) CI/CD müşterileri, Vault server'ın sertifika zincirini doğrulamalıdır.
- [FONT:0) Mümkün olduğunda karşılıklı TLS kullanın:) Ekstra güvenlik için, CI/CD sistemlerinde müşteri sertifikalarını gerektirir.
- [FONT:0) Ağ üzerinde düz metinden yoksun: Asla HTTP veya şifrelenmemiş bağlantıların üzerinden sırları getir. Çoğu CI/CD ajanlar, tablo adresini ve token'i güvenli bir şekilde enjekte edebilecek çevresel değişkenleri destekler.
4. Automate Secret Rotation
Düzenli rotasyon, sızıntı bir sırdan zarar verir. Vault'un dinamik sırları her bir kiralama isteğiyle otomatik olarak döndürülür, ancak KV mağazalarında statik sırların da rotasyona ihtiyacı vardır. HashiCorp, Vault'un ve ).
Statik sırların otomat rotasyonu:
- Vault'un KV v2 motorunda statik sırları, sürüm ve kontrol-ve-set işlemleri destekleyen.
- Planlanan bir iş yazın (kron, Nomad periyodik toplu veya CI boru hattı) yeni değerler üretir ve bunları Vault'a yazar.
- Herhangi bir bağımlı sistem (databases, API ağ geçidi) ile yeni gizli Vault’un eklenti ekosistemi veya dış senaryolar ile güncelleyin.
- Ekranın 3.'ünü kullanın, normal aralıklarda kök şifreleme anahtarını döndürmek için son nokta.
5. Denetim ve İzleme Erişimi
Ekran logları denetim cihazları için her özgün istek.Sesli arama, Splunk veya Datadog gibi denetim logları gönderebilirsiniz.Intra logları istemci IP, doğrulama yöntemi, istek yolu, yanıt verileri (eğer izin verilirse), ve herhangi bir hata.
Anahtar izleme uygulamaları:
- [FONT=0)Enable denetim Girişi:[Dönetici:[Dönetici:0)En az bir denetim cihazı yapılandırın. tampering önlemek için güvenli, uygulama uçlu bir hedef kullanın.
- [FONT:0]Set up Uyarılar:[Dönetici:[Dönetici:0) Başarısız kimlik doğrulama girişimleri için uyarılar oluşturun, hassas yollara erişim (örneğin, üretim veritabanı bilgileri), veya geri ödeme geri çağırmaları.
- [FONT:0)Review düzenli olarak:[Dönetici:[Dönetici:0)Dönemli denetim politikası kullanımı ve erişim modelleri. Kullanılmamış politikalar veya yollar çıkarın.
- [FONT=0)Use Vault'sÜFLT:4) endpoint:[[Dönetici:0) Giriş giriş için gerçek zamanlı giriş akışı için, CI/CD sırasında cayma için faydalı.
CI /CD Boruları ile bütünleştirici
CI /CD için Kimlik Yöntemleri
Doğru kimlik doğrulama yöntemi seçmek güvenlik ve kullanım kolaylığı için önemlidir. Ortak yöntemler şunları içerir:
- [FONT=0)AppRole: [Dönetici: [Dönetici:0] Makine-to-makul kimlik doğrulama için önerilen bir CI/CD servisi, bir kutu rolü oluşturabilir ve [[Dönetici:) ve [[Dönetici:[tr|Dönetici:))))) ve [[Düzücükler, hem de kısa ömürlü bir müşteriyi kullanarak, kısa ömürlü bir müşteriyi kontrol edin.
- [FONT=0]Kubernetes Auth:[Döneticiler için ideal boru hatları Kubernetes. Vault Kubernetes servis hesabını Kubernetes API sunucusu ve hizmet hesabının bağlı politikalarına dayanarak bir Vault token doğrulamaktadır.
- [FONT:0]AWS/GCP/Azure Auth:[Döneticileri bulut sağlayıcıları üzerinde çalışan boru hatları için, Vault örneğin metadata veya IAM rolünü zor kodlanmış anahtarlar olmadan doğrulayabilir.
- [FONT=0)Token-Based:[Dönetici:[Dönetici:[Dönesel) Basit kurulumlar için, Jenkins gibi bir CI/CD aracı gizli değişken olarak bir tabloya enjekte edebilir. Bu yaklaşım daha az güvenli ve sadece çok kısa ömürlü jetler ile kullanılmalıdır.
Her zaman dinamik, statik jetonların üzerinde doğrulamayı tercih edin. En yüksek boru hattının çalışmasını karşılamak için TTL'leri (örneğin, 30 dakika) ve makul sayıda kullanım (eğer uygulanabilirse) ayarlamayı tercih edin.
Özel CI/CD Araçları ile entegrasyon
[FONT:0)Jenkins:[Dönetici:[Dönder:) HashiCorp Vault Plugin. Bir Vault server adresi, doğrulama yöntemi (AppRole veya token), ve eklentileri getiren boru hatları tanımlamak.The support base64-encoding, file, and environment variable assignment.
[FONT=0)GitLab CI:[Dönetici: {0} GitLab CI yerli olarak, Ambar KPDS: 8) token. Configure Vault JWT kimlik doğrulamasını GitLab'ın JWT sorununuz için kabul etmek için.Inur.InurFLT:9, bir Vault token ve sonra da bir Vault'u kullanarak sırları almak ve sonra da Get Drop CLI veya API'yi kullanmak için.
[FONT:0)GitHub Actions:[Dönetici:[Dönetici: 0,6|Döneticileri) veya AppRole'ye ait olan bir adım ekleyin.For OIDC için, bir JWT auth yöntemiyle yapılandırın.||||||||||||||||spektifler veya şubelere bağlı olarak.
[FONT=0)CircleCI:[Dönetici:[Dönetici:0)[Dönetici:0)CircleCI:[Dönetici:[Dönetici: 1 ) Pencere veya b veya doğrudan API aramalarını kullanın. CircleCI'nin bağlam özelliği bir Vault token saklayabilir, ancak AppRole veya OIDC tercih edilir.
Örnek İş Akışı, AppRole in Jenkins
Bir Docker imajı inşa eden ve Kubernetes kümesine dağıtan bir Jenkins boru hattı düşünün.Serbeste'de Kubernetes yapılandırın ve kayıt şifresini Jenkins'de depolayın, onları çalıştır zamanındaki Vault'tan getiriyor.
- [FONT:0)Pre-configure Vault: [Dönetici: [Dönetici: [Dönetici: 0] Bir politika, bu politika ile bir AppRole rolü oluşturun ve bir TTL 10 dakika içinde Jenkins'de bir kriminal olarak depolanır.
- [FONT=0)Pipeline Step:[Dönetici:[Dönder:) HashiCorp Vault Plugin'i AppRole rolü ID (ayrıca bir haçlı) ve GizliID.
- [FONT=0)Fetch Sırları: Docker kayıt şifresini ve Kubernetes'i Vault'tan token okuyun.The plugin write them to geçici environment variables or files.
- [FONT:0)Usage: [Dönetici: [Dönetici: [Dönetici: 9)) RunurFLT:16, o zaman ayarlı olarak ayarlandığında.
- [FONT:0)Temiz:[[Dönetici:0)) Seçmeli olarak AppRole'nin Gizliliği İstemeseydi.
Gelişmiş Tahminler
Gizli Motorlar ve Onların Kullanım Vakaları
Vault birçok gizli motora destek vermektedir. CI/CD için en alakalı:
- [FONT=0)V. v2 (Key-Value): ), API anahtarları, sertifikalar veya çevreye özgü ayarlar gibi statik sırları. Yeniden değişiklikler yapabilmek için enable sürüm.
- [FONT:0)Database:[Döneticileri için dinamik kimlikleri olan geçici veritabanı kullanıcıları, MySQL, PostgreSQL, MongoDB ve diğerleri için dinamik kimlikler.
- [FONT:0)Cloud Providers (AWS, Azure, GCP): [Dönersiz IAM rolleri, hizmet anaları veya depolama hesabı anahtarları.
- [FONT:0)PKI:[Dönetici:0))) Mikro hizmetler veya konteyner kayıtları arasında TLS sertifikası için kısa süreli TLS sertifikası.
- [FONT:0)Transit:[[Dönetici:[Dönetici:[Dönetici:[Dönetici:) Şifre/decrypt data without storage it – onları depodan önce dağıtmak için kullanışlı.
Politika Tasarım En İyi Uygulamalar
Açık bir isim sözleşmesi ve hiyerarşik yapısı ile tasarım politikaları. Örneğin:
- [FONT=18] – CI-spic Sırlar için.
- [FONT: 34) - çevre sırları için.
- [FONT: 20) - üretim sırları için (çok sınırlı erişimle).
Yabani kartpostalarını çok geniş bir şekilde kullanmaktan kaçının. Bunun yerine, belirli gizli yollara erişim sağlayın.UseurFLT:0) Kurallara uygun olarak; Vault'un varsayılan inkarı yeterli.Complement of|prolement|prolement|s|s right|s x|s x x|s x x|s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Backup and Disaster Recovery
Ekranın depolama geri dönüşleri (konsul,t turn, dosya, vb.) düzenli olarak desteklenmeli.Eğer entegre depolama (Raft) kullanarak, anlık yedekler etkinleştirin. CI/CD boru hatları tüm sırları için, bir Vault kesintisi kıracaktır: Mitigate bunu:
- Kapalı bir ortamdaki tabloyu en az üç düğümle çalıştırın.
- Alternatif bir şifreli mağazada bir parça parça parça (örneğin, AWS Sır Yöneticisi) kısa bir TTL ile geri çekilmek - ancak son bir tatil olarak bunu tedavi etmek.
- Bir snapshot'dan geri yükleme dahil olmak üzere felaket kurtarma prosedürlerini düzenli olarak test edin.
Common Pitfalls Kaçmak için
- [FONT=0) CI/CD Değişkenlerinde bir tabloyu ele geçirin:[Dönetici:0]Bir pencereyi gizli değişken olarak depolarsa, dinamik kimlik doğrulama (AppRole, OIDC) kullanarak sızdırılabilir.
- [FONT:0] Borularda Kök Hediyesini Uzır: Kök token sadece başlangıç ve acil durumlar için kullanılmalıdır. Tüm boru hatları uygun politikalarla sınırlı sayıdaki jetonları kullanmalıdır.
- [FONT:0) Kısa TTL'leri ayarlamamak: [Dönder: CI boru hattı genellikle dakikalar boyunca çalışır, saatler değil, TTL'leri beklenen iş süresi artı küçük bir tampon. uzun ömürlü jetler risk.
- [FONT:0) Denetim Logs:[Dönetici:[Dönetici: 2) Denetim izleme olmadan, uzlaşma veya yanlış yapılandırılmış politikaların göstergeleri kaçırıyorsunuz.
- [FONT:0) Boru Çıkışlarında Sırları Etkiliyor: Asla konsola, log dosyalarına baskı yapmak veya eserler oluşturmak için sırları baskılayın.Use file-based enjeksiyon or remove the secret from environment variables right after use.
- [FONT:0) Revoke Leas'e geri dönmek için: Dinamik sırları kira süresine kadar geçerli kalır veya iptal edilir. Explicitly yeni bir şekilde, boru hattınızın başlangıç-build veya temizlenme adımlarında kiralamayı döndürür ([DDDDDÜDÜ)
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
HashiCorp Vault'u CI/CD boru hatlarınız, gizli sızıntıların en tehlikeli kaynağını ortadan kaldırır: sert kodlanmış veya çevre tabanlı statik kimlikler. Burada belirtilen en iyi uygulamaları takip ederek - dinamik sırları, iyileştirilmiş erişim kontrolü, şifreleme, otomatik rotasyon ve kapsamlı denetim - sağlam bir şekilde gizli yönetim akışı elde edebilirsiniz.
Küçük başlayın Bir boru hattı için AppRole doğrulama, dinamik bir veritabanını zorlaştırın ve denetim loglarını izleyin. Yavaşça tüm boruları ve gizli tiplerini kapsayacak şekilde genişletin.Intra, security and speed go hand in hand, your CI/CD çıktıları hem güvenli hem de güvenilirdir.
[FONT:0)Ekmen Kaynaklar:[Dönemli Kaynaklar:[Dönemli: 1)
- [FONT:0)HashiCorp Vault Dokümantasyon[Dönem: 1]
- [FONT=0)Vault CI/CD YETERLER[FONTT:1).
- [FONT:0]HashiCorp Secret Management Best Practices).