Oracle LiveLabs实验:DB Security - Unified Auditing

Posted dingdingfish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle LiveLabs实验:DB Security - Unified Auditing相关的知识,希望对你有一定的参考价值。

概述

此实验申请地址在这里,时间为2小时。

实验帮助在这里

本实验使用的数据库为19.13。

Introduction

本研讨会介绍 Oracle Unified Auditing 的功能。 它使用户有机会学习如何配置此功能以审计数据库活动。

混合模式审计是新安装的数据库中的默认审计。 混合模式审计支持传统审计工具(即来自早于 12c 版本的审计工具)和新审计工具(统一审计)。
混合模式旨在引入统一审计,以便您了解它的工作原理以及它的细微差别和好处。 混合模式使您能够迁移现有应用程序和脚本以使用统一审计。 一旦您决定使用纯统一审计,您可以重新链接 Oracle 二进制文件并打开统一审计选项,从而将其作为 Oracle 数据库运行的唯一审计工具。 如果您决定恢复到混合模式,您也可以。
在这个环境下,我们已经把这个Oracle数据库迁移到了纯统一审计模式。

目标

  • 在您的数据库上启用/禁用统一审计
  • 查看不同的审计用例

Task 1: Display the current audit settings

以下显示的是PDB1中的信息:

sudo su - oracle
cd $DBSEC_LABS/unified-auditing
./ua_current_audit_settings.sh

这个脚本的执行结果如下,实际包括4部分:

-- 这意味着我们的数据库处于“纯”统一审计模式,您不再使用传统的审计能力
select parameter, value from v$option where PARAMETER = 'Unified Auditing';
PARAMETER                                          VALUE
-------------------------------------------------- ----------------------------------------
Unified Auditing                                   TRUE

-- 第二个查询显示存在多少统一审计策略以及与每个策略关联的审计相关属性的数量
select policy_name, count(*) audited_attributes from audit_unified_policies group by policy_name order by policy_name;

POLICY_NAME                              AUDITED_ATTRIBUTES
---------------------------------------- ------------------
APP_USER_NOT_APP_SERVER                                   1
EMPSEARCH_SELECT_USAGE_BY_PETE                            1
ORA_ACCOUNT_MGMT                                          9
ORA_ADS$_ADMIN_USER_ACTIVITY                              1
ORA_ADS$_CRITICAL_DB_ACTIVITY                            50
ORA_ADS$_DB_SCHEMA_CHANGES                               84
ORA_ADS$_LOGON_EVENTS                                     2
ORA_ADS$_LOGON_FAILURES                                   2
ORA_ADS$_SYS_TOP_ACTIVITY                                 1
ORA_AV$_ADMIN_USER_ACTIVITY                               1
ORA_AV$_CRITICAL_DB_ACTIVITY                             49
ORA_AV$_DB_SCHEMA_CHANGES                                84
ORA_AV$_SYS_TOP_ACTIVITY                                  1
ORA_CIS_RECOMMENDATIONS                                  35
ORA_DATABASE_PARAMETER                                    3
ORA_DV_AUDPOL                                          2180
ORA_DV_AUDPOL2                                           19
ORA_LOGON_FAILURES                                        1
ORA_RAS_POLICY_MGMT                                      35
ORA_RAS_SESSION_MGMT                                     14
ORA_SECURECONFIG                                         49
PRIVILEGED_ACTIONS                                        1

22 rows selected.

-- 显示启用了哪些统一审计策略,也就是说上一个查询中存在该策略并不意味着它已启用
-- 使用统一审计策略分为两步:创建和启用审计策略
-- 注意:其中有一些重复的,所以行数才会比上一个多
-- 如果查distinct,输出和上一个是一样的。这表示创建的均启用了

select POLICY_NAME as ENABLED_POLICIES from AUDIT_UNIFIED_ENABLED_POLICIES order by 1;

