1. 首页 > Oracle教程 > 正文

Oracle教程FG378-PDB审计

本文档风哥主要介绍Oracle数据库PDB审计相关知识,包括PDB审计的概念、方法、要求、规划、配置、验证等内容,由风哥教程参考Oracle官方文档Multitenant内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 PDB审计的概念

Oracle数据库PDB审计是指在多租户容器数据库(CDB)中对PDB级别的操作进行审计,包括标准审计、精细审计、统一审计等。PDB审计可以实现PDB级别的操作审计,提高安全性。PDB审计包括标准审计、精细审计、统一审计、审计策略、审计报告等组件。更多视频教程www.fgedu.net.cn

PDB审计的特点:

  • 支持PDB级别的操作审计
  • 支持标准审计
  • 支持精细审计
  • 支持统一审计
  • 提高安全性

1.2 PDB审计的方法

Oracle数据库PDB审计的方法:

  • 标准审计:使用标准审计功能
  • 精细审计:使用精细审计功能
  • 统一审计:使用统一审计功能
  • 审计策略:配置审计策略
  • 审计报告:生成审计报告

1.3 PDB审计的要求

Oracle数据库PDB审计的要求:

  • PDB架构:必须在PDB架构中配置审计
  • 系统资源:足够的CPU、内存和磁盘空间
  • 权限:需要PDB的DBA权限
  • 兼容性:Oracle数据库版本必须支持PDB审计
  • 配置:需要配置适当的参数和选项
风哥提示:PDB审计是Oracle数据库多租户架构的核心功能,通过PDB审计,可以实现PDB级别的操作审计,提高安全性。

Part02-生产环境规划与建议

2.1 PDB审计规划

Oracle数据库PDB审计规划要点:

# PDB审计规划步骤
1. 分析业务需求
2. 评估系统资源
3. 设计PDB审计方案
4. 规划PDB审计架构
5. 规划审计策略
6. 规划审计报告
7. 测试和验证

# 适用场景
– 多租户数据库
– 需要PDB级别操作审计的系统
– 需要标准审计的系统
– 需要精细审计的系统
– 需要提高安全性的系统

# 不适用场景
– 单租户数据库
– PDB审计需求简单的系统
– 低管理需求系统

2.2 PDB审计设计

Oracle数据库PDB审计设计建议:

# PDB审计设计原则
– 基于业务需求设计
– 基于资源需求设计
– 最小化审计开销
– 最大化安全性
– 合理配置参数

# PDB审计设计策略
– 合理规划PDB审计架构
– 配置适当的审计策略
– 配置适当的审计选项
– 配置适当的审计报告
– 配置适当的审计监控

# 设计步骤
1. 分析业务需求
2. 评估系统资源
3. 设计PDB审计方案
4. 规划PDB审计架构
5. 测试PDB审计效果
6. 调整配置

2.3 PDB审计最佳实践

Oracle数据库PDB审计最佳实践:

  • 规划PDB审计架构:根据业务需求规划PDB审计架构,最小化审计开销
  • 配置审计策略:为PDB配置合理的审计策略
  • 监控审计记录:监控审计记录使用情况,及时发现和处理问题
  • 定期审计:定期审计审计记录,确保数据安全
  • 设置安全告警:设置安全告警,及时发现安全问题
  • 定期review:定期review审计配置,优化管理策略
生产环境建议:PDB审计规划应基于业务需求和系统资源,规划PDB审计架构,配置审计策略,监控审计记录,定期审计,设置安全告警,定期review,确保数据安全。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 PDB审计实施

3.1.1 配置标准审计

# 查看PDB
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE
5 APP_ROOT READ WRITE
6 APP_PDB1 READ WRITE

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 查看审计参数
SQL> SHOW PARAMETER audit

NAME TYPE VALUE
———————————— ———– ——————————
audit_file_dest string /oracle/app/oracle/admin/orclcdb/adump
audit_sys_operations boolean TRUE
audit_trail string DB

# 配置标准审计
SQL> AUDIT SESSION BY fgfgfgsales_user;

Audit succeeded.

SQL> AUDIT TABLE BY fgfgfgsales_user BY ACCESS;

Audit succeeded.

SQL> AUDIT UPDATE, DELETE ON fgfgfgsales.orders BY fgfgfgsales_user;

