DBAtlas · データベース運用アトラス

パスワードポリシー、ログイン失敗時のロックアウト、ダウンタイムなしのパスワードローテーション

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 とデュアルパスワードによるローテーションを推奨する。

DBAtlas で開く →

関連項目