ENABLED_POLICIES
----------------------------------------
APP_USER_NOT_APP_SERVER
EMPSEARCH_SELECT_USAGE_BY_PETE
ORA_ACCOUNT_MGMT
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_CRITICAL_DB_ACTIVITY
ORA_ADS$_DB_SCHEMA_CHANGES
ORA_ADS$_LOGON_EVENTS
ORA_ADS$_LOGON_FAILURES
ORA_ADS$_SYS_TOP_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_CRITICAL_DB_ACTIVITY
ORA_AV$_DB_SCHEMA_CHANGES
ORA_AV$_SYS_TOP_ACTIVITY
ORA_CIS_RECOMMENDATIONS
ORA_DATABASE_PARAMETER
ORA_DV_AUDPOL
ORA_DV_AUDPOL2
ORA_LOGON_FAILURES
ORA_RAS_POLICY_MGMT
ORA_RAS_SESSION_MGMT
ORA_SECURECONFIG
PRIVILEGED_ACTIONS

40 rows selected.


-- 第 4 个查询显示基于上下文的审计
-- 我们有一个名为 TICKETINFO 的策略,它捕获名为 TICKET_ID 的属性
-- 此信息将在 UNIFIED_AUDIT_TRAIL 视图的 APPLICATION_CONTEXTS 列中查看
select NAMESPACE, ATTRIBUTE, USER_NAME from AUDIT_UNIFIED_CONTEXTS order by 1,2,3;

NAMESPACE                           ATTRIBUTE                           USER_NAME
----------------------------------- ----------------------------------- -------------------------
TICKETINFO                          TICKET_ID                           ALL USERS

显示谁具有 AUDIT_ADMIN 和 AUDIT_VIEWER 角色:

$ ./ua_who_audit_roles.sh

实际执行和输出如下:

select b.name con_name, a.grantee, a.granted_role, a.admin_option, a.delegate_option, a.default_role, a.common, a.inherited
  from cdb_role_privs a, v\\$containers b where a.con_id = b.con_id
   and a.granted_role in ('AUDIT_ADMIN','AUDIT_VIEWER')
 order by 1,2,3;

CON_NAME     GRANTEE                   GRANTED_ROLE        ADMIN_OPTION DELEGATE_OPTION  DEFAULT_ROLE   COMMON    INHERITED
------------ ------------------------- ------------------- ------------ ---------------- -------------- --------- ---------
CDB$ROOT     C##ZEUS                   AUDIT_ADMIN         NO           NO               YES            YES       NO
CDB$ROOT     C##ZEUS                   AUDIT_VIEWER        NO           NO               YES            YES       NO
CDB$ROOT     SYS                       AUDIT_ADMIN         YES          NO               YES            YES       NO
CDB$ROOT     SYS                       AUDIT_VIEWER        YES          NO               YES            YES       NO
PDB1         AVAUDITUSER               AUDIT_ADMIN         NO           NO               YES            NO        NO
PDB1         AVAUDITUSER               AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         C##ZEUS                   AUDIT_ADMIN         NO           NO               YES            YES       YES
PDB1         C##ZEUS                   AUDIT_VIEWER        NO           NO               YES            YES       YES
PDB1         DBSAT_ADMIN               AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         ORA_DSCS_ASSESSMENT       AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         ORA_DSCS_AUDIT_COLLECTION AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         ORA_DSCS_AUDIT_SETTING    AUDIT_ADMIN         NO           NO               YES            NO        NO
PDB1         SYS                       AUDIT_ADMIN         YES          NO               YES            YES       YES
PDB1         SYS                       AUDIT_VIEWER        YES          NO               YES            YES       YES
PDB2         AVAUDITUSER               AUDIT_ADMIN         NO           NO               YES            NO        NO
PDB2         AVAUDITUSER               AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB2         C##ZEUS                   AUDIT_ADMIN         NO           NO               YES            YES       YES
PDB2         C##ZEUS                   AUDIT_VIEWER        NO           NO               YES            YES       YES
PDB2         SYS                       AUDIT_ADMIN         YES          NO               YES            YES       YES
PDB2         SYS                       AUDIT_VIEWER        YES          NO               YES            YES       YES

