ITPub博客

首页 > 数据库 > Oracle > 实操Oracle 23C中加密和审计

实操Oracle 23C中加密和审计

原创 Oracle 作者:jason_yehua 时间:2025-03-27 14:29:40 0 删除 编辑

本次实操目标

    1. 加密敏感数据:

      • 使用透明数据加密(TDE)加密表空间。

      • 对特定敏感列(如身份证号)使用列级加密。

    2. 审计关键操作:

      • 记录对加密列的访问行为。

      • 审计特权用户的操作(如 DBA角色用户)。

步骤 1:配置透明数据加密(TDE)

1.1 创建加密钱包(密钥库)

-- 创建钱包目录
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "Wallet_Password123";
-- 默认钱包路径:`$ORACLE_BASE/admin/$ORACLE_SID/wallet`

1.2 创建加密表空间

-- 创建加密表空间(使用AES256算法)
CREATE TABLESPACE secure_ts
DATAFILE 'secure_ts.dbf' SIZE 100M
ENCRYPTION USING 'AES256'
DEFAULT STORAGE (ENCRYPT);

1.3 在加密表空间中创建表

-- 创建包含敏感数据的表
CREATE TABLE hr.employees (
    employee_id NUMBER PRIMARY KEY,
    name VARCHAR2(50),
    id_card VARCHAR2(20) ENCRYPT USING 'AES256', -- 列级加密
    salary NUMBER ENCRYPT USING 'AES256'
)
TABLESPACE secure_ts;
-- 插入测试数据
INSERT INTO hr.employees VALUES (1, '王五', '310101199001011234', 15000);
COMMIT;

步骤 2:配置统一审计策略

2.1 启用统一审计

-- 检查统一审计是否启用
SELECT parameter, value FROM v$option WHERE parameter = 'Unified Auditing';
-- 若未启用,需重启数据库并执行(需SYSDBA权限):
ALTER SYSTEM SET audit_trail=DB, EXTENDED SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;

2.2 创建审计策略

-- 审计对加密列的SELECT操作
CREATE AUDIT POLICY audit_encrypted_cols
ACTIONS SELECT ON hr.employees(id_card, salary);
-- 审计DBA角色用户的所有操作
CREATE AUDIT POLICY audit_dba_actions
ACTIONS ALL; -- 所有操作
CONDITION 'SYS_CONTEXT(''USERENV'', ''IS_DBA'') = ''TRUE''';
-- 启用审计策略
AUDIT POLICY audit_encrypted_cols;
AUDIT POLICY audit_dba_actions;

步骤 3:创建用户并授权

3.1 创建普通用户和特权用户

-- 创建普通用户
CREATE USER user2 IDENTIFIED BY user2_password;
GRANT SELECT, INSERT ON hr.employees TO user2;
-- 创建DBA用户
CREATE USER dba_admin IDENTIFIED BY dba_password;
GRANT DBA TO dba_admin;

步骤 4:验证加密与审计效果

4.1 加密验证

-- 普通用户查询加密列(自动解密)
CONNECT user2/user2_password
SELECT * FROM hr.employees;
-- 结果:正常显示解密后的数据。
-- 直接查看数据文件(验证加密)
-- 使用工具(如strings)查看数据文件`secure_ts.dbf`,确认`id_card`和`salary`字段为加密乱码。

4.2 审计验证

-- 查询审计日志(需SYSDBA权限)
CONNECT / AS SYSDBA
SELECT event_timestamp, dbusername, action_name, sql_text
FROM unified_audit_trail
WHERE audit_type = 'Standard'
ORDER BY event_timestamp DESC;

示例审计记录:

  •       用户 user2查询 hr.employees表的加密列。

  •       用户 dba_admin执行了 GRANT或 ALTER SYSTEM等特权操作。

步骤 5:管理密钥与审计策略(可选)

5.1 密钥轮换

-- 轮换主加密密钥(需SYSDBA权限)
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "Wallet_Password123" WITH BACKUP;

5.2 修改/禁用审计策略

-- 禁用审计策略
NOAUDIT POLICY audit_encrypted_cols;
-- 删除审计策略
DROP AUDIT POLICY audit_encrypted_cols;


关键点说明

    1. 透明数据加密(TDE):

      • 表空间加密自动加密所有数据文件,无需修改应用代码。

      • 列级加密支持更细粒度的保护(需Oracle Advanced Security选件)。

    2. 统一审计:

      • 支持基于条件(如用户角色、操作类型)的精细化审计。

      • 审计日志存储在 UNIFIED_AUDIT_TRAIL视图中,支持集中管理。

    3. 合规性:

      • 符合GDPR、PCI DSS等法规对数据加密和审计的要求。

      • 通过密钥轮换和审计日志归档实现长期合规。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31547506/viewspace-3079182/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-05-22

  • 博文量
    122
  • 访问量
    99648