实操Oracle 23C中加密和审计

来源:这里教程网 时间:2026-03-03 21:46:13 作者:

本次实操目标

      加密敏感数据

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

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

    2. 审计关键操作

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

    3. 审计特权用户的操作(如 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;

    关键点说明

        透明数据加密(TDE)

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

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

      2. 统一审计

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

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

      4. 合规性

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

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

  • 相关推荐