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

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安全实战—开发安全的数据库与中间件环境

    介绍如何最大化地发挥oracle数据库、oracle databasevault、oracle identity management、oracle application express以及oracle business intelligence suite的安全特性。本书通过独家的权威资源,为您提供经过验证...

    数据库安全审计系统介绍.pptx

    全方位信息安全审计方案 互联网 维护人员 业务系统 用户 "天锐锋"安全审计产品 提供全用户、全业务、全方位的信息安全审计解决方案 SSO业务软件单点登录系统 OSAG Manager运维安全审计系统 DBAG Manager数据库安全...

    oracle数据库dba管理手册

    11.1.2 安全与数据访问控制 321 11.1.3 事务管理 322 11.1.4 文件定位 322 11.1.5 监控 322 11.1.6 版本考虑 323 11.1.7 DBA的角色 324 11.2 管理Oracle Financials软件包的特殊 准则 324 11.2.1 数据库结构 324 ...

    2013中国数据库大会ppt(1)

    混合型企业数据访问架构设计.pdf 百度大规模存储系统.pdf Oracle ExaData 一体机的高效备份之道.pdf 基于网络监听的数据库安全审计技术.pdf 数据库防御技术全揭秘——DATAbase firewall和DBV审计.pdf 保险行业数据...

    ORADBMS:用于管理 Oracle 数据库的轻量级软件-开源

    ORACLE 数据库的数据库管理软件。 是 SQL、PL/SQL 程序员和 ORACLE 管理员的数据库访问工具。 快速轻量级的数据库管理工具,具有自动会话终止功能。 SQLDeveloper / Orbada / RazorSQL / itp 的替代方案。

    数据中台解决方案.pptx

    数据安全是数据中台的重要保障,需要建立完善的数据安全体系,包括数据加密、数据备份、数据访问控制等。同时,需要定期进行数据安全审计和风险评估,确保数据的安全性。 综上所述,数据中台技术架构设计方案需要...

    数据中台技术架构设计方案.pptx

    数据安全是数据中台的重要保障,需要建立完善的数据安全体系,包括数据加密、数据备份、数据访问控制等。同时,需要定期进行数据安全审计和风险评估,确保数据的安全性。 综上所述,数据中台技术架构设计方案需要...

    数据中台技术架构设计方案 .docx

    数据安全是数据中台的重要保障,需要建立完善的数据安全体系,包括数据加密、数据备份、数据访问控制等。同时,需要定期进行数据安全审计和风险评估,确保数据的安全性。 综上所述,数据中台技术架构设计方案需要...

    ORACLE9i_优化设计与系统调整

    第13章 数据访问方法 160 §13.1 使用索引的访问方法 161 §13.1.1 何时创建索引 161 §13.1.2 索引列和表达式的选择 161 §13.1.3 选择复合索引的主列 161 §13.1.4 要用可选择性索引 162 §13.1.5 测量索引的可...

    2013中国数据库大会ppt(3)

    混合型企业数据访问架构设计.pdf 百度大规模存储系统.pdf Oracle ExaData 一体机的高效备份之道.pdf 基于网络监听的数据库安全审计技术.pdf 数据库防御技术全揭秘——DATAbase firewall和DBV审计.pdf 保险行业数据...

    oracle10g课堂练习I(2)

    练习概览:实施 Oracle 数据库安全性 10-30 11 配置 Oracle 网络环境 课程目标 11-2 Oracle Net Services 11-3 Oracle Net Listener 11-4 建立网络连接 11-5 建立连接 11-6 用户会话 11-7 配置和管理 ...

    2013中国数据大会ppt(2)

    混合型企业数据访问架构设计.pdf 百度大规模存储系统.pdf Oracle ExaData 一体机的高效备份之道.pdf 基于网络监听的数据库安全审计技术.pdf 数据库防御技术全揭秘——DATAbase firewall和DBV审计.pdf 保险行业数据...

    基于Python+Flask+MySQL的数据微中台,支持数据库管理、数据收集(某乎爬虫等)等功能.zip

    MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...

    2013年中国数据库大会PPT第二部分

    33.混合型企业数据访问架构设计.pdf 34.百度大规模存储系统.pdf 35.Oracle ExaData 一体机的高效备份之道.pdf 36.基于网络监听的数据库安全审计技术.pdf 37.数据库防御技术全揭秘——DATAbase firewall和DBV审计.pdf...

    C++ Qt 基于数据库Mysql学生信息管理系统.zip

    MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...

    Java网上书店管理系统(基于MVC模式编写:前端jsp页面、数据库MySQL、服务器Tomcat).zip

    MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...

    基于python的wxpy结合mysql数据库做的一个微信娱乐机器人.zip

    MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...

    一个基于 go-cqhttp 开发,以 MySQL 作为数据库的 qq 群功能型机器人.zip

    MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...

Global site tag (gtag.js) - Google Analytics