7.3.2.1 Vault Entegrasyonu#
Vault Nedir?#
Vault, hassas verilerin güvenli bir şekilde saklanması, yönetilmesi ve erişilmesini sağlayan bir yazılımdır. Özellikle şifreler, API anahtarları, sertifikalar gibi gizli bilgilerin korunması amacıyla kullanılır. Vault, çeşitli şifreleme teknikleri ve erişim kontrol mekanizmaları kullanarak bu verilerin güvenliğini sağlar.
Vault'un temel özellikleri şunlardır:
- Şifreleme: Hassas veriler güçlü şifreleme algoritmaları ile korunur.
- Kimlik Doğrulama: Kullanıcıların ve uygulamaların kimliğini doğrulamak için çeşitli kimlik doğrulama yöntemleri kullanılır.
- Erişim Kontrolü: Hassas verilere erişim, ayrıntılı izin politikaları aracılığıyla yönetilir.
- Gizli Bilgi Yönetimi: Şifreler, API anahtarları ve diğer gizli bilgilerin yaşam döngüsü güvenli bir şekilde yönetilir.
- Denetim ve İzleme: Tüm erişim ve işlem faaliyetleri kaydedilir ve izlenir, böylece güvenlik ve uyumluluk sağlanır.
Vault, bu özellikleri sayesinde güvenli bir bilgi yönetimi sağlar ve siber güvenlik tehditlerine karşı güçlü bir koruma sunar. Özellikle, dinamik gizli bilgi oluşturma ve rotasyon yetenekleri ile güvenlik açıklarını en aza indirir.
Config Server ile Nasıl Kullanılır?#
Vault Konfigürasyonları#
- Öncelikle hvl-infra adresinden vault imajı çalıştırılmalıdır.
- Çalıştırılan vault'un arayüzüne http://localhost:8200 portundan erişilir.
Key SharesveKey Thresholdalanları1yapılarak ilerlenir. Bu alanlar oluşturulacak vault anahtarlarının kaç adet olacağı ve vault'ı açmak için kaç tanesine ihtiyaç olacağı ile ilgilidir. Detaylı bilgi Hashicorp Vault dokümantasyonlarından edinilebilir.Initial root tokenvekeyler bir yere kaydedilmelidir veyaDownload keysbutonu ile dosya olarak indirilebilir.- Unseal kısmında, indirdiğimiz dosyadaki key yazılması gerekmektedir. Bu key ile vault'ı açmış olacağız.
- Sonraki aşamada ise giriş yapmamız gerekiyor, şuanda elimizde sadece root token olduğu için
MethodolarakTokenseçip root token ile giriş yapıyoruz. - Sol taraftan
Secrets Enginestıklanır. Sağ üst köşedenEnable new enginebutonuna tıklanır.KVseçilir vePathalanınakvyazılarak ilerlenir. - Bu alanda hvl-infra içindeki konfigürasyonlardan hangi dosya ezilmek isteniyorsa aynı isimle bir secret oluşturulmalıdır.
Dikkat
Vault üzerinde oluştururken .yml uzantısı yazılmamalıdır. Bizim örneğimiz bu değer application-database-datasource olmalıdır.
- Bu örnekte database şifresini vault'tan alacak şekilde ezelim. Bunun için hvl-infradaki
application-database-datasource.ymldosyasını ezmemiz gerekiyor. Bu dosya içindespring.datasource.passwordalanında veritabanı şifresi bulunmaktadır. Create secretbutonuna tıklıyoruz.Pathalanına dosya ismini birebir yazmalıyız.application-database-datasourceolarak yazıyoruz. Ezmek isteğimiz alanı iseSecret databölümündekikeyalanına yazıyoruz.spring.datasource.passworddeğerini yazacağız. Value olarak damyvaultdbpasswordyazalım. YandakiAddbutonuna tıklayıpSavediyelim.
Config-Server Konfigürasyonları#
- Eğer yoksa
Hostsdosyasına127.0.0.1 hvlvaulteklenir. - hvl-infra içerisindeki config server docker-compose.yml dosyasında
SPRING_PROFILES_ACTIVEalanınative,vaultolarak değiştirilir.VAULT_TOKENalanına da vault kurulumundaki root token bilgisi yazılır. - Bu aşamadan sonra config-server başlatılır ve veritabanı kullanan herhangi başka bir uygulama daha başlatılarak uygulama açılırken veritabanı erişim hatası alındığı görülmelidir. Çünkü vault'ta doğru olmayan bir veritabanı şifresi bulunmaktadır.
Config server varsayılan detaylı vault konfigürasyonları aşağıdaki gibidir.
spring:
cloud:
config:
server:
vault:
host: ${VAULT_HOST:hvlvault}
port: ${VAULT_PORT:8200}
authentication: ${VAULT_AUTHENTICATION:token}
token: ${VAULT_TOKEN:hvs.sCKiU0HTA34YqPTc2gwe02Fr}
kv-version: ${VAULT_KV-VERSION:2}
default-key: ${VAULT_DEFAULT-KEY:application}
backend: ${VAULT_BACKEND:kv}
profile-separator: ${VAULT_PROFILE-SEPERATOR:-}
order: ${VAULT_ORDER:1}
request-read-timeout: ${READ_TIMEOUT:5000}
request-connect-timeout: ${CONNECT_TIMEOUT:5000}