Fikir tüm hassas verilerimizi koymaktır [...]
Bu cümle içindeki "hepsi" nin anlamı, planladığınız çözümü uygulamadan önce çok dikkatli bir şekilde analiz edilmelidir.
Ansible tonoz çok faydalı bir araçtır, ancak yalnızca aşağıdaki sırları saklamak için kullanılmalıdır:
- Sorumlu dağıtımlar için özel olarak gerekli
- Onlardan habersiz olmaları gereken sahipleri için kolayca yararsız hale getirildi, ancak bu yasal olarak onları hatırlayabiliyordu (tipik olarak yerleşik çalışanlar)
İkinci nokta kritik.
Birçok kişi ve potansiyel olarak tüm DevOps ekibi, kasa kasa şifresine ve bu nedenle tüm sırlara erişebilecek.
Bu nedenle, kasada saklanan tüm sırlar için , kendilerine yetkisiz erişimi olan bir kişi veya makinenin , istenirse, bunları kullanamayacak durumda olması gereken bir koşul olmalıdır .
Somut bir ifadeyle, bir veritabanını ve kullanıcılarını dağıtmak için uygun kullanıyorsanız, şifreleri kasada saklayabilirsiniz, ancak bu hizmet İnternet’ten alınabiliyorsa çok dikkatli olmalısınız (ve büyük olasılıkla başka bir çözüm düşünün) ve herhangi bir VPN kimlik doğrulamasına gerek kalmadan!
Sırrına maruz kalan kullanıcılar (DevOps), üzerine bir güvenlik bariyeri uygulandığı takdirde (örneğin, VPN erişimi iptal edildi), "hatırlanan" şifreler kullanamayacak durumda olmalıdır. Buna ek olarak, şifreler değiştirilmeden önce kaynak kod deposuna (kasanın depolandığı) erişim de iptal edilmelidir.
Bu şartlar altında, makul tonoz çok kullanışlı bir araçtır.
İnternette kasada herhangi bir kişi veya makine tarafından kullanılabilecek bir sır saklamaya çalışmak, bunun yerine bir hata olur (örneğin, kullanıcıların VPN bilgileri).
Kasa kasası şifresini saklamanın en iyi (ve güvenli) yolu olan başka bir seçenek var mı?
Önceki paragraftaki koşullar altında, iyi bir uygulamanın olacağını düşünüyorum:
- Kasa parolasını harici bir güvenli kasada saklayın ( HashiCorp'tan Vault veya kimlik yönetimi için herhangi bir SaaS gibi )
- Harici kasa öğesine DevOps'a erişim izni verin (test için şifreye ihtiyaç duyacaklar) ve CI / CD sistemi veya denetleyici
Sırları kullanmak için bir anlaşma yapın ! Sırlardaki değişiklikleri gözden geçiremezsiniz ve gizli dosyalardaki değişken değişkenleri izleyemezsiniz! Bu yüzden baştan beri titiz olun. Kurallara uygun kasada depolanan tüm değişkenleri secret_
önek ile adlandırmak iyi bir kuraldır . Gibi bir şey göreceksiniz:
postgres.yml:
postgres_password: "{{ secret_postgres_password }}"
bu değerin Ansible kasasında saklandığını bileceksiniz.