Oracle 11g OCM考试考点分析 数据库安全与审计

本文永久链接地址:https://www.askmac.cn/archives/oracle-11g-ocm-audit.html

 

7.1审计类型:

7.1.1 标准审计

在标准审计中,你审计SQL语句,权限,方案对象和网络活动。你可以使用AUDIT SQL语句配置,和NOAUDIT来移除配置。你可以写审计记录到数据库审计文件或者操作系统审计文件。

任何用户可以配置在其本地方案中 使用标准审计。不需要额外的权限。用户可以运行AUDIT语句来进行审计选项,而不管AUDIT_TRAIL参数设置。如果 审计被关闭,然后在下一次被启用,oracle会审计AUDIT语句设置的活动。

 

标准审计主要是使用audit相关的语句进行审计。

注意:要审计其他方案的对象,这个用户必须有AUDIT ANY 的系统权限。

要审计系统权限,此用户必须有AUDIT SYSTEM权限

默认情况下O7_DICTIONARY_ACCESSIBILITY 设置为FALSE,也就是只有SYSDBA权限可以在 SYS.AUD$ 和 SYS.FGA_LOG$上执行DML动作。非SYSDBA用户不能审计SYS对象

7.1.2细粒度审计

细粒度审计能够让你基于文本监控数据访问。在一般情况下,细粒度的审计策略是基于简单的、用户定义的SQL谓词在表对象作为选择性的审核条件。在获取过程中,每当遇到一行的策略条件时,查询查询将被审计。

 

你可以使用细粒度审计来审计下列动作的类型:

1.在9 pm和6am时间段访问一个表,或者在周6和周日访问

2.使用企业网络外部的IP地址访问

3.选择或更新一个表的字段

4.修改一个表中字段的值

 

注意:细粒度审计 只支持CBO。对于RBO,细粒度审计在应用行过滤之前检查审计,这可能会导致一个不必要的审计事件触发。

如果是直接加载,考虑使用标准审计,否则数据库会将使用细粒度升级的sql语句的直接load,转换为传统的加载。
细粒度审计记录被存储在SYS.FGA_LOG$表中。可以查询DBA_FGA_AUDIT_TRAIL视图。这个视图包含了标准审计和细粒度审计记录。除此之外,你可以查询V$XML_AUDIT_TRAIL来查看以XML格式文件的细粒度审计记录。

 

细粒度审计创建了更有意义的审计记录,只包含你想审计的指定动作。如果整个表的访问被记录,可以排除不必要的信息。细粒度审计有如下的优势:

1.其执行一个布尔条件的检查。如果你指定的布尔条件达成。例如,一个表在周末被访问。

2.可以捕获触发审计的sql语句。你可以捕获引起审计的SQL语句,和任何相关的绑定变量。当然只能捕获特

定的字段类型数据。对象字段,LOB或用户定义字段类型不能被捕获。

 

当你创建一个细粒度策略后,其存储在sys.FGA$中。如果一个表的字段有细粒度审计策略,你不能加密或解密这个字段(使用UPDATE)。如果你想这么做的话,首先要临时禁用细粒度审计策略。

 

细粒度审计使用DBMS_FGA包来完成,其使用的语法:

 

DBMS_FGA.ADD_POLICY(

object_schema      VARCHAR2,

object_name        VARCHAR2,

policy_name        VARCHAR2,

audit_condition    VARCHAR2,

audit_column       VARCHAR2,

handler_schema     VARCHAR2,

handler_module     VARCHAR2,

enable             BOOLEAN,

statement_types    VARCHAR2,

audit_trail        BINARY_INTEGER IN DEFAULT,

audit_column_opts  BINARY_INTEGER IN DEFAULT);

 

例如,下面的例子对HR.EMPLOYEES审计INSERT,UPDATE,DELETE和SELECT。注意此处忽略了audit_column_opts参数,因为这个不是一个强制参数:

 

 

BEGIN

DBMS_FGA.ADD_POLICY(

object_schema      => 'HR',

object_name        => 'EMPLOYEES',

policy_name        => 'chk_hr_employees',

enable             =>  TRUE,

statement_types    => 'INSERT, UPDATE, SELECT, DELETE',

audit_trail        =>  DBMS_FGA.DB);

END;

/

 

 

7.2TDE

