1. Oracle数据库等保测评实战指南
作为数据库管理员,每年最头疼的就是等保测评。去年我们系统在等保2.0三级测评中差点翻车,就因为几个Oracle配置细节没处理好。今天我就把踩过的坑和实战经验整理成手册,帮你一次性通过测评。
等保测评不是简单的安全检查,而是从身份鉴别、访问控制、安全审计等十个维度进行的全面体检。以Oracle数据库为例,测评项多达70余个,很多DBA平时根本不会注意的配置项都可能成为扣分点。下面我就从最核心的身份鉴别开始,手把手带你过一遍关键测评项。
1.1 身份鉴别合规配置
1.1.1 账户与口令策略核查
首先用DBA账号登录SQL*Plus,执行以下检查:
sql复制-- 检查账户状态和UID唯一性
SELECT username, account_status, user_id FROM dba_users
WHERE account_status = 'OPEN' ORDER BY username;
这个查询会列出所有活跃账户,重点关注:
- 每个USER_ID必须唯一(等保要求a项)
- 不能存在空口令账户(等保要求a项)
- 默认的SYS、SYSTEM账户必须存在且状态为OPEN
去年我们就被查出有个测试账户USER_ID与生产账户重复,差点被判定为"身份标识不具备唯一性"。建议每月定期运行这个检查脚本。
1.1.2 密码复杂度验证
密码策略是等保的重点检查项,执行以下命令:
sql复制-- 查看密码复杂度函数配置
SELECT limit FROM dba_profiles
WHERE profile='DEFAULT' AND resource_name='PASSWORD_VERIFY_FUNCTION';
-- 查看密码有效期设置
SELECT limit FROM dba_profiles
WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
如果第一个查询返回NULL,说明未启用密码复杂度检查(不符合等保a项)。这时需要手动创建验证函数:
sql复制-- 创建密码复杂度验证函数
@?/rdbms/admin/utlpwdmg.sql
-- 修改DEFAULT策略
ALTER PROFILE DEFAULT LIMIT
PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G
PASSWORD_LIFE_TIME 90
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;
注意:Oracle 11g和12c的验证函数名称不同,11g是VERIFY_FUNCTION_11G,12c是ORA12C_STRONG_VERIFY_FUNCTION
1.1.3 登录失败处理机制
等保要求b项明确需要登录失败锁定功能,检查当前配置:
sql复制-- 查看失败登录尝试次数限制
SELECT limit FROM dba_profiles
WHERE profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';
-- 查看账户锁定时间
SELECT limit FROM dba_profiles
WHERE profile='DEFAULT' AND resource_name='PASSWORD_LOCK_TIME';
如果FAILED_LOGIN_ATTEMPTS显示UNLIMITED,必须立即修正:
sql复制ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1/24; -- 锁定1小时
实测建议:失败次数设为5次,锁定时间1小时比较合理。太严格会导致运维时频繁锁账户,太宽松又不符合等保要求。