20 rows selected.

显示您连接到的数据库的现有审计记录(PDB1):

$ ./ua_query_existing_audit_records.sh

-- View Audit Data for pdb1

-- 审计时间段
-- select min(event_timestamp) oldest_audit_record, max(event_timestamp) newest_audit_record from unified_audit_trail;
OLDEST_AUDIT_RECORD                      NEWEST_AUDIT_RECORD
---------------------------------------- ----------------------------------------
08-DEC-21 04.46.53.279529 PM             02-APR-22 06.14.35.799402 AM

-- 审计记录数
select count(*) total_unified_audit_records from unified_audit_trail;
TOTAL_UNIFIED_AUDIT_RECORDS
---------------------------
                        142

-- 审计action分类
select action_name, count(*) from unified_audit_trail group by action_name order by action_name;

ACTION_NAME                                COUNT(*)
---------------------------------------- ----------
ALTER SESSION                                     1
COMMIT                                            8
EXECUTE                                           1
LOGOFF                                            7
LOGOFF BY CLEANUP                                12
LOGON                                             9
SELECT                                          115

7 rows selected.

最后,展示了 DBMS_AUDIT_MGMT 包的一些细节:

./ua_dbms_audit_mgmt_settings.sh

实际执行和输出如下:

-- 统一审计表是分区表,按季度分区的,目的是能加速查询和写入
select partition_name, tablespace_name, high_value from dba_tab_partitions where table_name = 'AUD\\$UNIFIED';
PARTITION_NAME       TABLESPACE_NAME      HIGH_VALUE
-------------------- -------------------- ------------------------------------------------------------
SYS_P1908            SYSAUX               TIMESTAMP' 2022-02-01 00:00:00'
SYS_P1928            SYSAUX               TIMESTAMP' 2022-05-01 00:00:00'

-- 函数 DBMS_AUDIT_MGMT.GET_AUDIT_COMMIT_DELAY 以秒数形式返回审计提交延迟时间
-- 审计提交延迟时间是将审计记录提交到数据库审计跟踪所需的最长时间
-- 如果提交审计记录的时间比审计提交延迟时间定义的时间长,则审计记录的副本将写入操作系统 (OS) 审计跟踪
select DBMS_AUDIT_MGMT.GET_AUDIT_COMMIT_DELAY from dual;
GET_AUDIT_COMMIT_DELAY
----------------------
                    15

-- 第3个查询没有结果,因为 SET_LAST_ARCHIVE_TIMESTAMP 过程仅在只读数据库上可用。

-- 为操作系统审核文件配置的最长期限为:5

Task 2: Audit Non App Usage

在本实验中,您将审核谁在应用程序之外使用 EMPLOYEESEARCH_PROD 对象。

确定我们信任的数据库连接。 我们将从 Glassfish 应用程序生成一些活动并查看与会话相关的信息

执行以下代码,在提示时不要回车:

cd $DBSEC_LABS/unified-auditing
./ua_query_employeesearch_usage.sh

上面这个脚本的目的就是捕获v$session中的输出:

SELECT osuser, machine, module FROM v$session WHERE username = 'EMPLOYEESEARCH_PROD';

在浏览器中通过应用访问数据库:

  • 网址: http://<YOUR_DBSEC-LAB_VM_PUBLIC_IP>:8080/hr_prod_pdb1
  • http://129.154.203.54:8080/hr_prod_pdb1
  • 用户名和口令:hradmin/Oracle123
  • 执行操作(更改搜索条件,执行2-3次):Search Employees,Search

回到上一终端,按回车,输出如下:

CON_NAME
------------------------------
PDB1
USER is "SYS"

. List the session for the user "EMPLOYEESEARCH_PROD"

OSUSER             MACHINE                                                 MODULE
------------------ ------------------------------------------------------- -----------------------------------
oracle             dbsec-lab                                               JDBC Thin Client
oracle             dbsec-lab                                               JDBC Thin Client
oracle             dbsec-lab                                               JDBC Thin Client

