DBAtlas · Veritabanı operasyon atlası

Riskli hesapları denetle: boş parola, '%' host, SUPER, mysql_native_password

MySQLGüvenlik

Komut

SELECT user, host, plugin,
       CONCAT_WS(', ',
         IF(authentication_string = '' AND account_locked = 'N', 'EMPTY PASSWORD', NULL),
         IF(host = '%', 'ANY HOST', NULL),
         IF(plugin = 'mysql_native_password', 'NATIVE AUTH', NULL),
         IF(Super_priv = 'Y', 'SUPER', NULL),
         IF(Grant_priv = 'Y', 'GRANT OPTION', NULL),
         IF(File_priv = 'Y', 'FILE', NULL),
         IF(ssl_type = '', 'NO TLS REQUIRED', NULL),
         IF(password_expired = 'Y', 'EXPIRED', NULL),
         IF(account_locked = 'Y', 'LOCKED', NULL)) AS findings,
       password_last_changed
FROM mysql.user
WHERE user NOT IN ('mysql.sys', 'mysql.session', 'mysql.infoschema')
ORDER BY (Super_priv = 'Y') DESC, user;

-- Guclu dinamik yetkilere sahip hesaplar
SELECT GRANTEE, PRIVILEGE_TYPE FROM information_schema.USER_PRIVILEGES
WHERE PRIVILEGE_TYPE IN ('SUPER', 'SYSTEM_VARIABLES_ADMIN', 'CONNECTION_ADMIN', 'BINLOG_ADMIN', 'REPLICATION_SLAVE_ADMIN')
ORDER BY GRANTEE;

Ne yapar?

Her hesap için güvenlik bulgularını tek satırda listeler: parolasız, her yerden bağlanabilen, eski kimlik doğrulama plugin'i kullanan, SUPER / GRANT / FILE yetkili ve TLS zorunluluğu olmayan hesaplar; ikinci sorgu tehlikeli dinamik yetkileri gösterir.

Ne zaman kullanılır?

Periyodik güvenlik denetiminde, yeni devralınan sunucuda ve 8.4 upgrade'i öncesinde.

Dikkat

Sorgu mysql.user'ı doğrudan okur; bu tabloda SELECT yetkisi gerekir. Rol hesapları kilitli ve parolasız olduğu için EMPTY PASSWORD yalnız kilitsiz hesaplarda raporlanır. Super_priv statik SUPER yetkisidir; 8.0'da yetkiler dinamik yetkilere bölündüğü için ikinci sorgu da kontrol edilmeli. NATIVE AUTH bulgusu olan hesaplar 8.4'e geçmeden caching_sha2_password'a taşınmalı: ALTER USER 'u'@'h' IDENTIFIED WITH caching_sha2_password BY '...'; eski istemci / connector sürümleri caching_sha2_password desteklemeyebilir, önce test et.

DBAtlas'ta aç →

İlgili