Gizli yönetim
Gizli yönetim
1) Neden ve tam olarak neyi "sır'olarak görüyoruz?
Gizli - açıklanması sistemin veya verilerin tehlikeye girmesine neden olan herhangi bir materyal: şifreler, API belirteçleri, OAuth/JWT özel anahtarları, SSH anahtarları, sertifikalar, şifreleme anahtarları (KEK/DEK), webhook imza anahtarları, DSN veritabanları/önbellekler, satıcı anahtarları (ödemeler, posta/SMS sağlayıcıları), çerez tuzları/biber, bot/Sohbet jetonları, lisanslar.
Sırlar kodda, bir yapılandırmada, bir ortamda, konteyner görüntülerinde, CI/CD, Terraform/Ansible, günlükler/dökümler - sırların yönetimi görevi: hesap - depolama - teslimat - kullanım - rotasyon - yanıt - denetim - kullanım.
2) Mimarlık ilkeleri
Merkezileşme. Depolama, yayınlama ve denetim için güvenilir bir katman (Vault/Cloud Secret Manager/KMS).
En Düşük Ayrıcalık (PoLP) Minimum bir süre için yalnızca gerekli hizmetlere/rollere erişim.
Kısa hayat. TTL/kiralama ile dinamik/zaman sırları tercih edilir.
Kripto çeviklik. Algoritmaları/anahtar uzunluklarını kesinti olmadan değiştirme yeteneği.
Sırları koddan/görüntülerden ayırma. Depolarda şifre yok, Docker görüntüsü yok.
Gözlemlenebilirlik ve denetim. Sırların verilmesi/okunması ile ilgili her işlem kaydedilir ve silinir.
Otomatik dönüş. Rotasyon boru hattındaki bir işlemdir, manuel bir işlem değildir.
3) Tipik çözümler ve bileşen rolleri
KMS/HSM Kök güven, şifreleme/anahtar sarma işlemleri (zarf).
Gizli Yönetici/Kasa. Gizli sürüm deposu, ACL, denetim, dinamik sırlar (DB, cloud-IAM, PKI), rotasyon şablonları.
PKI/CA. Kısa ömürlü mTLS/SSH/JWT imzalarının verilmesi.
Ajan/sidecar. Sırların çalışma zamanına iletilmesi (tmpfs, in-memory k/v, hot-reload dosyaları).
CSI sürücüleri/operatörleri. Kubernetes ile entegrasyon (Gizli Mağaza CSI Sürücüsü, cert-manager).
Git'te şifreleme katmanı. SOP/age, git-crypt (altyapı kodu için).
4) Sınıflandırma ve politika
Kritik (P0/P1/P2) ve hasar hacmine göre ayrı sırlar (kiracı kapsamlı, çevre kapsamlı, org çapında). Her sınıf için şunları belirtin:- TTL/kiralama ve rotasyon sıklığı;
- Çıkış yöntemi (dinamik vs statik), format, ortam;
- Erişim politikası (kim/nerede/ne zaman/neden), mTLS ve karşılıklı kimlik doğrulama gereksinimleri;
- denetim (ne kadar depoladığımızı, kimin gözden geçirdiğini kaydettiğimiz);
- Cam kırma prosedürleri ve geri çağırmalar.
5) Gizli yaşam döngüsü
1. Oluşturma: Gizli Yönetici API'si aracılığıyla meta verilerle (sahip, etiketler, kapsam).
2. Depolama: şifreli (zarf: KMS/HSM'den KEK ile sarılmış DEK).
3. Teslimat: Yetkili bir kuruluşun talebi üzerine (OIDC/JWT, SPIFFE/SVID, mTLS).
4. Kullanım: yalnızca bellekte/tmpfs'de; Ağaç kesimi/dökümü yasağı.
5. Rotasyon: TTL veya olay ile (uzlaşma); Paralel sürümler için destek (N-1)
6. Geri çağırma/engelleme: kiralamanın derhal sona ermesi, hedef sistemde hesap/anahtar devre dışı bırakılması.
7. Bertaraf: sürümlerin/malzemenin imha edilmesi, açık denetim zinciri.
6) Dinamik sırlar (varsayılan olarak önerilir)
Fikir: sır kısa bir süre için verilir ve otomatik olarak sona erer. Örnekler:- TTL ile veritabanı kimlik bilgileri (Postgres/MySQL) 15-60 dk.
- Hizmet rolüne göre geçici bulut anahtarları (AWS/GCP/Azure).
- SSH sertifikaları (5-30 dakika), X.509 sertifikaları (saat/gün).
- Talepleri imzalamak için geçici JWT, oturum biletleri brokerleri.
- Artıları: minimum patlama yarıçapı, basitleştirilmiş hatırlama (dünyada hiçbir şey "kalmayacak").
7) Çalışma zamanında sırların teslimi
Kubernetes:- Secret Store CSI Driver - harici bir yöneticiden dosyaları (tmpfs) olarak pod sırlar montaj.
- Tek kaynak olarak Kubernetes Secret'tan kaçının (base64 ≠ şifreleme); Gerekirse, etcd için KMS sağlayıcısını etkinleştirin.
- Otomatik reneval kiralama ve hot-reload ile Sidecar ajanı (Vault Agent/Secrets Store).
- VM/Bare-metal: sistem aracısı + mTLS'den Vault/Secret Manager'a, bellekte önbellek, minimum TCB.
- Sunucusuz: Sırların ortam değişkenleri/dosyaları olarak saydam olarak değiştirilmesiyle bulut entegrasyonu, ancak uzun ömürlü envvarlardan kaçının - tercihen dosyalar/bellekte.
Örnek (Kubernetes + CSI, kavramsal olarak)
yaml apiVersion: v1 kind: Pod metadata: { name: app }
spec:
serviceAccountName: app-sa # is associated with a role in Secret Manager volumes:
- name: secrets csi:
driver: secrets-store. csi. k8s. io readOnly: true volumeAttributes:
secretProviderClass: app-spc containers:
- name: app volumeMounts:
- mountPath: /run/secrets name: secrets readOnly: true
8) CI/CD ve IaC entegrasyonları
CI: Çalışanlar OIDC'ye (İş Yükü Kimliği) göre kısa ömürlü jetonlar alırlar. Günlüklere giren "maskeli" sırların yasaklanması; adım "sızıntı taraması" (trufflehog/gitleaks).
CD: Deploy, görüntüleme sırasında sırları alır, bunları yapaylara yazmaz.
IaC: Terraform, Secret Manager'da değişkenleri saklar; Durum şifrelenir ve erişim kısıtlanır.
SOP/age: repolar için - şifreli manifestoları, anahtarları saklayın - KMS'nin kontrolü altında.
Örnek (SOP parçası)
yaml apiVersion: v1 kind: Secret metadata: { name: app }
data:
PASSWORD: ENC[AES256_GCM,data:...,sops:...]
sops:
kms:
- arn: arn:aws:kms:...
encrypted_regex: '^(data stringData)$'
version: '3. 8. 0'
9) Erişim politikaları ve iş yükü kimlik doğrulaması
İş yükü kimliği: SPIFFE/SPIRE, Kubernetes SA, OIDC, IAM- роль, mTLS.
Geçici belirteçler: kısa TTL, dar kapsam.
Gizli Yöneticide ABAC/RBAC: "Y ortamında X sırrını okuyabilen", "oluşturabilen/döndürebilen'den ayrıdır.
Çoklu kiracılık: kiracı başına ayrı ad alanları/anahtar halkaları; bireysel politikalar ve raporlama.
10) Rotasyon, sürümler ve uyumluluk
Gizli kimliği ve sürümünü ayırın ('gizli/uygulama/db # v17').
Kesintisiz dönüş için iki aktif sürümü (N ve N-1) destekleyin.
Rotasyon olay bazlıdır: işten çıkarma, uzlaşma, sağlayıcı değişikliği, algoritmaların geçişi üzerine.
Otomatikleştir: Vault/Secret Manager'da cron/backend rotasyonu + uygulama yeniden başlatma/yeniden başlatma için webhook tetikleyicileri.
Mini tarif "iki anahtarlı" webhook rotasyonu
text
T0: we publish two secrets in the provider: current, next
T1: the application starts accepting signatures by both current and next
T2: external system switches signature to next
T3: we do next -> current, re-release new next
11) Çalışma zamanı dışı depolama: yedeklemeler ve eserler
Asla artefaktlara girmeyin (görüntüler, günlük arşivleri, çöplükler).
Gizli Yönetici yedeklemeleri - şifrele, aynı döngünün dışındaki depolama anahtarları (görevlerin ayrılması).
Etiketler ve DLP taramaları: S3/Blob/GCS, Git, CI eserlerindeki sırları tespit etmek.
12) Gözlemlenebilirlik, denetim ve SLO
Metrikler: sorun sayısı/gizli/hizmet, süresi dolan kira payı, ortalama TTL, rotasyon süresi, yakınsama süresi (yeni sürümü'kabul etmeden "saniyeler/dakikalar önce).
Denetim günlükleri: kim/ne/ne zaman/nerede/neden; Depolama ayrı ayrı, ayrıca şifreli.
SLO: %99 çıkış <200 ms; 0 günlüklerde sızıntı; Sırların %100'ünün sahibi/TTL/etiketleri vardır; %100 kritik sırlar - 30 gün ≤ dinamik veya rotasyon.
Uyarılar: gizli süresi <7 gün (statik için), depolama kimlik doğrulama hataları başak, hiçbir gizli okur> N gün (ölü), beklenmedik coğrafi/ASN kaynakları.
13) Sık yapılan hatalar ve bunlardan nasıl kaçınılacağı
Git/görüntüdeki sırlar. SOP/yaş ve tarayıcılar kullanın; "Çıplak" çizgileri yasaklama politikası.
Envvars uzun vadeli bir orta. Tmpfs/in-memory dosyalarını tercih edin; Çatal/çöplüklerde çevreyi temizleyin.
Dev/stage/prod için aynı sırlar. Çevreye göre bölün.
Uzun ömürlü statik şifreler. Dinamik/kısa ömürlü geçiş.
Her şey için tek bir ana anahtar. "Kiracı/proje/hizmete göre böl.
Sıcak yükleme yok. Uygulama bir yeniden başlatma gerektirir - döndürme sırasında güvenlik açığı penceresi.
14) Entegrasyon örnekleri (şematik)
Vault dinamik Postgres erişimi
hcl
Vault: role -> issues the user to the database with TTL 30m and privileges only to the app path "database/creds/app-role" {
capabilities = ["read"]
}
Application requests/database/creds/app-role -> receives (user, pass, ttl)
İsteklerin JWT imzası (kısa vadeli)
Özel anahtar Gizli Yönetici'de saklanır; Hizmet kısa ömürlü bir imzalama belirteci ister ve yerel aracı yükü imzalar (anahtar uygulamaya bir dize olarak iletilmez).
Yöneticiler için SSH sertifikaları
SSH-cert'in SSO (OIDC) aracılığıyla kalıcı anahtarlar dağıtmadan 10 dakika boyunca verilmesi.
15) Kenarların etrafında güvenlik
Günlükler/yollar/metrikler: dezenfektanlar, bilinen anahtarlar/desenler için filtreler; "Gizli" alanlar - APM'de maskeleme.
Dökmeler/Çökme Raporları: Varsayılan olarak kesin; Gerekirse - şifreleyin ve temizleyin.
İstemci uygulamaları/mobil: çevrimdışı sırları en aza indirin, platform depolama (Keychain/Keystore), cihaz bağlama, acil durum yuvarlama ile TLS sabitleme kullanın.
16) Uyumluluk
PCI DSS: PAN/sırları şifrelemeden saklamayı yasaklar; Sıkı erişim kontrolü ve rotasyon.
ISO 27001/SOC 2 - Varlık Yönetimi, Günlük Kaydı, Erişim Kontrolü, Yeniden Yapılandırma Gereksinimleri
GDPR/yerel düzenleyiciler: minimizasyon, gerektiğinde erişim, denetim.
17) Süreçler ve runbook
Devreye alma
1. Sırların envanteri (depolar, CI'lar, görüntüler, çalışma zamanı, yedeklemeler).
2. Sınıflandırma ve etiketler (sahip, çevre, kiracı, rotasyon politikası).
3. Vault/Cloud SM + KMS/HSM entegrasyonu.
4. İş yükü kimliğine göre çıktı ayarlama (OIDC/SPIRE).
5. DB/Cloud/PKI için dinamik sırları etkinleştirin.
6. Otomatik döndürme ve sıcak yeniden yükleme; son kullanma tarihi ile ilgili uyarılar.
7. Sızıntı tarayıcıları ve Veri Kataloğu/ET kurulumu.
Acil durum senaryoları
Şüpheli sızıntı: erişim durdurma listesi, anında rotasyon, sertifikaları/anahtarları iptal etme, belirteçleri yeniden düzenleme, artan denetim, RCA'yı etkinleştirme.
Gizli Yönetici mevcut değildir: düşük TTL'li bellekte yerel önbellek, işlev bozulması, yeni bağlantıların kısıtlanması, manuel kırılma cam adımları.
Kök anahtar uzlaşması: anahtar hiyerarşisi yenilenmesi, tüm DEK'lerin yeniden paketlenmesi, risk penceresi için tüm risklerin kontrol edilmesi.
18) Kontrol listeleri
Satmadan önce
- Koddan/görüntülerden kaldırılan sırlar; Sızıntı tarayıcıları dahil.
- Dinamik mekanizmalar kritik sırlar için etkinleştirilir.
- Sidecar/CSI/tmpfs ile sıcak yeniden yükleme, dayanıklı envvar yok.
- IAM/ABAC ilkeleri yapılandırılmış, iş yükü kimliğine bağlı.
- Uyumluluk için otomatik döndürme ve çift sürümler (N, N-1).
- Metrikler/uyarılar/denetimler etkinleştirildi; Bozulma testleri geçti.
Operasyon
- Aylık Rapor: Sahipler, TTL, Süresi Dolan Sırlar, Kullanılmayan.
- Periyodik rotasyonlar ve sızıntı yollarının penetrasyon testleri (günlükler, çöplükler, eserler).
- kripto-çeviklik planı ve CA/köklerin acil olarak değiştirilmesi.
19) SSS
S: KMS'siz Secret Manager yeterli mi?
C: Temel seviye için - evet, ancak zarf şifrelemesini kullanmak daha iyidir: KMS/HSM'de KEK, sırlar - sarılır. Bu, geri bildirim ve uyumu basitleştirir.
S: Ne seçmeli - statik mi dinamik mi?
C: Varsayılan değer dinamiktir. Yalnızca desteklenen sağlayıcıların olmadığı yerlerde statik bırakın ve TTL'yi gün/saat + otomatik rotasyona kadar yazın.
S: Sırları mikro servise güvenli bir şekilde nasıl atabilirim?
О: İş yükü kimliği - mTLS к Gizli Yöneticisi - sidecar/CSI - файлы в tmpfs + hot-reload. Kayıt yok, envvar yok "sonsuza kadar".
S: Kubernetes Secret'ta sır saklayabilir miyim?
C: Yalnızca KMS sağlayıcısı ve katı ilkelerle etkinleştirilen etcd şifrelemesi ile. Harici depolama ve CSI tercih edin.
S: Bir kiracının erişimini nasıl "kripto-silersiniz"?
C: Secret Manager'daki politikalarını iptal edin/engelleyin, tüm kiralamaları geçersiz kılın, anahtar rotasyonu/rejenerasyonu; KMS kullanırken - ilgili KEK'nin paketini açmayı devre dışı bırakın.
- "Dinlenme Şifreleme"
- "Transit Şifrelemede"
- "Anahtar Yönetimi ve Rotasyon"
- "S2S Kimlik Doğrulama"
- "İstekleri İmzala ve Doğrula"