
Secrets Yönetimi: Hashicorp Vault ile API Anahtarlarını ve Parolaları Korumak
Uygulama kodunda hardcoded API anahtarları, .env dosyalarında düz metin parolalar ve paylaşılan credential'lar en yaygın güvenlik açıklarından biridir. GitGuardian'ın 2024 raporuna göre GitHub'da yılda 10 milyondan fazla secret sızıntısı tespit edilmektedir. Hashicorp Vault, secrets'ları merkezi ola
Ahmet Yılmaz
Kıdemli Altyapı Mühendisi
Uygulama kodunda hardcoded API anahtarları, .env dosyalarında düz metin parolalar ve paylaşılan credential'lar en yaygın güvenlik açıklarından biridir. GitGuardian'ın 2024 raporuna göre GitHub'da yılda 10 milyondan fazla secret sızıntısı tespit edilmektedir. Hashicorp Vault, secrets'ları merkezi olarak yönetmenizi, şifrelemenizi, erişim kontrolü uygulamanızı ve otomatik rotation yapmanızı sağlar.
Neden Secrets Yönetimi Gereklidir?
| Yöntem | Risk | Vault Çözümü |
|---|---|---|
| Hardcoded secret | Git geçmişinde kalıcı | Dinamik secret, runtime injection |
| .env dosyası | Düz metin, erişim kontrolü yok | Şifreli depolama, ACL politikaları |
| Paylaşılan parola | Kim erişti bilinmez | Audit log, kişiye özel erişim |
| Statik credential | Sızarsa süresiz geçerli | Otomatik rotation, TTL |
Vault Kurulumu ve Temel Kullanım
# Vault kurulumu
wget https://releases.hashicorp.com/vault/1.15.4/vault_1.15.4_linux_amd64.zip
unzip vault_1.15.4_linux_amd64.zip
sudo mv vault /usr/local/bin/
# Dev modda baslat (yalnizca test icin)
vault server -dev
# Secret yazma ve okuma
vault kv put secret/myapp/db \
username="app_user" \
password="guclu_parola_32" \
host="10.0.20.5"
vault kv get secret/myapp/db
vault kv get -field=password secret/myapp/db
Dinamik Secrets ve Otomatik Rotation
Vault'un en güçlü özelliği dinamik secrets'tır. Statik parola yerine, Vault her istek için geçici veritabanı credential'ı oluşturur ve TTL (Time to Live) süresi dolduğunda otomatik olarak siler.
# PostgreSQL dinamik secret yapilandirmasi
vault secrets enable database
vault write database/config/myapp-db \
plugin_name=postgresql-database-plugin \
connection_url="postgresql://{{username}}:{{password}}@10.0.20.5:5432/myapp" \
allowed_roles="app-role" \
username="vault_admin" \
password="vault_admin_pass"
vault write database/roles/app-role \
db_name=myapp-db \
creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
default_ttl="1h" \
max_ttl="24h"
# Gecici credential al (1 saat gecerli)
vault read database/creds/app-role
💡 İpucu: Dinamik secrets ile her uygulama instance'ı benzersiz credential alır. Bir credential sızarsa yalnızca o instance etkilenir ve TTL süresi dolduğunda otomatik geçersiz olur. Bu yaklaşım "blast radius"u minimize eder.
Veritabanı güvenliği için MySQL/PostgreSQL güvenlik rehberimizi, sunucu güvenliği için Hardening Checklist yazımızı inceleyin. Zero Trust mimarisi için Zero Trust rehberimize göz atın. Hosted Cloud bulut sunucuları ile güvenli altyapınızı oluşturun.
Sıkça Sorulan Sorular
Vault yerine .env dosyası kullanmak yeterli mi?
.env dosyaları küçük projeler için kabul edilebilir ancak erişim kontrolü, audit log, otomatik rotation ve şifreleme sağlamaz. Birden fazla servis veya ekip üyesi varsa Vault veya benzeri bir çözüm önerilir.
Vault'un kendisi ele geçirilirse ne olur?
Vault verileri AES-256 ile şifreler ve unseal key'ler olmadan erişilemez. Shamir's Secret Sharing ile unseal key'ler birden fazla kişiye dağıtılır. Auto-unseal için HSM veya cloud KMS entegrasyonu kullanılabilir.
Vault alternatifleri nelerdir?
Kubernetes ortamları için External Secrets Operator, küçük projeler için SOPS (Mozilla) veya Sealed Secrets, bulut ortamları için cloud provider'ların KMS servisleri (AWS Secrets Manager, GCP Secret Manager) alternatif olarak kullanılabilir.
Vault üretim ortamında nasıl deploy edilir?
Üretim ortamında Vault HA (High Availability) modda, Consul veya Raft backend ile çalıştırılmalıdır. TLS zorunlu, audit log aktif ve auto-unseal yapılandırılmış olmalıdır. Dev modu asla üretimde kullanılmamalıdır.
Git'e yanlışlıkla secret push ettim, ne yapmalıyım?
Secret'ı hemen rotate edin (yeni parola/anahtar oluşturun). Git geçmişinden silmek için git filter-branch veya BFG Repo-Cleaner kullanın. Ancak secret'ın zaten ele geçirilmiş olabileceğini varsayın ve rotation'ı öncelikli yapın.
Sonuç
Secrets yönetimi modern uygulama güvenliğinin temel taşıdır. Hashicorp Vault ile API anahtarlarını, veritabanı parolalarını ve sertifikaları merkezi olarak yönetin, dinamik secrets ile credential sızıntı riskini minimize edin ve audit logları ile tüm erişimleri izleyin.
Güvenli Altyapı Yönetimi
Hosted Cloud bulut sunucuları ile Vault entegrasyonu ve güvenli secrets yönetimi altyapınızı kurun.
Bulut Sunucu Planlarını İncele →Ahmet Yılmaz
Kıdemli Altyapı Mühendisi
10 yılı aşkın bulut altyapısı ve DevOps deneyimiyle Hosted Cloud'un teknik ekibinde yer almaktadır. Kubernetes, Terraform ve yüksek erişilebilirlik mimarileri üzerine uzmanlaşmıştır.
Yorumlar yakında