本次实操目标
-
对特定敏感列(如身份证号)使用列级加密。
-
审计关键操作:
记录对加密列的访问行为。
-
审计特权用户的操作(如
DBA角色用户)。
加密敏感数据:
使用透明数据加密(TDE)加密表空间。
步骤 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;
关键点说明
-
列级加密支持更细粒度的保护(需Oracle Advanced Security选件)。
-
统一审计:
支持基于条件(如用户角色、操作类型)的精细化审计。
-
审计日志存储在
UNIFIED_AUDIT_TRAIL视图中,支持集中管理。 -
合规性:
符合GDPR、PCI DSS等法规对数据加密和审计的要求。
-
通过密钥轮换和审计日志归档实现长期合规。
透明数据加密(TDE):
表空间加密自动加密所有数据文件,无需修改应用代码。
