TMAegisBeta
More rules for mariadb

MariaDB

TMA-MARIADB-2.6

Ensure 'password_lifetime' is Less Than or Equal to '365'

MediumLevel 1Automatedmariadb

Description

Password expiration provides users with a unique time bounded password lifetime. Fails when default_password_lifetime exceeds 365 or an account in mysql.global_priv overrides it with 0 (never) or more than 365 days. Runs mariadb -NBe with the client defaults: as root on the server the unix_socket plugin usually authenticates; otherwise put an administrative account in ~/.my.cnf (mode 0600), not MYSQL_PWD (see 1.4/1.6).

How it is checked

Audit method: SQL query

sql_query
out=$(mariadb -NBe "SELECT IF(@@global.default_password_lifetime <= 365 AND (SELECT COUNT(*) FROM mysql.global_priv WHERE JSON_EXTRACT(Priv, '\$.password_lifetime') = 0 OR JSON_EXTRACT(Priv, '\$.password_lifetime') > 365) = 0, 'compliant', 'noncompliant')" 2>/dev/null) || exit 1; printf '%s\n' "$out"
Expected output
compliant

How it is fixed

Fix method: Guidance or infrastructure patch

SET GLOBAL default_password_lifetime = 365; add default_password_lifetime=365 under [mariadbd], and fix per-account overrides with ALTER USER <user>@<host> PASSWORD EXPIRE INTERVAL 365 DAY;

Properties

Operating systems
Any
Tags
mariadbdatabaseauthenticationpassword
Reference
CIS MariaDB 10.11 Benchmark v1.0.0 - 2.6 Ensure 'password_lifetime' is Less Than or Equal to '365'

Check this host

Run this on a machine you are allowed to audit. The scan is read-only.

shell
tmaegis scan --target mariadb