MYS8-00-001600 - The MySQL Database Server 8.0 must be configured to provide audit record generation capability for DoD-defined auditable events within all database components.

Information

Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.

Audit records can be generated from various components within the Database Management System (DBMS) (e.g., process, module). Certain specific application functionalities may be audited as well. The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records.

DoD has defined the list of events for which the DBMS will provide an audit record generation capability as the following:

(i) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels);

(ii) Access actions, such as successful and unsuccessful logon attempts, privileged activities, or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; and

(iii) All account creation, modification, disabling, and termination actions.

Organizations may define additional events requiring continuous or ad hoc auditing.

Solution

Deploy a MySQL Database Server 8.0 that supports the DoD minimum set of auditable events.

Configure the MySQL Database Server 8.0 to generate audit records for at least the DoD minimum set of events.

sudo vi /etc/my.cnf
[mysqld]
audit-log=FORCE_PLUS_PERMANENT
audit-log-format=JSON
audit-log-encryption=AES

After changing the my.cnf, restart the server.

SELECT audit_log_encryption_password_set(password);

Create auditing rules - for example:
Connect to MySQL and Use functions to define audit rules and audited users audit_log_filter_set,audit_log_filter_set_user

To log all auditable events:
SELECT audit_log_filter_set_filter('log_all', '{ 'filter': { 'log': true } }');

And to apply this log_all filter to all users:
SELECT audit_log_filter_set_user('%', 'log_all');

See Also

https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Oracle_MySQL_8-0_V2R2_STIG.zip

Item Details

Category: AUDIT AND ACCOUNTABILITY

References: 800-53|AU-12a., CAT|II, CCI|CCI-000169, Rule-ID|SV-235103r960879_rule, STIG-ID|MYS8-00-001600, Vuln-ID|V-235103

Plugin: MySQLDB

Control ID: 4f883275968491cbe6ad3748342ef271853a748dcb7a0606342184c349e761ab