Oracle 透明数据加密提供了实施加密所必需的关键管理基础架构。 加密的工作原理是将明文数据以及秘密(称作密钥)传递到加密程序中。 加密程序使用提供的密钥对明文数据进行加密,然后返回加密数据。 以往,创建和维护密钥的任务由应用程序完成。 Oracle 透明数据加密通过为整个数据库自动生成一个万能密钥解决了此问题。 在启动 Oracle 数据库时,管理员必须使用不同于系统口令或 DBA 口令的口令打开一个 Oracle Wallet 对象。 然后,管理员对数据库万能密钥进行初始化。 万能密钥是自动生成的。

当一个表包含加密字段时,一个单独表key被使用,不管有多少被加密的字段。这个表key被数据库服务器主加密key加密然后存放在数据字典中。没有key是明文存储的。对弈TDE 表空间来说,是每一个表空间有一个加密的KEY

使用下列命令来设置master 加密 key:

SQL> ALTER SYSTEM SET ENCRYPTION KEY [“certificate_ID”] IDENTIFIED BY “password”

 

创建一个wallet

 

mkdir -p /u01/app/oracle/admin/dbdao/wallet

ENCRYPTION_WALLET_LOCATION=

(SOURCE=

(METHOD = FILE)

(METHOD_DATA =

(DIRECTORY = /u01/app/oracle/admin/dbdao/wallet)))

 

–在sqlnet.ora中添加ENCRYPTION_WALLET_LOCATION 指定钱包的位置,如果没有这个参数, WALLET_LOCATION 的值就会被使用,如果此处没有wallet的话,就会创建一个新的

 

如果没有任何位置参数的话,会使用默认位置,一般是在ORACLE_BASE/admin/DB_UNIQUE_NAME/wallet 或者ORACLE_HOME/admin/DB_UNIQUE_NAME/wallet

 

然后就可以创建加密表空间了:

create  tablespace encrypted_ts encryption using 'AES256' default storage(encrypt)

 

 

–查询:

select tablespace_name,encrypted from dba_tablespaces;   –如果是yes 则说明是加密表空间

 

wallet管理:

打开和关闭钱包:

open

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY “password”

close

ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY “password”

 

 

7.3 安全LOB

从11g开始。Oracle 提供了 SecureFiles ,这是一个新的LOB 存储结构。

在CREATE TABLE语句中使用存储关键字 securefile时将创建securefiles LOBs。默认是使用的原来的LOB结果存储,也即是,不使用securefile关键字,或使用BASICFILE 就是使用的BasicFile LOBS存储。

 

–这个是由db_securefile初始化参数控制的。

db_securefile 参数让管理员允许安全文件LOBs的创建。这个参数有4个值:ALWAYS, PERMITTED [default], NEVER, 或IGNORE。

如果设置NEVER ,任何被指定使用安全文件LOB的,将被作为BasicFile LOBs创建。

ALWAYS,除非是指定了SECUREFILE参数,否则所有尝试的LOB会以安全文件LOB创建,但是存储在非ASSM表空间的LOB会以基础文件LOB创建。

IGNORE:所有的SECUREFILE关键字和所有的安全LOB选项被忽略。

 

 

SecureFiles 只能压缩,利用Oracle 高级压缩选项,无缝 分析 SercureFiles LOB 数据和压缩来节省磁盘空间。

注意,你必须有Oracle高级压缩的license在实施SecureFiles智能压缩之前。

 

重复数据的删除:

SecureFiles 只能删除重复数据,可以和高级压缩选项一起启用,让数据库能够自动删除重复的LOB数据,在LOB字段或分区上,保证只有一份数据存储。

–注意 Oracle Streams 不支持SecureFiles LOBs的重复删除。

 

SecureFiles 支持加密,使用TDE,让数据安全存储–是oracle 高级安全的选项,需要有Oracle 高级安全选项的license。

 

–一个SecureFile LOB 只能被创建的ASSM的表空间上,

–shrink 选项不支持 SecureFiles LOBs

 

语法:

 

<LOB_storage_clause> ::=

LOB

{ (LOB_item [, LOB_item ]...)

STOREAS [ SECUREFILE | BASICFILE ] (LOB_storage_parameters)

| (LOB_item)

STOREAS [ SECUREFILE | BASICFILE ]

{ LOB_segname (LOB_storage_parameters)

| LOB_segname

| (LOB_storage_parameters)

}

}

 

Comments

  1. 不错

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号