3 rows selected.

使用SQL Plus产生一些负载,即查询employeesearch_prod.demo_hr_employees表:

./ua_query_employeesearch.sh

创建统一审计策略:

./ua_create_audit_policy.sh

统一审计策略将捕获与您的机器相关的详细信息以创建 WHEN 子句。

在这里,我们基于 SYS_CONTEXT 变量作为标准创建了审计策略 AUDIT_EMPLOYEESEARCH_USAGE:

  • SESSION_USER = “EMPLOYEESEARCH_PROD”
  • AND OS_USER != “oracle”
  • OR MODULE != “JDBC Thin Client”
  • 或 HOST!=“dbsec-lab.dbsecvcn.oraclevcn.com”

此审核策略将审核所有尝试从不安全路径(例如,官方 Web 应用程序以外的路径)访问 EMPLOYEESEARCH_PROD.DEMO_HR_USERS 和 EMPLOYEESEARCH_PROD.DEMO_HR_EMPLOYEES 表的会话。

从以上脚本我们学到:

  • NOAUDIT POLICY 禁用审计策略
  • DROP AUDIT POLICY删除审计策略
  • CREATE AUDIT POLICY创建审计策略
  • 表AUDIT_UNIFIED_POLICIES存储审计策略
  • 策略的名字为:AUDIT_EMPLOYEESEARCH_USAGE

实际的审计策略规则如下:

SYS_CONTEXT('USERENV','SESSION_USER') = 'EMPLOYEESEARCH_PROD'
AND (SYS_CONTEXT('USERENV','OS_USER') != 'oracle'
OR SYS_CONTEXT('USERENV','MODULE') != 'JDBC Thin Client'
OR SYS_CONTEXT('USERENV','HOST') != 'dbsec-lab.dbsecvcn.oraclevcn.com')

启用统一审计策略,使用命令AUDIT POLICY。可查询表AUDIT_UNIFIED_ENABLED_POLICIES中确认:

./ua_enable_audit_policy.sh

运行其他查询以生成流量并查看是否生成了审计记录。首先用浏览器访问,方法同前。

./ua_query_employeesearch_usage.sh
./ua_query_audit_records.sh

由于这是正规的路径,因此此时没有审计记录:

. List the Unified Audit of the Audit policy "AUDIT_EMPLOYEESEARCH_USAGE"

no rows selected

然后用SQL Plus执行:

./ua_query_employeesearch.sh
./ua_query_audit_records.sh

这一回有输出了:

. List the Unified Audit of the Audit policy "AUDIT_EMPLOYEESEARCH_USAGE"

EVENT_TIMESTAMP                 OS_USERNAME  USERHOST             DBUSERNAME           CLIENT_PROGRAM_NAME               ACTION_NAME
------------------------------- ------------ -------------------- -------------------- --------------------------------- ------------
RETURN_CODE OBJECT_SCHEMA        OBJECT_NAME          SQL_TEXT
----------- -------------------- -------------------- --------------------------------------------------
05-APR-22 04.07.25.774033 AM    oracle       dbsec-lab            EMPLOYEESEARCH_PROD  sqlplus@dbsec-lab (TNS V1-V3)     SELECT
          0 EMPLOYEESEARCH_PROD  DEMO_HR_EMPLOYEES    select userid, firstname, lastname, emptype,
                                                      position, ssn, sin, nino
                                                      from emp

最后,删除统一审计策略:

./ua_delete_audit_policy.sh

其过程为:

  • NOAUDIT POLICY 禁用审计策略
  • DROP AUDIT POLICY删除审计策略
  • dbms_audit_mgmt.clean_audit_trail删除审计条目

Task 3: Audit Database Role Usage

审计角色时,Oracle 数据库会审计直接授予该角色的所有系统权限。 您可以审计任何角色,包括用户定义的角色。 如果您使用 ROLES 审计选项为角色创建通用统一审计策略,那么您必须仅在角色列表中指定通用角色(common role)。