Audit succeeded.

# 查看审计选项
SQL> SELECT user_name, audit_option, success, failure FROM dba_audit_trail_options WHERE user_name = ‘SALES_USER’ ORDER BY user_name, audit_option;

USER_NAME AUDIT_OPTION SUCCESS FAILURE
———– —————- ——— ———
SALES_USER SESSION BY ACCESS BY ACCESS
SALES_USER TABLE BY ACCESS BY ACCESS
SALES_USER UPDATE ON ORDERS BY ACCESS BY ACCESS
SALES_USER DELETE ON ORDERS BY ACCESS BY ACCESS

# 验证标准审计配置成功

3.1.2 配置精细审计

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 创建精细审计策略
SQL> BEGIN
DBMS_FGA.ADD_POLICY(
object_schema => ‘SALES’,
object_name => ‘ORDERS’,
policy_name => ‘ORDERS_FGA_POLICY’,
audit_condition => ‘TOTAL_AMOUNT > 10000’,
audit_column => ‘TOTAL_AMOUNT’,
handler_schema => NULL,
handler_module => NULL,
enable => TRUE
);
END;
/

PL/SQL procedure successfully completed.

# 查看精细审计策略
SQL> SELECT object_schema, object_name, policy_name, enabled FROM dba_audit_policies WHERE object_schema = ‘SALES’ AND object_name = ‘ORDERS’;

OBJECT_SCHEMA OBJECT_NAME POLICY_NAME ENABLED
————- ———— —————— ——–
SALES ORDERS ORDERS_FGA_POLICY YES

# 验证精细审计配置成功

3.2 PDB审计配置

3.2.1 配置统一审计

# 切换到CDB
SQL> ALTER SESSION SET CONTAINER = cdb$root;

Session altered.

# 查看统一审计状态
SQL> SELECT value FROM v$option WHERE parameter = ‘Unified Auditing’;

VALUE
——
FALSE

# 配置统一审计
SQL> ALTER SYSTEM SET AUDIT_TRAIL = ‘DB, EXTENDED’ SCOPE = SPFILE;

System altered.

# 重启数据库
SQL> SHUTDOWN IMMEDIATE;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP;

ORACLE instance started.

Total System Global Area 838860800 bytes
Fixed Size 9139560 bytes
Variable Size 536870912 bytes
Database Buffers 285212672 bytes
Redo Buffers 7637656 bytes
Database mounted.
Database opened.

# 查看统一审计状态
SQL> SELECT value FROM v$option WHERE parameter = ‘Unified Auditing’;

VALUE
——
TRUE

# 验证统一审计配置成功

3.2.2 配置审计策略

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 创建审计策略
SQL> CREATE AUDIT POLICY fgfgfgsales_audit_policy
PRIVILEGES CREATE SESSION, CREATE TABLE, DROP TABLE
ACTIONS UPDATE ON fgfgfgsales.orders, DELETE ON fgfgfgsales.orders
WHEN ‘SYS_CONTEXT(”USERENV”, ”SESSION_USER”) = ”SALES_USER”’
EVALUATE EVERY;

Audit policy created.

# 启用审计策略
SQL> AUDIT POLICY fgfgfgsales_audit_policy;

Audit succeeded.

# 查看审计策略
SQL> SELECT policy_name, policy_name, enabled FROM dba_audit_policies WHERE policy_name = ‘SALES_AUDIT_POLICY’;

POLICY_NAME POLICY_NAME ENABLED
—————— —————— ——–
SALES_AUDIT_POLICY SALES_AUDIT_POLICY YES

# 验证审计策略配置成功

3.3 PDB审计验证

3.3.1 验证标准审计

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 测试标准审计
$ sqlplus fgfgfgsales_user/”NewSales123#”@fgfgfgsalespdb

SQL*Plus: Release 19.0.0.0.0 – Production on Fri Mar 31 10:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

SQL> SHOW USER;

USER is “SALES_USER”

SQL> CREATE TABLE test_audit (
id NUMBER,
name VARCHAR2(100)
);

Table created.

SQL> INSERT INTO test_audit (id, name) VALUES (1, ‘Audit Test’);

1 row created.

SQL> COMMIT;

Commit complete.

