DBAtlas · Veritabanı operasyon atlası

MySQL güvenlik sıkılaştırma (durum denetimi, ağ, TLS, kimlik, yetki, audit, şifreleme)

MySQLSeviye: OrtaSüre: 5 dk (denetim) – 3 saat (tam sıkılaştırma)

Kurulum rehberi değildir: çalışan bir MySQL 8.4 / 8.0 sunucusunun açıklarını bulur ve kapatır. Önce salt-okur Durum denetimi açıkları önem sırasıyla listeler ve her bulgunun hangi karta götürdüğünü söyler; sonra alanları tek tek ya da hepsini sırayla kapatırsınız: bind_address, firewall ve hesapların host kısıtı; TLS, require_secure_transport ve istemcide VERIFY_IDENTITY; caching_sha2_password, parola politikası, uzaktan root ve anonim hesaplar; roller ve DDL'siz uygulama hesabı; audit; InnoDB tablespace encryption (keyring component); şifreli yedek; işletim sistemi; sürüm takibi. Audit Community'de yoktur: MySQL Enterprise (ücretli abonelik) ya da Percona Server (ücretsiz) gerekir; TDE Community'de de vardır. Sonda denetim tekrar çalışır.

Yapı: Tek MySQL sunucusu + uygulama sunucusu (istemci doğrulaması); replica/InnoDB Cluster notlarda

Senaryolar

  • Durum denetimi: açıklarım neler? (salt-okur) — İlk çalıştırılacak tarama: anonim/parolasız/uzaktan root hesaplar, her yerden (%) erişim, zayıf kimlik eklentisi, global yetkiler, TLS, audit, şifreleme, dosya izinleri ve firewall; hiçbir şeyi değiştirmez.
  • Tam sıkılaştırma (hepsi sırayla) — Yeni kurulmuş ya da hiç sıkılaştırılmamış sunucu: tüm alanlar güvenli sırayla uygulanır; MySQL birkaç kez yeniden başlatılır (bakım penceresi gerekir).
  • Ağ ve bağlantı: kim nereden bağlanabilir? (bind_address, firewall, host kısıtı) — MySQL tüm arayüzlerde dinliyor, hesaplar '%' host'lu, port herkese açık. bind_address değişirse yeniden başlatma gerekir.
  • Bağlantıyı şifrele (TLS, require_secure_transport, VERIFY_IDENTITY) — Otomatik üretilen kendinden imzalı sertifika kullanılıyor, şifresiz bağlantı kabul ediliyor ya da istemciler sertifikayı doğrulamıyor. ALTER INSTANCE RELOAD TLS ile kesintisiz.
  • Kimlik doğrulama ve parola (caching_sha2, parola politikası, root) — mysql_native_password hesapları, parola politikası yok, uzaktan root, anonim hesaplar ve test veritabanı. Kesinti yok.
  • En az yetki: roller ve DDL'siz uygulama hesabı — Uygulama hesabında CREATE/ALTER/DROP ya da . yetkisi, FILE/SUPER yetkili hesaplar; okuma/yazma/DDL rolleri ve yetki raporu. Kesinti yok.
  • Audit: kim ne yaptı? — Denetçi oturum ve sorgu kaydı istiyor. MySQL Community'de yerleşik audit yoktur: Enterprise Audit, Percona Server Audit Log Filter ya da Community için sınırlı seçenekler. Lisans: Enterprise Audit yalnız MySQL Enterprise aboneliğiyle gelir; Percona Audit Log Filter ücretsizdir.
  • Veriyi diskte şifrele (InnoDB tablespace encryption, keyring) — Disk ya da yedek kopyasının çalınmasına karşı tablo, redo, undo ve binlog şifrelemesi; keyring component kurulumu için bir yeniden başlatma, büyük tablolarda ALTER süresi. Community'de de lisanssızdır; şifreli/KMS keyring'leri Enterprise'dır.
  • Yedeklerin güvenliği (şifreli yedek, login-path, izinler) — Yedekler şifresiz ya da herkesin okuyabildiği dizinde, betikte düz metin parola; mysqldump + GPG ya da XtraBackup --encrypt, yedek hesabı ve login-path.
  • İşletim sistemi tarafı (servis hesabı, izinler, core dump, SELinux) — Veri dizini ya da sertifika dosyaları başkalarına açık, secure_file_priv boş, local_infile açık, SELinux kapalı. Bazı ayarlar yeniden başlatmada geçerli olur.
  • Yama ve sürüm: desteklenen sürümde miyim? — Sürüm, destek bitişi (8.0 Nisan 2026'da bitti) ve bekleyen güncellemeler; uygulama için upgrade rehberine bağlanır. Salt-okur.

Başlamadan önce

  • MySQL … çalışıyor ve sunucuda root olarak mysql komutu parolasız giriyor (root@localhost auth_socket ya da mysql_config_editor ile client login-path). Kurulum MySQL kurulum rehberi ile yapıldıysa bu hazırdır. Adımlardaki SQL'ler root ile mysql -t üzerinden çalışır.
  • Sunucuya iki ayrı SSH oturumu açık; birinde mysql istemcisi açık kalır. Hesap host'u, require_secure_transport ve firewall değişikliklerinden sonra yeni bağlantıyı ayrı oturumda deneyin; eski oturumları başarıyı görene kadar kapatmayın. root@localhost soket girişi bu rehberde hiç değişmez: her zaman geri dönüş yolu olarak kalır.
  • Bakım penceresi: seçtiğiniz alanlarda MySQL yeniden başlatılacak (bind_address, keyring component, audit eklentisi, core dump sınırı). Replica'lı ortamda önce replica'larda uygulayın.
  • MySQL'e bağlanan tüm uygulamaların listesi (sunucu IP'leri, hesaplar, sürücü sürümleri). Denetim adımı şu anki bağlantıları gösterir; listede olmayan istemci kısıtlamadan sonra bağlanamaz.
  • Güncel ve geri dönüşü denenmiş bir yedek var (mantıksal ya da XtraBackup). Şifreleme (TDE) adımı keyring dosyası kaybolursa veriyi okunamaz hâle getirir: yedeği keyring'den ÖNCE alın.