启用此类策略后,Oracle 数据库会审计通常直接授予公共角色的所有系统权限。 本地授予普通角色的系统权限不会被审计。 要查找角色是否被普遍授予(commonly granted),请查询 DBA_ROLES 数据字典视图。 要查看授予角色的权限是否被普遍授予,请查询 ROLE_SYS_PRIVS 视图。

首先,创建实例角色MGR_ROLE并赋予权限(后续实际并未用到):

./ua_create_role.sh

创建审计角色MGR_ROLE的策略AUD_ROLE_POL:

./ua_create_role_audit_policy.sh

实际就一个语句:

create audit policy aud_role_pol ROLES mgr_role;

创建用户dba_junior并赋予DBA角色:

./ua_create_junior_dba.sh

创建审计角色DBA的策略AUD_DBA_POL:

./ua_create_dba_audit_policy.sh

实际就一个语句:

create audit policy aud_dba_pol ROLES dba;

启用 MGR_ROLE 和 DBA 角色使用的审计策略(audit policy …):

./ua_enable_audit_policies.sh

查看启用的审计策略(查看AUDIT_UNIFIED_POLICIES和AUDIT_UNIFIED_ENABLED_POLICIES表):

./ua_view_audit_policies.sh

以用户SYS和dba_junior执行将显示在统一审计跟踪中的 SQL 语句:

./ua_generate_audits.sh

操作包括增删表空间,修改系统参数。最后需要Flush Unified Audit Trail:

exec SYS.DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

显示和审计策略相关的审计条目(即查询表unified_audit_policies):

./ua_review_generated_audits.sh

输出为:

. View Unified Audit data

ACTION_NAME          DBUSERNAME ACTION_NAME          OBJECT_SCH OBJECT_NAME          SQL_TEXT
-------------------- ---------- -------------------- ---------- -------------------- --------------------------------------------------------------------------------
ALTER SYSTEM         DBA_JUNIOR ALTER SYSTEM                                         alter system set job_queue_processes=100
ALTER SYSTEM         DBA_JUNIOR ALTER SYSTEM                                         alter system set job_queue_processes=200
LOGON                DBA_JUNIOR LOGON
DROP TABLESPACE      SYS        DROP TABLESPACE                 TEST                 drop tablespace test including contents and datafiles
CREATE TABLESPACE    SYS        CREATE TABLESPACE               TEST                 create tablespace test datafile '/u01/oradata/cdb1/pdb1/test01.dbf' size 10m

删除审计策略:

./ua_delete_role_audit_policy.sh

实际执行的SQL和输出如下:

. What is auditable for Data Pump
SELECT name FROM auditable_system_actions WHERE component = 'Datapump';

NAME
----------------------------------------------------------------
EXPORT
IMPORT
ALL

. List the current Audit policies
select * from AUDIT_UNIFIED_ENABLED_POLICIES where POLICY_NAME like '%DP%';

POLICY_NAME          ENABLED_OPTION  ENTITY_NAME          ENTITY_ SUC FAI
-------------------- --------------- -------------------- ------- --- ---
ORA_DV_AUDPOL2       BY USER         ALL USERS            USER    YES YES
ORA_DV_AUDPOL        BY USER         ALL USERS            USER    YES YES


. Create the Audit Policy "DP_POL"
create audit policy DP_POL actions component=datapump all;
Audit policy created.


. Enable the Audit policy "DP_POL"
audit policy DP_POL;
Audit succeeded.


. List the current Audit policies
select * from AUDIT_UNIFIED_ENABLED_POLICIES  where POLICY_NAME like '%DP%';

POLICY_NAME          ENABLED_OPTION  ENTITY_NAME          ENTITY_ SUC FAI
-------------------- --------------- -------------------- ------- --- ---
ORA_DV_AUDPOL2       BY USER         ALL USERS            USER    YES YES
ORA_DV_AUDPOL        BY USER         ALL USERS            USER    YES YES
DP_POL               BY USER         ALL USERS            USER    YES YES

