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 Shares
veKey Threshold
alanları1
yapı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 token
vekey
ler bir yere kaydedilmelidir veyaDownload keys
butonu 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
Method
olarakToken
seçip root token ile giriş yapıyoruz. - Sol taraftan
Secrets Engines
tıklanır. Sağ üst köşedenEnable new engine
butonuna tıklanır.KV
seçilir vePath
alanınakv
yazı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.yml
dosyasını ezmemiz gerekiyor. Bu dosya içindespring.datasource.password
alanında veritabanı şifresi bulunmaktadır. Create secret
butonuna tıklıyoruz.Path
alanına dosya ismini birebir yazmalıyız.application-database-datasource
olarak yazıyoruz. Ezmek isteğimiz alanı iseSecret data
bölümündekikey
alanına yazıyoruz.spring.datasource.password
değerini yazacağız. Value olarak damyvaultdbpassword
yazalım. YandakiAdd
butonuna tıklayıpSave
diyelim.
Config-Server Konfigürasyonları#
- Eğer yoksa
Hosts
dosyasına127.0.0.1 hvlvault
eklenir. - hvl-infra içerisindeki config server docker-compose.yml dosyasında
SPRING_PROFILES_ACTIVE
alanınative,vault
olarak değiştirilir.VAULT_TOKEN
alanı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}