MySQL Enterprise Edition: Policy-based Auditing!
One of the most common requests feature
for the MySQL is quick and easy logging of audit events. This is mainly due to
how web-based applications have evolved from nice-to-have enablers to
mission-critical revenue generation and the important role MySQL plays in the
new dynamic environment. In today’s virtual marketplace, PCI compliance
guidelines ensure credit card data is secure within e-commerce apps; from a
corporate standpoint, Sarbanes-Oxely, HIPAA and other regulations guard the
medical, financial, public sector and other personal data centric industries.
For supporting applications audit policies and controls that monitor the eyes
and hands that have viewed and acted upon the most sensitive of data is most
commonly implemented on the back-end database.
With this in mind, MySQL 5.5
introduced an open audit plugin API that enables all MySQL users to write their own auditing plugins based on
application specific requirements. While the supporting docs are very complete and provide
working code samples, writing an audit plugin requires time and low-level
expertise to develop, test, implement and maintain. To help those who don't
have the time and/or expertise to develop such a plugin, Oracle now ships MySQL
5.5.28 and higher with an easy to use, out-of-the-box auditing solution; MySQL Enterprise Audit.
MySQL Enterprise Audit
The premise behind MySQL Enterprise
Audit is simple; we wanted to provide an easy to use, policy-based auditing
solution that enables you to quickly and seamlessly add compliance to your
MySQL applications. MySQL Enterprise Audit meets this requirement by enabling
you to:
1. Easily install the needed
components.
Installation requires an upgrade to
MySQL 5.5.28 (Enterprise edition), which can be downloaded from the My Oracle Support
portal or the Oracle Software Delivery Cloud. After
installation, you simply add the following to your my.cnf file to register and
enable the audit plugin:
[mysqld]
plugin-load=audit_log.so (keep in
mind the audit_log suffix is platform dependent, so .dll on Windows, etc.)
or alternatively you can load the
plugin at runtime:
mysql> INSTALL PLUGIN audit_log
SONAME 'audit_log.so';
2. Dynamically enable and disable
the audit stream for a specific MySQL server.
A new global variable called audit_log_policy
allows you to dynamically enable and disable audit stream logging for a
specific MySQL server. The variable parameters are described below.
3. Define audit policy based on what
needs to be logged (everything, logins, queries, or nothing), by server.
The new audit_log_policy variable
uses the following valid, descriptively named values to enable, disable audit
stream logging and to filter the audit events that are logged to the audit
stream:
- "ALL" - enable audit stream and log all
events
- "LOGINS" - enable audit stream and log only
login events
- "QUERIES" - enable audit stream and log only
querie events
- "NONE" - disable audit stream
4. Manage audit log files using
basic MySQL log rotation features.
A new global variable, audit_log_rotate_on_size,
allows you to automate the rotation and archival of audit stream log files
based on size with archived log files renamed and appended with datetime stamp
when a new file is opened for logging.
5. Integrate the MySQL audit stream
with MySQL, Oracle tools and other third-party solutions.
The MySQL audit stream is written as
XML, using UFT-8 and can be easily formatted for viewing using a standard XML
parser. This enables you to leverage tools from MySQL and others to view the
contents. The audit stream was also developed to meet the Oracle database audit
stream specification so combined Oracle/MySQL shops can import and manage MySQL
audit images using the same Oracle tools they use for their Oracle databases.
So assuming a successful MySQL
5.5.28 upgrade or installation, a common set up and use case scenario might
look something like this:
It should be noted that MySQL
Enterprise Audit was designed to be transparent at the application layer by
allowing you to control the mix of log output buffering and asynchronous or
synchronous disk writes to minimize the associated overhead that comes when the
audit stream is enabled. The net result is that, depending on the chosen audit
stream log stream options, most application users will see little to no
difference in response times when the audit stream is enabled.
1 comment:
Hi Anil
The audit plugin provided by macfee also does the same task . I have tried that and it works good.
karthik.P.R
Post a Comment