Did you know 12c now has a mechanism to examine which privileges are actually being used by an user, module or for the database as a whole, as opposed to merely the privileges granted?
This is a great security improvement in order give users the privileges that they need precisely without granting too much.
Here’s how is works?
1. First you have to set up a capture process using the new package DBMS_PRIVILEGE_CAPTURE.
BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'all_priv_analysis_pol', description => 'database-wide policy to analyze all privileges', type => DBMS_PRIVILEGE_CAPTURE.G_DATABASE); END; /
This starts the capture process database wide. Let it run for a bit.
2. Now you can either generate a report:
BEGIN DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT( name => 'all_priv_analysis_pol'); END; /
Or examine the new views:
DBA_USED_PRIVS DBA_UNUSED_PRIVS DBA_USED_OBJPRIVS DBA_UNUSED_OBJPRIVS
3. To turn off you proceed with the following:
BEGIN DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE( name => 'all_priv_analysis_pol'); END; /
So now you ensure that you use the best practice of least privilege for users.