Yapılandırmaları ve sırları yönetin
Yapılandırmaları ve sırları yönetin
1) Neden ihtiyacınız var
Konfigürasyonlar ve sırlar üretim platformunun "kanı'dır. Yapılandırmadaki bir hata p95'e düşer, sızan sır bir P1 olayıdır. Amaç bir yapılandırma/sır yapmaktır:- Öngörülebilir (şemalar, doğrulama, sürümler).
- Güvenli (şifreleme, minimum haklar, rotasyon).
- Yönetilen (GitOps, denetim, geri dönüşler).
- Haklı olduğu dinamik (özellik bayrakları, sınırların parametrelendirilmesi).
2) Eserlerin sınıflandırılması
Genel yapılandırmalar: özellikler, eşikler, zaman aşımları, özellik bayrakları (sır yok).
Hassas yapılandırmalar: kritik yolların davranışını değiştiren parametreler (örneğin, ödeme limitleri).
Sırlar: şifreler/anahtarlar/belirteçler/sertifikalar/şifreleme malzemeleri.
Trust artifacts: root/intermediate sertifikaları, PKI politikaları, KMS anahtarları.
Ayrı depolama ve haklar ilkesi: kamusal ≠ hassas ≠ sırları.
3) Yapılandırma hiyerarşisi
Katmanlardan oluşan bir "piramit" oluşturun:1. Global varsayılanlar (org çapında).
2. Çevre ('prod/stage/dev').
3. Bölge ('eu-central-1', 'us-east-1').
4. Kiracı/Marka (çoklu kiracılar için).
5. Servis (belirli mikro servis).
6. Override (çalışma zamanı) - geçici anahtarlar.
Birleşme kuralları: "Aşağıda kazanır", çatışma - sadece MR/onay yoluyla.
Örnek (YAML)
yaml defaults:
http:
timeout_ms: 800 retry: 2 prod:
http:
timeout_ms: 1200 service: payments-api overrides:
eu-central-1:
http:
timeout_ms: 1500
4) Şemalar ve doğrulama
Her yapılandırma bir şema ile bir sözleşmedir (JSON Schema/OPA/CI'daki doğrulayıcılar).
Türler, aralıklar, gerekli alanlar, varsayılan değerler.
"Guard rules" ('retry> 5', 'p95 _ target <50ms'olarak ayarlanamaz).
Otomatik kontrol CI ve uygulandığında (kabul-webhook/KRM).
JSON Şema Parçası
json
{
"type":"object",
"properties":{
"http":{"type":"object","properties":{"timeout_ms":{"type":"integer","minimum":100,"maximum":10000},"retry":{"type":"integer","minimum":0,"maximum":5}},"required":["timeout_ms"]},
"feature_flags":{"type":"object","additionalProperties":{"type":"boolean"}}
},
"required":["http"]
}
5) Yapılandırma Teslim Modelleri
Statik (görüntü pişmiş): güvenilir, ancak yeniden başlatılması gerekir.
Push/Watch :/sidecar ajanları güncellemeleri (akış/anket) alır ve uygulamayı işaret eder.
Pull on startup: Başlangıçta bir anlık görüntü elde ediyoruz (sıcak yolu basitleştirin).
Coğrafi olarak dağıtılmış yükler için kenar önbelleği/proxy.
Ana şey: atomicity ve anlık görüntülerin sürümü, uyumluluk kontrolü ve hızlı geri dönüş.
6) Araçlar ve roller
Yapılandırma mağazaları: Git (gerçeğin kaynağı) + GitOps (Argo/Flux), Parametre Mağazası/Yapılandırma Hizmeti.
Gizli depolar: Vault, AWS Secrets Manager/SSM, GCP Secrets, Azure KV.
Şifreleme: KMS/HSM, SAPS (yaş/GPG/KMS), Mühürlü Sırlar, Transit şifreleme (Vault).
Teslimat: CSI Secrets Store, Vault Agent Enjektör/Sidecar, init-konteynerler.
Bayraklar/dinamikler: bayrak platformu özelliği (acil durum kill-switch dahil).
7) Şifreleme: Modeller ve Uygulamalar
Dinlenme: Projenin/ortamın KMS anahtarları, zarf şifreleme.
Transit: Karşılıklı kimlik doğrulaması ile TLS/mTLS.
Kullanımda: şifre çözme mümkün olduğunca geç, tercihen işlem belleği/sidecar'da (diske yazmadan).
Anahtar hiyerarşisi: kök (HSM) - KMS CMK - veri anahtarları (DEK).
Rotasyon: Takvim (90/180 gün) + olaya göre (çalışan uzlaşma/kalkış).
8) Gizli yönetim: Desenler
8. 1 GitOps + SAPS (statik anlık görüntü)
Git sadece şifreli metni saklar.
CI/CD'de veya bir kümede (KMS/age) şifre çözme.
Denetleyici üzerinden uygulama (Flux/Argo) - Kubernetes Secret.
yaml apiVersion: v1 kind: Secret metadata: { name: psp-keys, namespace: payments }
type: Opaque data:
apiKey: ENC[AES256_GCM,data:...,sops]
8. 2 Vault Ajan Enjektörü
Hizmet hesabı (JWT/SA) Vault'ta doğrulanmıştır.
Sidecar tmpfs kredi koyar ve TTL güncellemeleri.
Dinamik kredi desteği (DB, bulut - izolasyon ve kısa vadeli).
yaml annotations:
vault. hashicorp. com/agent-inject: "true"
vault. hashicorp. com/role: "payments-api"
vault. hashicorp. com/agent-inject-secret-db: "database/creds/payments"
8. 3 CSI Sırları Mağazası
Sırrı hacim olarak bağlayın, dönüş saydamdır.
PKI için - sertifikaların/anahtarların otomatik olarak yenilenmesi.
9) Kubernetes: pratikler
ConfigMap - yalnızca genel/duyarsız veriler.
Gizli - hassas (base64 ile - şifreleme değil; Rest for etcd'de şifrelemeyi etkinleştir).
Sağlama toplamı ek açıklamaları: Yapılandırmayı değiştirirken Dağıtım'ı yeniden başlatın.
Kabul kontrolü: "beyaz liste'den olmayan montaj sırlarının yasaklanması, manifestolarda" düz "şifrelerin yasaklanması.
NetworkPolicy: gizli sağlayıcılara (Vault/CSI) erişimi kısıtlayın.
Sağlama toplamı örneği (Helm)
yaml annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}
10) Erişim Politikaları (RBAC/ABAC)
En az ayrıcalık: hizmet sadece sırlarını görür; Ad alanı/label/prefix ile erişim.
Bölünmüş görevler: Bir sır oluşturmak ≠ içeriği okumak; Herhangi bir okumayı denetleyin.
Geçici krediler: TTL ve otomatik rotasyon ile dinamik girişler (DB, bulut).
Segmentasyon: Farklı projelerde/hesaplarda/KMS anahtarlarında prod/stage.
11) Denetim, günlüğe kaydetme, gözlemlenebilirlik
Okuma/verme sırlarının günlükleri: kim/ne zaman/ne/nerede; Bültenler ve olaylarla korelasyon.
Metrikler: Aramaların sıklığı, süresi dolmuş sırlar, süresi dolmuş sertifikalar, dinamik kredilerin paylaşımı.
Güvenlik olayları - kota aşıldı, IP/zaman anomalileri, birden fazla başarısız kimlik doğrulaması.
12) Sırların ve sertifikaların rotasyonu
Şartları standartlaştırın: API anahtarları - 90 gün, DB şifreleri - 30 gün, TLS serts - 60-90 gün.
Rotasyon anahattı: generation - test - double publication (grace) - switching - revocation of old - doğrulama.
Güvenilirlik: Yapılandırmaların/sırların çift girişi, istemci uyumluluğu (yeni + eski kabul edilir).
PKI: kendi CA veya harici bir entegrasyon; mTLS içeriğini CSI/Vault aracılığıyla otomatik olarak güncelleyin.
13) Dinamik yapılandırmalar ve özellik bayrakları
Yapılandırma hizmeti/bayrak platformundan "sıcak" parametreleri (limitler, zaman aşımları) alın.
Yerel önbellek ve yapışkanlık (değişkenin karma ile hesaplanması), kısa TTL.
Hassas parametreleri değiştirmek için SLO korumaları (otomatik geri alma ve kill-switch).
14) CI/CD ve GitOps ile entegrasyon
Ön taahhüt/CI: devre gömlekleri, SOP kontrolleri, "çıplak" sırların yasaklanması (tarayıcılar: gitleaks/trufflehog).
Policy Gate: OPA/Conftest - şemasız/sahip ek açıklamaları olmadan/ortam etiketleri olmadan yapılandırmalara izin vermeyin.
Aşamalı teslimat: yapılandırmaların artifaktlar (semver) olarak tanıtılması, parametrelerin değiştirilmesi için kanarya.
Sürüm ek açıklamaları: kim/ne yapılandırma/gizli değişti; p95/5xx ile hızlı korelasyon.
15) Örnekler
15. 1 OPA Politikası: Config'de Açık SG'lerin Yasaklanması
rego package policy. config
deny[msg] {
input. kind == "SecurityGroupRule"
input. cidr == "0. 0. 0. 0/0"
input. port = = 5432 msg: = "Postgres open internet banned"
}
15. 2 Yapılandırma anlık görüntüsü örneği (sürümlü)
yaml version: 1. 12. 0 owner: payments-team appliesTo: [ "payments-api@prod" ]
http:
timeout_ms: 1200 retry: 2 withdraw:
limits:
per_txn_eur: 5000 per_day_eur: 20000 flags:
new_withdrawal_flow: false
15. 3 Vault - dinamik veritabanı kredileri
hcl path "database/creds/payments" {
capabilities = ["read"]
}
role issues user/password with TTL = 1h and auto-rollover
16) Anti-desenler
Git'te Sırlar açık metinde/Dümende/Şifresiz ansible değişkenleri.
Tüm hizmetler/ortamlar için tek bir "mega-gizli".
TTL/rotasyon olmadan uzun ömürlü jetonlar; "Ölümsüz" sertifikalar.
Dinamik yapılandırmalar şemalar/doğrulama olmadan ve denetim değişiklikleri olmadan.
Etcd/KMS ve mTLS olmayan ağ için Rest'te Şifreleme Yok.
Üründeki yapılandırmaların manuel olarak düzenlenmesi (GitOps'u atlayarak).
Geliştiricilere'her ihtimale karşı "ticari sırlara erişim.
17) Uygulama kontrol listesi (0-60 gün)
0-15 gün
Yapılandırmalar için diyagramlar/doğrulayıcılar ekleyin; repo "configs've GitOps akışını başlatın.
KMS ve şifrelemeyi yükseltin: Etcd'de Rest'te SOP/Mühürlü Sırlar/Şifreleme.
CI (tarayıcılar) düz metin sırlarını yasaklayın, sahipleri/onayları girin.
16-30 gün
Kasaları böl: public configs vs sensitive vs secrets.
Vault/Secrets Manager'ı uygulayın, teslimat yolunu seçin (Agent/CSI/SOP).
TLS/DB/PSP kredilerinin rotasyonunu ayarlayın; Panoların "ömrü/süresi doluyor".
31-60 gün
SLO-gating ve otomatik geri alma ile dinamik yapılandırmalar ve bayraklar.
OPA/Conftest politikaları; Zero-trust (namespace/label-scoped access).
Oyun günü: gizli sızıntı ve kuvvet rotasyonunun simülasyonu.
18) Vade metrikleri
Şifreleme altında ve Git'ten doğrudan erişim olmadan sırların %'si = %100.
Yapılandırma/doğrulama kapsamı %95 ≥.
Kritik sırları döndürmek için ortalama süre (hedef: Saatler, günler değil).
Dinamik kredilerin (DB/bulut) payı %80 ≥.
"Düz sırlar "/süresi dolmuş sertifikalar nedeniyle 0 olay.
Geri alma <5 dakika ile yapılandırma hatası MTTR.
19) Komuta rolleri ve süreçleri
Config Owner: Domain/Schema/Policy sahibi.
Güvenlik: politikalar, anahtar hiyerarşisi, erişim denetimi.
Platform/SRE: GitOps, tedarik/enjeksiyon, telemetri.
Uygulama Ekipleri: yapılandırma/gizli tüketim, uyumluluk testleri.
20) Sonuç
Yapılandırmaların ve sırların güvenilir bir konturu + GitOps + şifreleme + rotasyon + ilke şemalarıdır. Genel ve gizli ayırın, her şeyi şifreleyin, yapılandırmaları atomik ve sözel olarak uygulayın, hakları ve kredilerin ömrünü en aza indirin, rotasyonları ve denetimleri otomatikleştirin. Daha sonra değişiklikler hızlı ve güvenli hale gelecek ve sızıntı ve düşme riski minimum olacaktır.