- 浏览: 1098728 次
- 性别:
- 来自: 南京
博客专栏
-
Oracle管理和开发
浏览量:353069
最新评论
-
Simon.Ezer:
请问对于“如果非主键字段值发生改变,则不会同步过去”这种情况, ...
创建增量同步Oracle物化视图问题 -
dahai639:
挺好的,支持一下
Oracle的pipelined函数实现高性能大数据处理 -
zealotpz:
不错,原来是用户oracle 的所属组的问题
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析 -
mikixiyou:
zhangyuslam 写道如果担心全局索引失效,可以使用如下 ...
Oracle分区表的分区交互技术实现数据快速转移 -
sea0108:
...
Oracle sql loader使用速成
这是一份真实的客户需求实现方案。客户要求监控到某些关键表在什么时间段、什么用户、什么应用程序以及访问哪些具体的记录。
数据库系统是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;
发表评论
-
Oracle分区表的分区交互技术实现数据快速转移
2013-01-22 11:48 14808有一个需求,将某业务表的某个时间点之前的记录转移到它的历史 ... -
等待事件enq TX row lock contention分析
2013-01-17 17:16 33295在Oracle数据库性能报告AWRRPT分析时,发现top ... -
Oracle的UNDO表空间管理总结
2013-01-14 15:06 12987UNDO是Oracle中的一个很 ... -
Oracle在不同windows系统中的迁移
2013-01-09 15:41 3806在Windows操作系统环境下 ... -
Oracle 10.2.0.1在windows 2008上安装失败经历
2013-01-07 10:29 8705这两天遇到这个一个项目上的数据库迁移的问题。原来的环境是数据库 ... -
所有的物化视图刷新脚本
2012-12-28 13:59 0select 'execute dbms_mview.refr ... -
Oracle数据库的SQL性能问题分析
2012-12-27 15:31 5289在Oracle 10.2.0.4数据库中,有一个SQL执行缓慢 ... -
db block gets和consistent gets的分析
2012-12-26 18:09 0在Oracle的文档中有这样一段解释: db block g ... -
创建增量同步Oracle物化视图问题
2012-12-25 14:07 15313我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某 ... -
查归档日志文件每小时生成量
2012-12-18 16:13 10792在O racle数据库中,通过v$archived_lo ... -
如何删掉临时表空间的文件
2012-12-18 15:40 0Unlike Oracle datafiles which m ... -
Oracle sql性能诊断暨event 10046和10053使用
2012-12-17 10:24 0早上em grid control监控显示数据库的负载增加,其 ... -
查LOB字段占用的空间大小
2012-12-13 16:00 4579查询Oracle表中LOB字段的占用空间大小。表中每一个LOB ... -
Oracle Data Guard的重做日志传输和应用状况监控
2012-12-04 14:05 4079这是一个用来监控Oracle Data Guard环境下从主库 ... -
Oracle sql loader使用速成
2012-11-30 14:14 4952Oracle SQL LOADER是Oracle的 ... -
Oracle 11g2的监听器配置
2012-11-29 14:34 4391Oracle的监听器服务注册 ... -
Deleting archivelog on physical standby with RMAN in Oracle 10g
2012-11-28 13:25 0Turns out to be quite easy ... -
to_char将number转成string的小技巧
2012-11-27 14:14 10638很多数据转换处理操作时,会遇到将0.007007040000转 ... -
to_date转成字符串时ORA-01843 not a valid month 问题分析
2012-11-26 16:38 29307(注,本文三度易稿) 在开发Oracle SQL或PL/SQL ... -
Data Guard 10g 的保护级别为RESYNCHRONIZATION问题
2012-11-25 11:01 1922Oracle的data guard创建完成 ...
相关推荐
在有高保密要求的环境下,基于代理服务的Oracle数据库访问方案能够提供比传统方法更强的安全保障。通过这种方式,可以确保敏感信息在传输和存储时得到保护,符合特定行业的安全标准。同时,这种方法也为企业提供了更...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它为数据存储、管理和处理提供了高效、安全和可扩展的解决方案。对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握...
### Oracle数据库安全加固方案知识点详解 #### 一、概述 Oracle数据库因其稳定性和高效性,在企业和组织中广泛应用。然而,随着网络安全威胁日益增多,确保Oracle数据库的安全性变得尤为重要。本方案详细介绍了如何...
Oracle数据库有完善的权限和角色机制,通过用户、权限和角色管理数据访问。审计功能可以记录数据库活动,确保合规性。网络加密和SSL协议保障数据传输安全。 五、数据库性能优化 Oracle的性能优化涉及查询优化、索引...
Oracle数据库是目前广泛使用...通过这些措施,可以有效地提高Oracle数据库的安全性,预防非法访问,保护用户数据不受侵犯。在实际应用中,数据库管理员应根据具体环境和需求,灵活运用这些技术,构建安全的数据库环境。
Oracle数据库安全加固方案总结 Oracle数据库安全加固方案是为了降低Oracle数据库面临的风险,及时堵塞漏洞,提高平安防护能力的操作指南。本方案涵盖了多个方面的安全加固措施,包括审计操作、日志策略、归档模式、...
随着数据量的增长和网络安全威胁的增加,Oracle数据库的安全策略变得至关重要。本文将深入探讨Oracle数据库在应用过程中的安全管理、安全性能要求以及常用的安全保护策略。 首先,Oracle数据库的应用安全管理旨在...
8. **安全性**:Oracle数据库提供了强大的安全特性,如网络加密、审计、角色权限控制、数据红移等,以保护敏感信息免受未授权访问。 9. **数据库设计与开发**:Oracle支持PL/SQL编程,允许开发人员创建存储过程、...
Oracle数据库系统是一种支持分布式处理、高度可扩展、安全可靠的数据库解决方案。它采用SQL(结构化查询语言)作为其主要的数据操作和查询语言,并提供了丰富的数据类型、存储过程、触发器等特性。 2. **安装与...
3. 经营分析展示:Oracle数据库可以与BI(商业智能)工具集成,通过数据仓库和OLAP(在线分析处理)技术,将数据转化为直观的图表和报表,供决策者参考。 三、Oracle数据库的安全管理 1. 用户角色管理:通过创建...
总之,Oracle数据库的安全解决方案是一个综合的过程,涉及到用户管理、权限控制、数据加密、审计跟踪以及高级安全特性如VPD和标签安全的集成应用。通过有效的安全管理,可以确保Oracle数据库在面临日益复杂的网络...
6. **数据库安全性**:讨论如何设置用户权限、角色、审计机制,以确保数据库的安全性,防止未授权访问和数据泄露。 7. **数据库性能监控**:学习使用Oracle的性能分析工具,如V$视图、AWR(自动工作负载 repository...
【Oracle数据库学生管理系统】是一个基于Oracle数据库的教育信息化解决方案,主要服务于管理员、教师和学生三类用户。系统的核心目标是实现高效、安全的信息管理和交流。 管理员在系统中的职责主要包括维护三大基本...
Oracle数据库技术是IT领域中至关重要的一部分,尤其对于大型企业数据管理而言,Oracle以其高效、稳定和安全性享誉全球。Oracle数据库不仅提供了丰富的功能,还支持多种操作系统和硬件平台,使其成为许多企业的首选...
综上所述,Trust CAPAA System为ORACLE数据库提供了深度集成的身份管理、敏感数据保护、访问控制、故障恢复和安全审计机制,确保企业在面对日益严峻的数据安全挑战时,能够有效地保护其关键信息资源。通过多维度的...
2. **功能强大**:涵盖了Oracle数据库的主要安全配置模块,如用户管理、权限管理、角色管理、概要文件管理、审计管理和数据加密。 3. **操作简便**:通过鼠标点击即可完成配置,无需掌握复杂的SQL语句或Oracle安全...
Oracle数据库是一款支持多种数据类型的分布式数据库系统,它提供了高可用性、安全性、性能优化和可扩展性的解决方案。Oracle以其强大的数据管理能力,支持大规模的数据存储和复杂的查询操作。 二、Oracle数据库架构...