Elasticsearch güvenlik sıkılaştırma (security, TLS, roller, audit)
ElasticsearchSeviye: İleriSüre: 10 dk (denetim) – 2 saat (tam sıkılaştırma)Kurulum ya da günlük işletim değil: çalışan bir Elasticsearch cluster'ını sıkılaştırmak için senaryo bazlı runbook. Salt-okur güvenlik denetimi, kapalı security'yi transport TLS ile açma (tam cluster yeniden başlatma), HTTP TLS'e rolling geçiş, DBA/uygulama rolleri, süreli API key, acil durum file realm kullanıcısı, elastic'i günlük işten çıkarma, anonymous erişimi kapatma, network.host ve IP filtreleme, audit logging (lisans kontrolüyle), snapshot repo erişimi ve Kibana service account token'ı; sonunda denetim tekrarlanıp risklerin kapandığı gösterilir. 8.x/9.x RPM/DEB kurulumlarında security ve TLS zaten açıktır: denetimle başlayıp yalnız RİSK/UYARI çıkan senaryoları uygulayın. Shard, disk ve node işleri işletim rehberinde, yedek snapshot rehberindedir.
Yapı: 1–12 node'lu Elasticsearch cluster (+ Kibana)
Senaryolar
- Güvenlik durumu denetimi (salt-okur) — Hiçbir şey değiştirmez. Security açık mı, kimliksiz erişim, HTTP/transport TLS, anonymous erişim, kullanıcılar ve elastic kullanımı, süresiz API key'ler, audit logging, IP filtreleme, dinlenen adresler ve lisans durumu OK / UYARI / RİSK olarak raporlanır. Nereden başlayacağınızı bilmiyorsanız bunu seçin.
- Tam sıkılaştırma (hepsi sırayla) — Denetim → security + transport/HTTP TLS (kapalıysa; tam cluster yeniden başlatma) → kullanıcılar/roller/API key, anonymous kapatma, elastic'i günlük işten çıkarma → ağ ve IP filtreleme → audit logging (lisans izin veriyorsa) → snapshot repo erişimi → Kibana bağlantısı → son denetim.
- Security kapalı: güvenliği ve transport TLS'i aç — xpack.security.enabled: false ya da 7.x'ten yükseltilmiş, kimliksiz erişilen cluster. Sertifikalar üretilir, transport (ve isteğe bağlı HTTP) TLS ile security açılır. Tam cluster yeniden başlatma gerekir (kesinti): node'lar arası TLS'li ve TLS'siz bağlantı bir arada çalışmaz.
- HTTP (REST) trafiğini TLS'e geçir — Security açık ama 9200 portu düz HTTP: parolalar ağda okunabilir. HTTP sertifikaları dağıtılıp node'lar tek tek yeniden başlatılır; istemciler https://'e geçer.
- Kullanıcılar, roller, API key; elastic ve anonymous erişim — Uygulamalar elastic süper kullanıcısıyla bağlanıyor, anonymous erişim açık ya da süresiz API key'ler var. DBA ve uygulama için ayrı rol/kullanıcı, uygulamaya süreli API key, acil durum (file realm) kullanıcısı; elastic'in parolası değiştirilip günlük işten çıkarılır.
- Audit logging'i aç — Kim hangi index'e erişti, başarısız oturum denemeleri, yetki reddi ve güvenlik ayarı değişiklikleri kayıt altına alınmalı. xpack.security.audit.enabled (statik, rolling yeniden başlatma) — lisans gerektirir (adım lisansı kontrol eder).
- Ağ erişimi ve IP filtreleme — 9200/9300 tüm arayüzlerde ya da herkese açık. network.host iç IP'ye indirilir, firewall ve Elasticsearch IP filtreleme ile yalnız node'lar, Kibana ve uygulama ağı izinli olur.
- Snapshot repo erişimini güvenceye al — Snapshot dizini herkesçe okunabiliyor, repo'yu yönetme yetkisi geniş ya da bulut erişim anahtarları elasticsearch.yml'de. Dizin izinleri, snapshot operatör rolü, keystore ve ikinci cluster'da salt-okur repo kaydı.
- Kibana bağlantısını güvenceye al — Kibana elastic kullanıcısıyla ya da şifresiz bağlanıyor, parola kibana.yml'de düz metin. Service account token, CA doğrulaması, keystore ve şifreleme anahtarları.
Başlamadan önce
- Tüm node'larda root/sudo; ilk node'dan diğerlerine SSH (sertifika dağıtımı).
- Cluster green; rolling işlemler sağlıksız cluster'da yapılmaz.
- python3 (JSON ayrıştırma), openssl, unzip kurulu.
- Security'yi açmak (transport TLS) tam cluster yeniden başlatma ister: bakım penceresi ve önceden alınmış snapshot.
- İstemci envanteri (Kibana, Logstash, Beats, uygulamalar): HTTP TLS ve kimlik doğrulama açılınca her biri https + CA + kullanıcı/API key ile güncellenecek.
- Audit logging ve IP filtreleme ücretli lisans özelliğidir (Gold ve üstü: Gold, Platinum, Enterprise ya da 30 günlük trial; yeni self-managed aboneliklerde Platinum/Enterprise). Basic lisansta ikisi de çalışmaz: ayar kabul edilir ama audit kaydı üretilmez, IP filtresi hiçbir bağlantıyı engellemez. Lisans: GET _license.
Rehberin aşamaları
- Hazırlık: güvenlik ağı ve yardımcı araçlar — Yapılandırma, keystore ve sertifika yedeği: … · Snapshot al (önerilir) · PyYAML ve araçlar: … · Yapılandırma dosyası izinleri: … · Yönetici kimliğini netrc dosyasına yaz
- Durum denetimi (salt-okur) — Güvenlik raporu: … · Bulguları senaryolara eşle
- Security'yi aç: teşhis ve sertifikalar — Teşhis: security gerçekten kapalı mı? · CA ve node sertifikalarını üret · Sertifikaları node'lara dağıt · Sertifika izinleri: … · elasticsearch.yml: security ve TLS ayarları: … · Shard dağıtımını durdur ve flush
- Security'yi aç: tam cluster yeniden başlatma — Durdur: … · Başlat: … · elastic parolasını belirle · Yönetici kimliğini netrc dosyasına yaz (elastic) · Shard dağıtımını aç ve sağlığı bekle · kibana_system parolası …
- HTTP TLS: sertifikalar — Mevcut durum · HTTP sertifikalarını üret · Dağıt ve izinler: …
- Kullanıcılar, roller ve API key — Mevcut kullanıcılar, roller ve API key'ler · DBA yönetici kullanıcısı (…) · Acil durum kullanıcısı (file realm): … · Uygulama rolü ve kullanıcısı (…) · Uygulama için süreli API key · En az yetkiyi doğrula (…) …
- Ağ erişimi ve IP filtreleme — Firewall: … · network.host iç IP'de mi: … · Elasticsearch IP filtreleme
- Audit logging: lisans ve ayarlar — Lisans audit logging'e izin veriyor mu?
- Audit logging: olay seçimi ve doğrulama — Hangi olaylar kaydedilsin · Audit kaydı oluşuyor mu: …
- Snapshot repo erişimi — Snapshot dizini izinleri: … · Repo listesi, bulut anahtarları ve snapshot operatör rolü
- Kibana bağlantısı — Kibana service account token'ı · kibana.yml ve keystore · Kibana bağlantısını doğrula
- Son denetim (sıkılaştırma sonrası) — Güvenlik raporu: … (son durum)
- Temizlik ve sonrası — Geçici kimlik dosyalarını sil: … · Sonrası