|
Auditing a database
Introduction
As a DBA, you
are responsible for auditing the database
due to a suspicious transaction on certain
table. An unknown user is deleting records
and you have been assigned the task to
investigate and find out who that person is.
Your job’s responsibilities dictate that you
should at least be informed of the following
basic fundamental subjects:
Starting
auditing
Stopping
auditing
Reading from
the AUDIT TRAIL table
Truncating the
AUD$ table
Using the
AUDIT_TRAIL view
Listing the
AUDIT_TRAIL parameter
Setting the
AUDIT_TRAIL parameter
Shutting down
and startup a database using SPFILE
Using the AUD$
table
Auditing an
auditor
Auditing who
deletes a record
Viewing the
AUD$ table
Stopping all
auditing trail
Commands:
TRUNCATE TABLE
aud$
SHOW PARAMETER
ALTER SYSTEM
SET audit_trail=db SCOPE=spfile
SHUTDOWN
IMMEDIATE
CONNECT
system/manager AS SYSDBA
STARTUP
AUDIT delete
ON sys.aud$
AUDIT DELETE
ON BY ACCESS WHENEVER SUCCESSFUL
NOAUDIT ALL
Hands-on
In this
exercise you will learn how to start and
stop auditing, how to read from the audit
trail table and more...
Now, connect as the SYSTEM/MANAGER user.
SQL> CONNECT
system/manager AS SYSDBA
Clean audit
table
Truncate the database audit table. The
database audit table was truncated so any
old audited information will be deleted for
this exercise.
SQL> TRUNCATE TABLE
aud$
/
Audit parameter
View the
AUDIT_TRAIL parameter value.
SQL> SHOW PARAMETER
audit_trail
The NONE value indicates that the
audit process was not activated.
Change the AUDIT_TRAIL parameter to db in
the Server Parameter File.
SQL> ALTER
SYSTEM SET audit_trail=db SCOPE=spfile
/
Activate
auditing
Shutdown and startup the database. Use the
default Server Parameter File (SPFILE).
Notice that when the AUDIT_TRAIL option is
set to db, your audit trail information is
stored in the AUD$ table owned by sys. And
also, when AUDIT_TRAIL is set to Operating
System, your audit trail information will be
stored in the directory named by the
AUDIT_FILE_DEST parameter. In this example,
we are storing data into the AUD$ table in
the Oracle database.
SQL> SHUTDOWN
IMMEDIATE
SQL> CONNECT system/manager AS SYSDBA
SQL> STARTUP
View the AUDIT_TRAIL value again.
SQL> SHOW PARAMETER
audit_trail
Notice that this time, the value
was changed to db.
Query the AUD$ table.
SQL> SELECT * FROM
aud$
/
Notice that there are no records
in the audit table.
Check what to
audit
First, let's audit who ever deleted any
records from the aud$ table. That should be
our first target since an auditor may cover
his/her own actions by deleting records from
the AUD$ table.
SQL> AUDIT delete
ON sys.aud$
/
Notice that this is very
important. You should be sure that no user
can remove records from the audit logs
undetected.
Audit who ever deleted a record from the EMP
table. Since the 'audit trail process'
generates a lot of records you should be
very specific in regards to your auditing.
SQL> AUDIT
DELETE
ON oracle.emp
BY ACCESS
WHENEVER SUCCESSFUL
/
Check auditing
Connect as the ORACLE user.
SQL> CONNECT
oracle/learning
Insert a record into the EMP table.
SQL> INSERT INTO
emp
VALUES (9999,'KAZ','RESEARCH',7788,'10-MAR-89',1000,null,30)
/
SQL> COMMIT
/
Now, delete the KAZ employee.
SQL> DELETE FROM
emp
WHERE empno = 9999
/
SQL> COMMIT
/
Connect again as the SYSTEM/MANAGER user.
SQL> CONNECT
system/manager AS SYSDBA
View the SYS.AUD$ table to display the date
and time who (username), and what (statement
of an action) was done.
SQL> SELECT
TO_CHAR(timestamp#,'DD-MON-YYYY HH24:MI:SS')
as "Date and
Time", userid, name "Action by user"
FROM sys.aud$ JOIN sys.audit_actions
ON action = action#
/
Stop auditing
Since auditing takes a lots of disk space be
sure to stop auditing when it is not needed.
Try, stop auditing.
SQL> NOAUDIT
ALL
/
Reset audit
parameter
Now, reset the AUDIT_TRAIL parameter value
to NONE and then shutdown and startup the
database. Shutdown and startup the database
by using the defualt Server Parameter File (SPFILE).
We took the AUDIT_TRAIL parameter back to
it's original value so you can do this
exercise over if you want.
SQL> ALTER
SYSTEM SET audit_trail=NONE SCOPE=spfile
/
SQL> SHUTDOWN IMMEDIATE
SQL> CONNECT system/manager AS SYSDBA
SQL> STARTUP
Questions:
Q: How do you
activate auditing a database?
Q: How do you
start auditing?
Q: How do you
stop auditing?
Q: How do you
read from the AUDIT_TRAIL table?
Q: When and
why do you truncate the AUD$ table?
Q: How do you
view the AUDIT_TRAIL parameter value?
Q: How do you
set the AUDIT_TRAIL parameter value?
Q: How do you
auditing an auditor?
Q: Audit all
the users who delete a record or records
from the EMP table?
Q: What do the
following SQL statements do?
SQL> TRUNCATE
TABLE aud$
/
SQL> ALTER SYSTEM SET audit_trail=db SCOPE=spfile
/
SQL> AUDIT delete ON sys.aud$
/
SQL> AUDIT DELETE
ON oracle.emp
BY ACCESS
WHENEVER SUCCESSFUL
/
SQL> SELECT
TO_CHAR(timestamp#,'DD-MON-YYYY HH24:MI:SS')
as "Date and
Time", userid, name "Action by user"
FROM sys.aud$ JOIN sys.audit_actions
ON action = action#
/
SQL> NOAUDIT ALL
/
|