We are able to capture Connections, Failed Login, DDL statements like (CREATE USER/TABLE/DATABASE, ALTER USER/TABLE/DATABASE, DROP USER/TABLE/DATABASE) using the following filter definition;
SELECT audit_log_filter_set_filter(‘capture_required_events’, ‘{
“filter”: {
“class”: [
{
“name”: “connection”,
“event”: [
{ “name”: “connect”},
{ “name”: “disconnect”},
{ “name”: “failed_login”}
]
},
{
“name”: “query”,
“event”: [
{
“name”: “start”,
“log”: {
“or”: [
{ “field”: { “name”: “sql_command_id”, “value”: “create_db”} },
{ “field”: { “name”: “sql_command_id”, “value”: “drop_db”} },
{ “field”: { “name”: “sql_command_id”, “value”: “alter_db”} },
{ “field”: { “name”: “sql_command_id”, “value”: “truncate”} },
{ “field”: { “name”: “sql_command_id”, “value”: “create_table”} },
{ “field”: { “name”: “sql_command_id”, “value”: “alter_table”} },
{ “field”: { “name”: “sql_command_id”, “value”: “drop_table”} },
{ “field”: { “name”: “sql_command_id”, “value”: “create_user”} },
{ “field”: { “name”: “sql_command_id”, “value”: “alter_user”} },
{ “field”: { “name”: “sql_command_id”, “value”: “drop_user”} }
]
}
}
]
}
]
}
}’);
But how do we also capture GRANT/REVOKE statements?