Rehberin aşamaları

  • Durum denetimi (salt-okur) — Veritabanı içi bulguları listele · İşletim sistemi tarafını denetle
  • Başlamadan: geri dönüş noktası — Mevcut ayarların, hesapların ve yetkilerin kopyasını al · Ek yapılandırma dizinini etkinleştir
  • Yetki — 1. Teşhis — Hesapların yetkilerini göster
  • Yetki — 3. Uygulama — Rolleri oluştur ve yetkilendir · Hesapları oluştur ve rollere bağla · Uygulama hesabının doğrudan yetkilerini kaldır · Yetki raporu
  • Yetki — 4. Doğrulama — Etkin yetkilerde DDL olmadığını doğrula · Uygulama sunucusundan DDL denemesi
  • Yetki — 5. Sonrası — Migration hesabını kullanım dışında kilitli tut
  • Kimlik — 1. Teşhis — Kimlik eklentilerini, parola ayarlarını ve varsayılan hesapları göster
  • Kimlik — 2. Güvenlik ağı — Sürücü uyumluluğunu kontrol et
  • Kimlik — 3. Uygulama — Anonim hesapları, uzaktan root'u ve test veritabanını kaldır · Parola politikasını kur (validate_password, geçmiş) · mysql_native_password hesaplarını caching_sha2_password'e geçir · Kişisel DBA hesabını oluştur
  • Kimlik — 4. Doğrulama — Hesap durumunu doğrula · Uygulama sunucusundan root ile girişi dene
  • TLS — 1. Teşhis — Mevcut TLS ayarlarını ve şifresiz istemcileri göster
  • TLS — 3. Uygulama — Test CA'sı ve sunucu sertifikası oluştur · Anahtar ve imza isteğini (CSR) oluştur · İmzalı sertifikayı yerine koy · Sertifika ve anahtarı doğrula · SELinux etiketini ver · Sunucuyu yeni sertifikaya geçir (kesintisiz) …
  • TLS — 4. Doğrulama — Şifresiz bağlantının reddedildiğini doğrula
  • TLS — 5. Sonrası: sertifika yenileme — Sertifikayı yenileme yordamı
  • Ağ — 1. Teşhis: kim nereden bağlanıyor? — Dinleme adresini, hesap host'larını ve aktif istemcileri göster
  • Ağ — 3. Uygulama — '%' host'lu hesapları uygulama ağına daralt · Dinleme adresini daralt (yeniden başlatmada geçerli) · Firewall'da portu yalnız izinli ağlara aç · Dinleme adresi için MySQL'i yeniden başlat
  • Ağ — 4. Doğrulama — Uygulama sunucusundan bağlantıyı dene (yeni oturum)
  • Audit — 1. Teşhis — Audit eklentilerini ve log ayarlarını göster
  • Audit — 3. Uygulama — Community: başarısız girişleri ve DML sorgu metnini logla · Enterprise Audit eklentisini kur · Enterprise Audit filtrelerini tanımla · Percona Audit Log Filter bileşenini kur · Percona audit filtrelerini tanımla · Audit log'unu merkezi sunucuya ilet (rsyslog imfile) …
  • Audit — 4. Doğrulama — Bir değişiklik yapıp izini gör
  • Yedek — 1. Teşhis — Yedeklerin şifreleme durumunu ve parola dosyalarını göster
  • Yedek — 3. Uygulama — Yedek hesabını en az yetkiyle oluştur · Parolayı login-path'e kaydet · GPG açık anahtarını içe aktar · Şifreli yedek betiği · XtraBackup ile şifreli yedek betiği · Anahtar dosyası, yedek dizini ve elle deneme …
  • Yedek — 4. Doğrulama — Şifreli yedeğin açılabildiğini dene
  • İşletim sistemi — 1. Teşhis — Servis hesabı, izinler, dosya yetkileri ve SELinux
  • İşletim sistemi — 3. Uygulama — Dosya içe/dışa aktarmayı sınırla · Veri dizini ve anahtar dosyası izinlerini düzelt · Core dump'ı kapat · systemd'yi yeniden yükle ve MySQL'i yeniden başlat · Komut geçmişine parola düşmesini engelle · SELinux'u Enforcing tut
  • İşletim sistemi — 4. Doğrulama — Değişiklikleri doğrula
  • Şifreleme — 1. Teşhis — Keyring ve şifreleme durumunu göster
  • Şifreleme — 2. Güvenlik ağı — Şifrelemeden önce tam yedek
  • Şifreleme — 3. Uygulama — Keyring component manifest'ini yaz · Keyring dizinini ve yapılandırmasını hazırla · Keyring'i yüklemek için yeniden başlat · Redo, undo, binlog ve yeni tablolar için şifrelemeyi aç · Uygulama veritabanının tablolarını şifrele · Keyring dosyasını yedekle
  • Şifreleme — 4. Doğrulama — Şifrelemeyi ve keyring'i doğrula
Ortamına göre adım adım planı aç →