# 查看审计记录
SQL> SELECT username, action_name, obj_name, timestamp FROM dba_audit_trail WHERE username = ‘SALES_USER’ ORDER BY timestamp DESC FETCH FIRST 10 ROWS ONLY;

USERNAME ACTION_NAME OBJ_NAME TIMESTAMP
————– ————– ———— ——————-
SALES_USER CREATE TABLE TEST_AUDIT 31-MAR-26 10:00:00
SALES_USER LOGON 31-MAR-26 10:00:00

# 验证标准审计成功

3.3.2 验证精细审计

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 测试精细审计
SQL> UPDATE fgfgfgsales.orders SET total_amount = 15000 WHERE order_id = 1;

1 row updated.

SQL> COMMIT;

Commit complete.

# 查看精细审计记录
SQL> SELECT db_user, object_name, policy_name, sql_text FROM dba_fga_audit_trail WHERE db_user = ‘SALES_USER’ ORDER BY timestamp DESC FETCH FIRST 10 ROWS ONLY;

DB_USER OBJECT_NAME POLICY_NAME SQL_TEXT
——– ———— —————— ——————————
SALES_USER ORDERS ORDERS_FGA_POLICY UPDATE fgfgfgsales.orders SET total_amount = 15000 WHERE order_id = 1

# 验证精细审计成功

风哥提示:验证PDB审计是否成功,需要检查审计记录、审计策略、审计配置等,确保数据库运行正常。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 PDB审计案例

在某企业的生产环境中,需要配置PDB审计。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:中等规模,日交易量100万
– 需求:配置PDB审计

# 实施方案
1. 查看PDB
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE
5 APP_ROOT READ WRITE
6 APP_PDB1 READ WRITE

2. 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

3. 配置标准审计
SQL> AUDIT SESSION BY fgfgfgsales_user;

Audit succeeded.

4. 配置精细审计
SQL> BEGIN
DBMS_FGA.ADD_POLICY(
object_schema => ‘SALES’,
object_name => ‘ORDERS’,
policy_name => ‘ORDERS_FGA_POLICY’,
audit_condition => ‘TOTAL_AMOUNT > 10000’,
audit_column => ‘TOTAL_AMOUNT’,
enable => TRUE
);
END;
/

PL/SQL procedure successfully completed.

5. 验证审计配置
SQL> SELECT user_name, audit_option FROM dba_audit_trail_options WHERE user_name = ‘SALES_USER’;

USER_NAME AUDIT_OPTION
———– —————-
SALES_USER SESSION

# 实施效果
– 成功配置PDB审计
– 标准审计正常
– 精细审计正常
– 审计记录正常
– 安全性提高

4.2 PDB审计优化案例

在某金融机构的生产环境中,需要优化PDB审计,提高性能。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:大规模,日交易量1000万
– 问题:PDB审计需要优化

# 优化方案
1. 查看审计配置
SQL> SELECT user_name, audit_option FROM dba_audit_trail_options WHERE user_name = ‘SALES_USER’;

USER_NAME AUDIT_OPTION
———– —————-
SALES_USER SESSION
SALES_USER TABLE
SALES_USER UPDATE ON ORDERS
SALES_USER DELETE ON ORDERS

2. 优化审计配置
SQL> NOAUDIT TABLE BY fgfgfgsales_user;

Noaudit succeeded.

SQL> NOAUDIT UPDATE, DELETE ON fgfgfgsales.orders BY fgfgfgsales_user;

Noaudit succeeded.

3. 配置精细审计
SQL> BEGIN
DBMS_FGA.ADD_POLICY(
object_schema => ‘SALES’,
object_name => ‘ORDERS’,
policy_name => ‘ORDERS_FGA_POLICY’,
audit_condition => ‘TOTAL_AMOUNT > 100000’,
audit_column => ‘TOTAL_AMOUNT’,
enable => TRUE
);
END;
/

PL/SQL procedure successfully completed.

4. 验证优化效果
SQL> SELECT user_name, audit_option FROM dba_audit_trail_options WHERE user_name = ‘SALES_USER’;

USER_NAME AUDIT_OPTION
———– —————-
SALES_USER SESSION

# 优化效果
– 审计配置优化
– 审计开销降低
– 性能提高
– 安全性保持

