`
mikixiyou
  • 浏览: 1100537 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353633
社区版块
存档分类
最新评论

Oracle数据库数据访问安全与审计方案

阅读更多

 

这是一份真实的客户需求实现方案。客户要求监控到某些关键表在什么时间段、什么用户、什么应用程序以及访问哪些具体的记录。

数据库系统是Oracle9.2.0.1,它的审计功能可实现该需求。

基于审计对正常运行的应用的性能压力,需要设置特定时间段的数据访问审计。

从审计日志中获得的监控详细信息,那些表被什么应用访问,什么时候访问。提供详细报告信息。

(miki西游@mikixiyou 的文档,原文链接: http://mikixiyou.iteye.com/blog/1547353)

 

1       审计功能原理

Oracle数据库的审计功能来分析管理数据库的访问安全。

通常,审计的用途如下:

可审计特定的用户、表、或具体的行的当前操作,或者影响特定的内容。

例如,什么用户查询了什么表,甚至表中那些记录。

调查可疑的操作。

例如,如果有用户正在删除某些表的数据,审计人员可使用审计功能审计所有的数据库连接,数据库成功或者不成功的删除操作。

通报没有被授权的用户正操作或者删除数据的所有者,该非法用户有过多的不被允许的权限,可检查出权限设置问题。

监控和收集特殊的数据库行为的数据。

检测授权和访问控制的实施的问题。

例如,可以创建一个希望的审计策略。这个审计策略保证其他情况下绝不会生成审计记录。但是,如果这个策略下生成了审计记录,就可以知道有其他的安全控制没有被正确地实现。

审计一般分为四类,分别为语句审计、权限审计、对象审计、细粒度审计。

其中前三类为标准审计,在ORACLE数据库各个版本中都有,最后一类称为细粒度审计,在ORACLE9i以后的版本中出现,并在10g中功能增强。

 

语句审计 可审计特定类型的操作语句,甚至可以审计某些类型的一系列操作。如,audit table可审计表上的所有的DDL语句。

权限审计 可审计相关操作的系统权限。如,audit create table。

对象审计 可审计精确的对象上的明确的语句,如audit select on temployees。

对象审计更精确,可审计一个对象上唯一一个明确类型的语句,并且作用于数据库中所有的用户。

细粒度审计 可审计基于内容的细粒度的数据访问和操作,如某个字段的值大于某值。

在ORACLE10g中,就这两大类审计,比较两者的异同。

标准审计必须用参数 AUDIT_TRAIL 在数据库级启用。这个参数不是动态的;必须重启数据库来使其生效。相比而言,细粒度审计不需要任何参数修改。

一旦被设置在一个对象上,标准审计将保持在那里。要解除它,必须用 NOAUDIT 命令删除审计选项。这可能很不方便,因为在一个表上丢弃审计选项也将丢弃元数据信息。然而,细粒度审计 可以临时禁用和启用,不丢失任何元数据信息。

细粒度审计 只能够处理四种类型的语句:SELECT、INSERT、UPDATE 和 DELETE。相比而言,常规审计可以处理其它许多语句和权限,甚至会话连接和断开。

标准审计每次会话只创建一条记录(按会话)或每次访问对象创建一条记录(按访问)这种占用资源很少的方式对于控制审计线索表中的空间非常重要。细粒度审计 并不是同样节省资源;它每次访问运行一次 — 使得线索更大。

通过记录线索,标准审计可以用来检测任何中断企图,如果企图没有成功,则将产生错误代码。而 细粒度审计不能。

标准审计可以写数据库表或 OS 文件。后者在审计员(不是数据库管理员)能够访问线索时非常有用。这个选项保护了审计线索的完整性。然而,细粒度审计 日志仅写到数据库表 FGA_LOG$ 中。

标准审计可以设置用于默认对象。当表是在运行期创建时,这个功能变得极为有用:默认的审计选项允许没有数据库管理员干预的审计。这在 细粒度审计中是不可能的,用户必须在一个现有的表上创建策略,上述的情况只能在表已创建之后才可能发生。

在细粒度审计中,审计更加灵活 — 仅当访问某些列,当某个特定的条件为真时等等。这种多功能性在您需要控制线索的增长时非常方便。

在 细粒度审计 中,SQL 赋值变量默认被捕获。在常规审计中,必须把初始化参数 audit_trail设为 db_extended,以启用这一功能。

权限上的差异:常规审计需要审计系统或语句权限;细粒度审计只需要 dbms_fga 程序包上的运行权限。

根据需求定义,采用对象审计功能。如果需求审计到具体表中的记录,可使用细粒度审计来实现。

在这里,使用对象审计功能来实现我们的项目需求。

2       实现方法

2.1    修改初始化参数AUDIT_TRAIL。

Alter system set audit_trail=DB scope=spfile;

或者手工修改数据库初始化文件。

1.1    AUDIT_TRAIL

Parameter type String

Syntax AUDIT_TRAIL = {NONE | FALSE | DB | TRUE | OS}

Default value There is no default value.

Parameter class Static

AUDIT_TRAIL enables or disables the automatic writing of rows to the audit trail.

Values:

NONE or FALSE

Audit records are not written.

OS

Enables system-wide auditing and causes audited records to be written to the operating system's audit trail.

DB or TRUE

Enables system-wide auditing and causes audited records to be written to the database audit trail (the SYS.AUD$ table).

 

2.2    检查是否存在sys.aud$表

Select * from sys.aud$;

如果不存在,需要使用ORACLE系统提供的脚本cataaud.sql创建。

2.3    重启数据库,使修改参数生效

Shutdown immediate;

Startup open;

Show parameter audit_trail;

SQL> connect / as sysdba

已连接。

SQL> show parameter audit_trail

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- -----------------------------

audit_trail                          string      DB_EXTENDED

SQL>

2.4    检查审计相关视图,确认是否存在审计项目。

Select * from dba_stmt_audit_opts;

Select * from dba_priv_audit_opts;

Select * from dba_obj_audit_opts;

如果上述结果为空,则表示数据库中无任何要审计的内容。

2.5    AUDIT审计功能使用。

Audit select on scott.emp

审计scott模式中emp表,所有这个查询这个表的操作都被对象审计功能记录在sys.aud$表中。

Audit使用语法如下:

AUDIT

  { sql_statement_clause | schema_object_clause | NETWORK }

  [ BY { SESSION | ACCESS } ]

  [ WHENEVER [ NOT ] SUCCESSFUL ] ;

缺省值为audit *** by session whenever successful

2.6    检查审计结果视图。

查询sys.aud$表或者dba_audit_trail视图,可得到审计结果记录。

Aud$表的记录会一直增大,而该表所在的表空间为system表空间。System表空间满会导致数据库挂起。所以,在数据库审计功能打开后,需要时刻关注aud$表的增长情况。

可移动aud$表到其他表空间,以避免system表空间满导致数据库系统挂起的问题。

Aud$表中的记录也需要定期清除,使用命令truncate table aud$;。

Aud$表结构如下:

SQL> desc aud$;

Name Type Nullable

SESSIONID NUMBER  

ENTRYID NUMBER  

STATEMENT NUMBER  

TIMESTAMP# DATE Y

USERID VARCHAR2(30) Y

USERHOST VARCHAR2(128) Y

TERMINAL VARCHAR2(255) Y

ACTION# NUMBER  

RETURNCODE NUMBER  

OBJ$CREATOR VARCHAR2(30) Y

OBJ$NAME VARCHAR2(128) Y

AUTH$PRIVILEGES VARCHAR2(16) Y

AUTH$GRANTEE VARCHAR2(30) Y

NEW$OWNER VARCHAR2(30) Y

NEW$NAME VARCHAR2(128) Y

SES$ACTIONS VARCHAR2(19) Y

SES$TID NUMBER Y

LOGOFF$LREAD NUMBER Y

LOGOFF$PREAD NUMBER Y

LOGOFF$LWRITE NUMBER Y

LOGOFF$DEAD NUMBER Y

LOGOFF$TIME DATE Y

COMMENT$TEXT VARCHAR2(4000) Y

CLIENTID VARCHAR2(64) Y

SPARE1 VARCHAR2(255) Y

SPARE2 NUMBER Y

OBJ$LABEL RAW(255) Y

SES$LABEL RAW(255) Y

PRIV$USED NUMBER Y

SESSIONCPU NUMBER Y

NTIMESTAMP# TIMESTAMP(6) Y

PROXY$SID NUMBER Y

USER$GUID VARCHAR2(32) Y

INSTANCE# NUMBER Y

PROCESS# VARCHAR2(16) Y

XID RAW(8) Y

AUDITID VARCHAR2(64) Y

SCN NUMBER Y

DBID NUMBER Y

SQLBIND CLOB Y

SQLTEXT CLOB Y

 

 

 

 

 

dba_audit_trail视图结构如下:

Name Comments

OS_USERNAME Operating System logon user name of the user 

whose actions were audited

USERNAME Name (not ID number) of the user

whose actions were audited

USERHOST Client host machine name

TERMINAL Identifier for the user's terminal

TIMESTAMP Date/Time of the creation of the audit trail entry 

(Date/Time of the user's logon for entries created by AUDIT SESSION)

in session's time zone

OWNER Creator of object affected by the action

OBJ_NAME Name of the object affected by the action

ACTION Numeric action type code.

The corresponding name of the action type 

(CREATE TABLE, INSERT, etc.)

is in the column ACTION_NAME

ACTION_NAME Name of the action type corresponding 

to the numeric code in ACTION

NEW_OWNER The owner of the object named 

in the NEW_NAME column

NEW_NAME New name of object after RENAME, 

or name of underlying object

(e.g. CREATE INDEX owner.obj_name 

ON new_owner.new_name)

OBJ_PRIVILEGE Object privileges granted/revoked 

by a GRANT/REVOKE statement

SYS_PRIVILEGE System privileges granted/revoked 

by a GRANT/REVOKE statement

ADMIN_OPTION If role/sys_priv was granted 

WITH ADMIN OPTON, A/-

GRANTEE The name of the grantee specified 

in a GRANT/REVOKE statement

AUDIT_OPTION Auditing option set 

with the audit statement

SES_ACTIONS Session summary. 

A string of 12 characters, 

one for each action type,

in thisorder: Alter, Audit, 

Comment, Delete, Grant, Index,

Insert, Lock, Rename, Select, 

Update, Flashback.

Values:  "-" = None, "S" = Success, 

"F" = Failure, "B" = Both

LOGOFF_TIME Timestamp for user logoff

LOGOFF_LREAD Logical reads for the session

LOGOFF_PREAD Physical reads for the session

LOGOFF_LWRITE Logical writes for the session

LOGOFF_DLOCK Deadlocks detected during the session

COMMENT_TEXT Text comment on the audit trail entry.

Also indicates how the user was authenticated.

The meth od can be one of the following:

1. "DATABASE" - aut hentication was done by pass word.

2. "NETWORK"  - aut hentication was done by Net8

or the Advanced Networking Option.

3. "PROXY"    - the client was authenticated by another user.

The name of the proxy user follo ws the method type.

SESSIONID Numeric ID for each Oracle session

ENTRYID Numeric ID for each audit trail entry in the session

STATEMENTID Numeric ID for each statement run 

(a statement may cause many actions)

RETURNCODE Oracle error code generated by the action.  

Zero if the action succeeded

PRIV_USED System privilege used to execute the action

CLIENT_ID Client identifier in each Oracle session

ECONTEXT_ID Execution Context Identifier for each action

SESSION_CPU Amount of cpu time used 

by each Oracle session

EXTENDED_TIMESTAMP Timestamp of the creation of audit trail entry

(Timestamp of the user's logon for entries created by AUDIT SESSION)

in session's time zone

PROXY_SESSIONID Proxy session serial number,

if enterprise user has logged through proxy mechanism

GLOBAL_UID Global user identifier for the user, 

if the user had logged in as enterprise user

INSTANCE_NUMBER Instance number as specified 

in the initialization parameter file 'init.ora'

OS_PROCESS Operating System process identifier 

of the Oracle server process

TRANSACTIONID Transaction identifier of the transaction 

in which the object is accessed or modified

SCN SCN (System Change Number) of the query

SQL_BIND Bind variable data of the query

SQL_TEXT SQL text of the query

 

2.7    解除对象的审计功能

在确认审计结束后,务必解除该对象的审计功能。命令如下:

Noaudit select on scott.emp;

 

 

0
0
分享到:
评论

相关推荐

    基于代理服务的Oracle数据库安全访问.pdf

    在有高保密要求的环境下,基于代理服务的Oracle数据库访问方案能够提供比传统方法更强的安全保障。通过这种方式,可以确保敏感信息在传输和存储时得到保护,符合特定行业的安全标准。同时,这种方法也为企业提供了更...

    oracle数据库系统应用与开发

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它为数据存储、管理和处理提供了高效、安全和可扩展的解决方案。对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握...

    oracle数据库安全加固方案

    ### Oracle数据库安全加固方案知识点详解 #### 一、概述 Oracle数据库因其稳定性和高效性,在企业和组织中广泛应用。然而,随着网络安全威胁日益增多,确保Oracle数据库的安全性变得尤为重要。本方案详细介绍了如何...

    Oracle数据库资料大全

    Oracle数据库有完善的权限和角色机制,通过用户、权限和角色管理数据访问。审计功能可以记录数据库活动,确保合规性。网络加密和SSL协议保障数据传输安全。 五、数据库性能优化 Oracle的性能优化涉及查询优化、索引...

    Oracle数据库监控的安全维护技术.pdf

    Oracle数据库是目前广泛使用...通过这些措施,可以有效地提高Oracle数据库的安全性,预防非法访问,保护用户数据不受侵犯。在实际应用中,数据库管理员应根据具体环境和需求,灵活运用这些技术,构建安全的数据库环境。

    某Oracle数据库安全加固方案总结.docx

    Oracle数据库安全加固方案总结 Oracle数据库安全加固方案是为了降低Oracle数据库面临的风险,及时堵塞漏洞,提高平安防护能力的操作指南。本方案涵盖了多个方面的安全加固措施,包括审计操作、日志策略、归档模式、...

    Oracle数据库的安全策略.pdf

    随着数据量的增长和网络安全威胁的增加,Oracle数据库的安全策略变得至关重要。本文将深入探讨Oracle数据库在应用过程中的安全管理、安全性能要求以及常用的安全保护策略。 首先,Oracle数据库的应用安全管理旨在...

    oracle数据库管理与维护技术手册.pdf

    8. **安全性**:Oracle数据库提供了强大的安全特性,如网络加密、审计、角色权限控制、数据红移等,以保护敏感信息免受未授权访问。 9. **数据库设计与开发**:Oracle支持PL/SQL编程,允许开发人员创建存储过程、...

    oracle数据库 详细课件

    Oracle数据库系统是一种支持分布式处理、高度可扩展、安全可靠的数据库解决方案。它采用SQL(结构化查询语言)作为其主要的数据操作和查询语言,并提供了丰富的数据类型、存储过程、触发器等特性。 2. **安装与...

    基于Oracle数据库的经营分析系统数据支撑方案.pdf

    3. 经营分析展示:Oracle数据库可以与BI(商业智能)工具集成,通过数据仓库和OLAP(在线分析处理)技术,将数据转化为直观的图表和报表,供决策者参考。 三、Oracle数据库的安全管理 1. 用户角色管理:通过创建...

    Oracle数据库安全解决方案探讨.pdf

    总之,Oracle数据库的安全解决方案是一个综合的过程,涉及到用户管理、权限控制、数据加密、审计跟踪以及高级安全特性如VPD和标签安全的集成应用。通过有效的安全管理,可以确保Oracle数据库在面临日益复杂的网络...

    中兴公司ORACLE数据库培训

    6. **数据库安全性**:讨论如何设置用户权限、角色、审计机制,以确保数据库的安全性,防止未授权访问和数据泄露。 7. **数据库性能监控**:学习使用Oracle的性能分析工具,如V$视图、AWR(自动工作负载 repository...

    Oracle数据库学生管理系统

    【Oracle数据库学生管理系统】是一个基于Oracle数据库的教育信息化解决方案,主要服务于管理员、教师和学生三类用户。系统的核心目标是实现高效、安全的信息管理和交流。 管理员在系统中的职责主要包括维护三大基本...

    Oracle数据库技术

    Oracle数据库技术是IT领域中至关重要的一部分,尤其对于大型企业数据管理而言,Oracle以其高效、稳定和安全性享誉全球。Oracle数据库不仅提供了丰富的功能,还支持多种操作系统和硬件平台,使其成为许多企业的首选...

    ORACLE安全审计数据恢复解决方案

    综上所述,Trust CAPAA System为ORACLE数据库提供了深度集成的身份管理、敏感数据保护、访问控制、故障恢复和安全审计机制,确保企业在面对日益严峻的数据安全挑战时,能够有效地保护其关键信息资源。通过多维度的...

    Oracle数据库的图形化安全配置工具.pdf

    2. **功能强大**:涵盖了Oracle数据库的主要安全配置模块,如用户管理、权限管理、角色管理、概要文件管理、审计管理和数据加密。 3. **操作简便**:通过鼠标点击即可完成配置,无需掌握复杂的SQL语句或Oracle安全...

    oracle数据库基础教程(英文版)

    Oracle数据库是一款支持多种数据类型的分布式数据库系统,它提供了高可用性、安全性、性能优化和可扩展性的解决方案。Oracle以其强大的数据管理能力,支持大规模的数据存储和复杂的查询操作。 二、Oracle数据库架构...

Global site tag (gtag.js) - Google Analytics