Task 4: Audit Data Pump Usage

在本实验中,您将配置统一审计跟踪并查看 Oracle 数据泵导出的审计。 这是传统审计中没有的统一审计的一个功能。

创建Data Pump审计策略:

./ua_audit_datapump_export.sh

执行Data Pump操作:

./ua_datapump_export_hr_table.sh

实际为两个expdp操作,使用system用户的成功,使用dbsat_admin的失败,因为没有权限。

查看审计记录:

./ua_review_datapump_audit_events.sh

输出为:

...
. View the Unified Audit generated by Data Pump

AUDIT_TYPE           DBUSERNAME           CLIENT_PROGRAM_NAME      EVENT_TIMESTAMP                    ACTION_NAME     RETURN_CODE
-------------------- -------------------- ------------------------ ---------------------------------- --------------- -----------
Datapump             SYSTEM               oracle@dbsec-lab (DW00)  05-APR-22 05.47.34.372117 AM       EXPORT                    0

删除审计策略:

./ua_delete_dp_audit_policy.sh

Appendix: About the Product

在统一审计中,统一审计跟踪从各种来源捕获的审计信息。

统一审计使您能够从以下来源捕获审计记录:

  • 来自统一审计策略和审计设置的审计记录(包括 SYS 审计记录)
  • DBMS_FGA PL/SQL 包中的细粒度审计记录
  • Oracle Database Real Application Security 审计记录
  • Oracle Recovery Manager 审计记录
  • Oracle Database Vault 审计记录
  • Oracle 标签安全审计记录
  • Oracle 数据挖掘记录
  • Oracle 数据泵
  • Oracle SQL*Loader 直接加载

统一审计跟踪驻留在 SYSAUX 表空间的 AUDSYS 模式中的只读表中,使该信息在 UNIFIED_AUDIT_TRAIL 数据字典视图中以统一格式提供,并且在单实例和 RAC环境中都可用。除了用户 SYS,被授予 AUDIT_ADMIN 和 AUDIT_VIEWER 角色的用户可以查询这些视图。 如果您的用户只需要查询视图而不需要创建审计策略,则授予他们 AUDIT_VIEWER 角色。

当数据库可写时,审计记录被写入统一审计线索。 如果数据库不可写,则将审计记录写入 O R A C L E B A S E / a u d i t / ORACLE_BASE/audit/ ORACLEBASE/audit/ORACLE_SID 目录中的新格式操作系统文件。

统一审计跟踪的好处
启用统一审计后,它不再依赖于以前版本中使用的初始化参数。
Oracle 数据库安装的所有审计组件的审计记录(包括来自 SYS 审计跟踪的记录)都以一种格式放置在一个位置,而您不必在不同的地方查找不同格式的审计跟踪。

通过将其置于单一审计跟踪中,审计跟踪的管理和安全性也得到了改进。
整体审计性能大大提高。 默认情况下,审计记录会自动写入 AUDSYS 模式中的内部关系表。
您可以创建命名审核策略,使您能够审核本节开头列出的受支持组件以及 SYS 管理用户。 此外,您可以在您的政策中建立条件和排除。
如果您使用的是 Oracle Audit Vault and Database Firewall 环境,那么统一的审计跟踪极大地方便了审计数据的收集,因为所有这些数据都来自一个位置。

Want to Learn More?

Acknowledgements

本实验的作者为Hakim Loumi,数据库安全的PM。贡献者为Angeline Dhanarani, Rene Fontcha。

以上是关于Oracle LiveLabs实验:DB Security - Unified Auditing的主要内容,如果未能解决你的问题,请参考以下文章

Oracle LiveLabs实验:DB Security - ASO (Data Redaction)

Oracle LiveLabs实验:DB Security - Audit Vault and DB Firewall

Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)

Oracle LiveLabs实验:DB Security - Database Vault

Oracle LiveLabs实验:DB Security - Database Vault

Oracle LiveLabs实验:DB Security - Database Assessment Tool