4.3 PDB审计问题处理

在某电商网站的生产环境中,PDB审计出现问题,需要处理。

# 问题现象
– 审计记录过多
– 审计性能下降
– 审计存储空间不足

# 分析步骤
1. 查看审计记录
SQL> SELECT COUNT(*) FROM dba_audit_trail;

COUNT(*)
———-
1000000

2. 查看审计配置
SQL> SELECT user_name, audit_option FROM dba_audit_trail_options WHERE user_name = ‘SALES_USER’;

USER_NAME AUDIT_OPTION
———– —————-
SALES_USER SESSION
SALES_USER TABLE
SALES_USER UPDATE ON ORDERS
SALES_USER DELETE ON ORDERS
SALES_USER INSERT ON ORDERS
SALES_USER SELECT ON ORDERS

3. 查看审计存储空间
SQL> SELECT segment_name, bytes/1024/1024 size_mb FROM dba_segments WHERE segment_name = ‘AUD$’;

SEGMENT_NAME SIZE_MB
————- ———-
AUD$ 500

# 问题原因
– 审计配置过于详细
– 审计记录过多
– 审计存储空间不足

# 解决方案
1. 清理审计记录
SQL> DELETE FROM sys.audit$ WHERE ntimestamp# < SYSDATE - 30;

1000000 rows deleted.

SQL> COMMIT;

Commit complete.

2. 优化审计配置
SQL> NOAUDIT TABLE BY fgfgfgsales_user;

Noaudit succeeded.

SQL> NOAUDIT INSERT, SELECT ON fgfgfgsales.orders BY fgfgfgsales_user;

Noaudit succeeded.

3. 配置审计清理
SQL> BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
default_cleanup_interval => 12
);
END;
/

PL/SQL procedure successfully completed.

4. 验证解决效果
SQL> SELECT COUNT(*) FROM dba_audit_trail;

COUNT(*)
———-
0

# 解决效果
– 审计记录清理成功
– 审计配置优化
– 审计性能恢复
– 存储空间释放

生产环境建议:配置PDB审计前,需要分析业务需求和系统资源,确保审计配置合理。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 PDB审计经验

Oracle数据库PDB审计经验:

  • 规划PDB审计架构:根据业务需求规划PDB审计架构,最小化审计开销
  • 配置审计策略:为PDB配置合理的审计策略
  • 监控审计记录:监控审计记录使用情况,及时发现和处理问题
  • 定期审计:定期审计审计记录,确保数据安全
  • 设置安全告警:设置安全告警,及时发现安全问题
  • 定期review:定期review审计配置,优化管理策略
风哥提示:PDB审计是Oracle数据库多租户架构的核心功能,通过规划PDB审计架构,配置审计策略,监控审计记录,定期审计,设置安全告警,定期review,可以显著提高安全性和数据库管理效率。from oracle:www.itpux.com

5.2 PDB审计检查清单

# PDB审计检查清单
– [ ] 检查系统资源
– [ ] 检查PDB架构
– [ ] 检查审计需求
– [ ] 检查审计配置
– [ ] 检查审计策略
– [ ] 检查审计记录
– [ ] 规划PDB审计架构
– [ ] 配置标准审计
– [ ] 配置精细审计
– [ ] 验证审计功能

# PDB审计问题处理流程
1. 检查系统资源
2. 检查PDB架构
3. 检查审计需求
4. 规划PDB审计架构
5. 配置标准审计
6. 配置精细审计
7. 验证审计功能
8. 处理审计问题
9. 优化配置
10. 监控审计记录使用情况

5.3 PDB审计工具

Oracle数据库PDB审计常用工具:

  • SQL*Plus:SQL命令行工具,用于执行SQL命令
  • Oracle Enterprise Manager:图形化管理工具,用于监控和管理数据库
  • SQL Developer:SQL开发工具,用于开发和调试SQL
  • Oracle Audit Vault:Oracle审计库,用于审计管理
  • Oracle Data Masking:Oracle数据脱敏,用于数据保护
  • Oracle Security Manager:Oracle安全管理器,用于安全管理
持续改进:PDB审计是一个持续的过程,需要定期review和优化。建议建立PDB审计的规范和流程,不断改进安全性和数据库管理效率。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息