パスワードポリシー、ログイン失敗時のロックアウト、ダウンタイムなしのパスワードローテーション
MySQLセキュリティコマンド
-- Password strength policy (component)
INSTALL COMPONENT 'file://component_validate_password';
SET PERSIST validate_password.policy = 'MEDIUM';
SET PERSIST validate_password.length = 12;
SELECT VALIDATE_PASSWORD_STRENGTH('Summer2024') AS score;
-- Failed-login lockout, password lifetime, history
ALTER USER 'ana'@'%' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1
PASSWORD EXPIRE INTERVAL 90 DAY PASSWORD HISTORY 5 PASSWORD REUSE INTERVAL 365 DAY;
-- Zero-downtime rotation: dual password
ALTER USER 'svc_app'@'10.0.%' IDENTIFIED BY 'N3w#AppSecret2025' RETAIN CURRENT PASSWORD;
-- Once every application uses the new password
ALTER USER 'svc_app'@'10.0.%' DISCARD OLD PASSWORD;概要
脆弱なパスワードを拒否し、連続したログイン失敗後にアカウントを一時的にロックし、パスワードの有効期間と再利用ルールを設定するポリシーを有効にする。デュアルパスワードにより、アプリケーションを 1 つずつ更新しながら、ダウンタイムなしでサービスアカウントのパスワードを変更できる。
使用する場面
セキュリティ監査 / コンプライアンス (PCI、ISO 27001) およびサービスアカウントのパスワードローテーションに。
注意
ポリシーは新規 / 変更されたパスワードにのみ適用され、既存の脆弱なパスワードは検出しない。サービスアカウントで FAILED_LOGIN_ATTEMPTS を使うと、設定を誤った 1 つのクライアントがアカウントをロックし、障害を引き起こす可能性がある。人間のアカウントに使用する。PASSWORD_LOCK_TIME の単位は日 (UNBOUNDED: 手動でロック解除するまで)。ロック解除は ALTER USER ... ACCOUNT UNLOCK で行う。PASSWORD EXPIRE はサービスアカウントで予期しない障害を引き起こすため、そこでは PASSWORD EXPIRE NEVER とデュアルパスワードによるローテーションを推奨する。