01、Oracle数据库测评

Oracle 数据库三级等保现场测评:按 8.1.4 安全计算环境控制点给出 profile 口令策略、统一审计、NNE/TCPS 传输加密、TDE 存储加密、RMAN 备份与 RAC/Data Guard 冗余的核查命令、判定标准、常见不符合项与证据留存要求。

定位:Oracle 数据库作为测评对象的现场核查方法与判定标准,按控制点给出实测判据。 适用版本:Oracle 11g~19c(示例环境 Windows 10 + Oracle 11.2.0.1;11g 已停止官方支持,生产建议升级 19c,命令通用)。 配套测评:02、Oracle 测评命令单;配套加固:本板块暂无 Oracle 加固专篇,语法兼容的国产库可参照 15、KingbaseES 人大金仓数据库加固;高风险口径:22、高风险判定指引与加固对照表

使用说明:

  • 本文所有命令均为只读取证命令,不修改配置、不重启服务、不执行清除类操作;确需变更由被测单位运维方在授权下实施。
  • 命令回显本身即证据,须连同命令行一起截图;示例中的地址、账户、路径均为演示值,现场须替换为真实取证结果,并对个人信息与内网管理地址脱敏后再入报告。
  • 命令不存在或输出与示例差异较大时,先确认产品版本与部署形态(单机/集群/容器/云托管),再换用等效命令或转入配置文件、管理控制台取证,不得据命令缺失直接判不符合
  • 文中「默认」「一般」等表述均为初判倾向,须经上机核查 + 访谈 + 配置/制度核对三方印证后定论,并在报告中写明取证来源。

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点,并写明判定依据。
  • 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则:控制能力由上层应用、统一认证平台、前置代理、堡垒机、宿主操作系统或云托管平台承载时,应注明测评单元边界后判定不适用或转由上位组件核查,不得机械按缺失判不符合。
  • 产品版本确实不提供该能力(如社区版无审计插件)时,须核查替代措施并按替代措施的实际效果定档,不得直接判不适用。

一、Oracle 介绍

Oracle Database,又名 Oracle RDBMS,或简称 Oracle,是甲骨文公司的一款关系数据库管理系统。

二、基础信息

对应控制点:非独立控制点(测评对象与资产确认);部署形态、版本与冗余情况佐证 8.1.2.1 网络架构 e) 关键设备硬件冗余

判定要点:本节为测评对象确认,不单独出结论;版本、监听端口、运行账户、数据目录、部署形态(单机/集群/容器)未取全时,后续控制点的判定口径无法确定,应先补齐再进入控制点核查。

取证要求:版本回显截图、监听端口与进程截图、运行账户截图、配置文件与数据目录路径截图、集群拓扑或部署说明。

SELECT banner FROM sys.v_$version;                       -- 版本与补丁级别(对照漏洞通告)
SELECT username, account_status, profile FROM dba_users;  -- 账户、状态与所属 profile
SELECT profile, resource_name, limit FROM dba_profiles
  WHERE resource_type IN ('PASSWORD','KERNEL')
  ORDER BY profile, resource_name;                        -- 全部口令与资源限制
  • 备注:Oracle 的口令策略与资源限制均以 profile 为单位,核查时须先看用户属于哪个 profile(dba_users.profile),再查该 profile 的限制——只查 DEFAULT 而用户实际用了自定义 profile 是高频漏项
  • 预期证据:版本截图、dba_usersdba_profiles 输出。

Oracle 版本信息核查界面对照

三、测评实施

身份鉴别

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)

判定要点:账户唯一且非默认口令、鉴别信息复杂度与有效期均已配置、远程管理走加密通道、失败处理与会话超时已启用 → 符合;仅满足其中一部分(如有口令但无复杂度、无失败锁定、无空闲超时)→ 部分符合;管理入口无鉴别、存在空口令或沿用出厂口令 → 不符合(高风险)。

取证要求:账户清单截图、口令策略参数截图、加密通道配置截图、失败锁定与会话超时参数截图、弱口令实测记录;由统一认证平台承载时补平台侧配置与对接截图。

a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换

  • 核查要点:
    1. 登录验证:确认是否必须提供用户名与口令才能进入数据库。
    2. 查口令策略(先确认用户所属 profile,再查对应 profile 的限制):
SELECT profile, resource_name, limit FROM dba_profiles
  WHERE resource_type = 'PASSWORD'
  ORDER BY profile, resource_name;
-- 重点关注:PASSWORD_LIFE_TIME(有效期)、PASSWORD_GRACE_TIME(宽限期)、
--          PASSWORD_REUSE_TIME / PASSWORD_REUSE_MAX(重用限制)、
--          PASSWORD_VERIFY_FUNCTION(复杂度校验函数)
  1. 查 DEFAULT profile 的常见默认值(以实际查询为准):PASSWORD_LIFE_TIME = 180 天、PASSWORD_GRACE_TIME = 7 天、PASSWORD_REUSE_TIME = UNLIMITED、PASSWORD_REUSE_MAX = UNLIMITED、PASSWORD_VERIFY_FUNCTION = NULL。
  2. 复杂度:PASSWORD_VERIFY_FUNCTIONNULL 表示不做任何复杂度校验;该函数的默认名称(如 VERIFY_FUNCTION_11G)需运行 utlpwdmg.sql 脚本才会写入 profile。
  3. 唯一性:SELECT username, account_status FROM dba_users; 用户名唯一;并核实是否可对应到自然人(避免共用账户)。
  4. 定期更换:PASSWORD_LIFE_TIME 与账户的口令最后修改时间;查 SELECT username, account_status FROM dba_users WHERE account_status NOT LIKE '%LOCKED%'; 核对在用账户。
  5. 实测:尝试创建弱口令用户,验证复杂度函数是否真正生效。
  • 判定标准:
    • 符合:全部账户需口令认证、无空口令、账号可唯一对应自然人、PASSWORD_VERIFY_FUNCTION 已设置且实测拒绝弱口令、PASSWORD_LIFE_TIME 已设置且有更换记录。
    • 部分符合:已设 PASSWORD_VERIFY_FUNCTION 但档位偏低(如仅校验长度);或 PASSWORD_LIFE_TIME 已设置但无更换记录;或仅 DEFAULT profile 配置了策略而实际业务用户使用了未配置的自定义 profile。
    • 不符合:PASSWORD_VERIFY_FUNCTION 为 NULL 且实测可建弱口令;存在空口令或共享账户;PASSWORD_LIFE_TIME 为 UNLIMITED。
  • 常见不符合项:
    • 只查 DEFAULT profile——用户实际归属自定义 profile 时策略完全不同;
    • PASSWORD_LIFE_TIME 的 180 天默认值当作「已配置」——那是出厂默认值,需确认是否满足被测单位的口令更换制度;
    • 运行 utlpwdmg.sql 启用复杂度函数时会修改 DEFAULT profile 并可能使现有账户进入过期状态,整改需评估对业务的影响。
  • 证据留存:登录验证截图、dba_profiles 输出(含 profile 列)、dba_users 清单、弱口令实测结果、口令更换记录、访谈纪要。

Oracle 登录界面对照

Oracle 口令策略查询结果界面对照

Oracle 用户清单界面对照

Oracle 未锁定账户清单界面对照

b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施

  • 核查要点:
    1. 失败次数与锁定时长:
SELECT limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';  -- 默认 10
SELECT limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LOCK_TIME';      -- 默认 1
 **注意 `PASSWORD_LOCK_TIME` 的单位是「天」**(默认 1 天),与达梦的「分钟」、GaussDB 的按参数而定不同,现场换算时须留意。
  1. 会话空闲超时:
SELECT limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='IDLE_TIME';   -- UNLIMITED 即无空闲超时
  1. sqlnet.ora 中可配置 SQLNET.EXPIRE_TIME(死连接检测 DCD,单位为分钟)——它检测的是已断开的连接,不能替代 IDLE_TIME 的空闲会话限制。
  2. 实测:连续输错口令验证是否触发锁定;登录后静置验证是否自动断开。
  • 判定标准:
    • 符合:FAILED_LOGIN_ATTEMPTSPASSWORD_LOCK_TIME 均已配置(非 UNLIMITED)且实测触发锁定,IDLE_TIME 已配置且实测空闲会话被断开。
    • 部分符合:仅有失败锁定而无空闲超时(IDLE_TIME 为 UNLIMITED 是默认值,此档最常见);或仅配置了 SQLNET.EXPIRE_TIMEIDLE_TIME 未配置。
    • 不符合:失败锁定与空闲超时均为 UNLIMITED。
  • 常见不符合项:把 SQLNET.EXPIRE_TIME 当作会话空闲超时——它只清理死连接,对已建立且空闲的会话不起作用;PASSWORD_LOCK_TIME 单位误按分钟换算。
  • 证据留存:dba_profiles 中三项输出、sqlnet.ora 配置截图、锁定与超时实测结果。

Oracle 登录失败提示界面对照

Oracle FAILED_LOGIN_ATTEMPTS 查询结果界面对照

Oracle PASSWORD_LOCK_TIME 查询结果界面对照

Oracle IDLE_TIME 查询结果界面对照

Oracle sqlnet.ora 配置界面对照

c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听

  • 核查要点:
    1. 是否存在远程管理:确认管理员是否仅从数据库服务器本机登录。
    2. sqlplus / PL-SQL 默认是明文传输——需启用 Oracle Native Network Encryption(NNE,通过 sqlnet.oraSQLNET.ENCRYPTION_SERVER / SQLNET.ENCRYPTION_TYPES_SERVER)或配置 TCPS(TLS)后才可判加密成立。
    3. 抓包验证鉴别信息是否可被还原。
  • 判定标准:
    • 不适用:管理全在本地(管理员仅从服务器本机登录),需在报告写明依据。
    • 符合:已启用 NNE 或 TCPS,且抓包无法还原明文口令。
    • 部分符合:已配置 NNE 但仅服务端要求、客户端可降级(SQLNET.ENCRYPTION_SERVERrequested 而非 required)。
    • 不符合:未启用任何网络加密,远程管理明文传输(默认即此档)。
  • 常见不符合项:认为「Oracle 支持加密」即符合要求——默认明文,必须核查 sqlnet.ora 的实际配置;另一处是服务端设为 requested 时客户端可选择不加密,须设为 required 才强制。
  • 证据留存:sqlnet.ora 加密参数截图、监听器 TCPS 配置截图、抓包结果。

d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现

  • 核查要点:访谈并验证是否采用双因子。Oracle 支持 Kerberos、RADIUS、SSL 客户端证书(TCPS + SSL_CLIENT_AUTHENTICATION)等外部鉴别方式,证书与 Kerberos 属密码技术类第二因子;也可由堡垒机承载。
  • 判定标准:
    • 符合:口令 + 证书/Kerberos(或经堡垒机实现双因子)且可现场演示。
    • 部分符合:双因子由外部平台实现,但未见配置或无法演示。
    • 不符合:仅口令单一因子。
  • 证据留存:sqlnet.ora 中的鉴别方式配置、证书清单、双因子登录演示记录。

访问控制

对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)

判定要点:账户与权限一一对应、默认账户已处置、无多余与共享账户、管理权限已分离、有书面授权策略、授权粒度达到用户级与表级 → 符合;有权限划分但存在越权高权限账户或粒度仅到角色级 → 部分符合;统一使用超级账户或应用账户持最高权限 → 不符合。

取证要求:账户与角色对照表、权限清单查询输出、默认账户处置记录、访问控制策略文件与授权审批记录、粒度核查(对象级/列级/行级)输出。

a) 应对登录的用户分配账户和权限

  • 核查要点:SELECT username, account_status, profile FROM dba_users; 查账户;SELECT * FROM dba_role_privs;SELECT * FROM dba_sys_privs; 查角色与系统权限;访谈确认是否设立系统管理员、安全管理员、审计管理员等分立账户。
  • 判定标准:
    • 符合:每名管理员有独立账户、按角色授权、可对应到自然人。
    • 部分符合:有独立账户但同时存在共用的 DBA 账户。
    • 不符合:全部共用 SYS / SYSTEM 或同一 DBA 账户。
  • 常见不符合项:应用账户直接授予 DBA 角色。
  • 证据留存:账户与角色对照表、dba_role_privs 输出、访谈纪要。

Oracle 用户与权限界面对照

b) 应重命名或删除默认账户,修改默认账户的默认口令

  • 核查要点:查 SELECT username, account_status FROM dba_users WHERE account_status = 'OPEN'; 列出在用账户,识别其中的默认账户(SYSSYSTEMSCOTTHRDBSNMPOUTLNSYSMANMGMT_VIEW 等),核查其口令是否已修改、是否已锁定或过期。
  • 判定标准:
    • 符合:示例/测试账户(SCOTTHR 等)已删除或锁定,管理类默认账户(SYSSYSTEMDBSNMPSYSMAN 等)口令均已修改且无弱口令。
    • 部分符合:默认账户保留但已改强口令并限制使用场景。
    • 不符合:示例账户处于 OPEN 状态,或默认账户仍为出厂口令(高风险线索,须对照 22 号高风险判定指引)。
  • 常见不符合项:只核查 SYS / SYSTEM 而遗漏 DBSNMPSYSMANOUTLN 等预置账户——它们在 11g 中默认即处于 EXPIRED & LOCKED 状态,若被解锁且沿用默认口令属明确不符合。
  • 证据留存:OPEN 账户清单、默认账户处理记录、登录实测截图。

Oracle 在用账户清单界面对照

c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在

  • 核查要点:核对 dba_users 与在岗人员名单;确认是否存在无人使用的账户、离职/调岗人员遗留账户、多人共用的应用或运维账户;确认网络管理员、安全管理员、系统管理员是否使用不同账户。
  • 判定标准:
    • 符合:无多余/过期账户、无共享账户,账户与人员一一对应。
    • 部分符合:存在停用账户但未删除(已锁定即属可用处置)。
    • 不符合:存在共享账户,或离职人员账户未清理仍可登录。
  • 证据留存:账户台账、人员对照表、清理记录、访谈纪要。

d) 应授予管理用户所需的最小权限,实现管理用户的权限分离

  • 核查要点:SELECT * FROM dba_role_privs WHERE granted_role IN ('DBA','SYSDBA','SYSOPER'); 列出持高权限角色的账户;核查是否按系统管理、安全管理、审计管理分别建账户并授予不同权限(如审计相关可授予 AUDIT_ADMIN / AUDIT_VIEWER,12c 起提供)。
  • 判定标准:
    • 符合:三类管理账户齐备且互不兼任,管理用户仅授予必需权限,无应用账户持 DBA
    • 部分符合:有角色划分但仍存在越权的 DBA 账户,或审计管理未独立。
    • 不符合:所有运维账户均为 DBA,或应用账户持 DBA 角色。
  • 证据留存:持 DBA / SYSDBA 角色账户清单、角色与成员对照表、权限分离说明。

e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则

  • 核查要点:查阅访问控制策略文件(授权主体、主体/客体访问规则),核对线上授权与策略是否一致,抽查授权审批记录。
  • 判定标准:
    • 符合:有书面策略、明确授权主体,实际授权与策略一致且经审批。
    • 部分符合:有策略但授权未走审批,或个别授权与策略不符。
    • 不符合:无访问控制策略,授权由运维人员自行决定。
  • 注意:原稿称「Oracle 已启用身份鉴别且具备权限分离即可判符合」——那是 a)/d) 项的判据,不能替代本项对策略文档与授权审批的要求。
  • 证据留存:访问控制策略文件、授权审批记录、策略与实际授权比对表。

f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级

  • 核查要点:Oracle 支持对象级(GRANT ... ON 模式.表)与列级(GRANT UPDATE(列) ON ...)授权,另可用 VPD(虚拟专用数据库)实现行级控制;查 DBA_TAB_PRIVSDBA_COL_PRIVS 确认实际粒度。
  • 判定标准:
    • 符合:授权按用户分别授予且可精确到表级,重要数据到列级或有 VPD 行级控制。
    • 部分符合:授权仅到模式/角色级。
    • 不符合:统一授予 DBA 角色或 ANY 系列系统权限(如 SELECT ANY TABLE)。
  • 注意:原稿称「此测评点多数测评机构默认判定为符合」——不应默认,须以 DBA_TAB_PRIVS / DBA_COL_PRIVS 的实际授权为据。
  • 证据留存:DBA_TAB_PRIVS / DBA_COL_PRIVS 输出、VPD 策略清单。

g) 应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问

  • 核查要点:确认是否部署 Oracle Label Security(OLS)——这是 Oracle 的可选选件,需单独授权;未部署时核查是否由操作系统强制访问控制或第三方数据标签系统实现。
  • 判定标准:
    • 符合:部署了 OLS 并应用到重要主体与客体,可演示基于标记的访问裁决;或由 OS/第三方实现并演示。
    • 部分符合:已购选件但未应用策略,或仅在管理制度层面定义密级。
    • 不符合:无任何实现。
  • 注意:原稿「Oracle 自身应该不具备这个功能」表述不准确——Oracle 通过 OLS 选件提供该能力,但未购买/未部署时应判不符合,不得判不适用。
  • 证据留存:OLS 策略清单或第三方方案说明、访问裁决演示记录、访谈纪要。

安全审计

对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

判定要点:审计功能已启用且实际产生记录、记录含时间/用户/事件类型/结果四要素、覆盖特权账户、审计数据受保护并留存 ≥6 个月、非审计管理员无法变更或清除 → 符合;开关已开但无审计策略、记录要素不全、仅本地留存或留存不足 → 部分符合;审计未启用且无第三方审计措施 → 不符合(高风险)。

取证要求:审计开关与策略配置截图、审计记录抽样(脱敏)、审计存放路径与权限核查结果、清理与转存任务配置、最早记录时间清单、第三方审计系统截图。

a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计

  • 核查要点:
SELECT value FROM v$parameter WHERE name='audit_trail';   -- none 即未开启审计
SHOW PARAMETER audit_file_dest;                            -- 审计文件存放路径
SHOW PARAMETER audit;
-- 12c 起另有统一审计:SELECT * FROM v$option WHERE parameter='Unified Auditing';
  1. audit_trail 取值:NONE(未开启)、OSDBDB,EXTENDEDXMLXML,EXTENDEDNONE 即未开启审计
  2. 开启总开关后还须用 AUDIT 语句设置具体审计项(如 AUDIT SESSION;AUDIT SELECT TABLE BY 用户;),否则无记录;查 DBA_STMT_AUDIT_OPTS / DBA_OBJ_AUDIT_OPTS 看已设置的审计项。
  3. 12c 及以上版本提供统一审计(Unified Auditing),查 v$optionUnified Auditing 是否为 TRUE,并查 UNIFIED_AUDIT_TRAIL
  4. 核查审计是否覆盖每个用户(含 SYS 等特权账户——注意 SYS 的操作默认写入操作系统审计文件,需一并取证)。
  5. 访谈并取证是否部署第三方数据库审计系统。
  • 判定标准:
    • 符合:audit_trailNONE(或已启用统一审计)、审计项覆盖登录与关键操作、覆盖特权账户、记录可检索。
    • 部分符合:已开启总开关但未设置审计项(无实际记录);或审计项不完整;或未覆盖 SYS 的操作。
    • 不符合:audit_trailNONE 且无第三方审计措施。
  • 常见不符合项:把「已把 audit_trail 改为 DB」当作审计生效——必须另设审计项;忽略 SYS 的操作默认写入 OS 审计文件(audit_file_dest 下的 .aud 文件)。
  • 证据留存:audit_trail 值、audit_file_destDBA_STMT_AUDIT_OPTS 输出、审计记录抽样、第三方审计系统截图。

Oracle audit_trail 参数查询结果界面对照

Oracle audit_file_dest 查询结果界面对照

Oracle 审计参数查询结果界面对照

b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息

  • 核查要点:抽样审计记录(DBA_AUDIT_TRAILUNIFIED_AUDIT_TRAIL),核对是否含时间戳(TIMESTAMP / EVENT_TIMESTAMP)、用户名(USERNAME)、操作类型(ACTION_NAME)、返回码(RETURNCODE,0 表示成功)、用户主机(USERHOST)与对象名(OBJ_NAME)。
  • 判定标准:
    • 符合:时间、用户、事件类型、事件结果四要素齐全。
    • 部分符合:缺来源主机或对象名,但可与其他日志(主机日志、堡垒机日志)关联补齐。
    • 不符合:无时间或无法区分成功/失败。
  • 证据留存:审计记录抽样(脱敏后)、字段与等保要素对照说明。

Oracle 审计记录界面对照

Oracle 审计记录内容界面对照

Oracle 审计日志界面对照

c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等

  • 核查要点:
    1. 审计数据存放位置:audit_trailDB 时存放在 SYS.AUD$ 系统表(位于 SYSTEM 表空间),为 OS / XML 时存放于 audit_file_dest 目录;两种形态的保护方式不同,须分别核查。
    2. 用非审计管理员账号实测能否查看、修改、删除审计数据(AUD$ 表的写权限、audit_file_dest 目录的写权限)。
    3. 核查 AUD$ 表的空间增长与清理策略(DBMS_AUDIT_MGMT),以及转存/备份措施与留存期是否 ≥6 个月。
  • 判定标准:
    • 符合:审计数据权限受限(仅审计管理员可维护)、有转存或备份、留存 ≥6 个月。
    • 部分符合:仅本地保留未转存,留存期受表空间或磁盘清理策略影响不可控。
    • 不符合:非授权账号可删除审计数据,或留存明显不足 6 个月。
  • 常见不符合项:把「AUD$ 表里还有数据」当作留存满足要求——若配置了 DBMS_AUDIT_MGMT 的定期清理任务,留存期取决于清理时间戳而非当前数据量;另一处是忽略 SYS 操作写入的 OS 审计文件(.aud)同样需纳入留存管理。
  • 证据留存:audit_trailaudit_file_dest 配置、AUD$ 表权限核查结果、清理任务配置、转存任务配置、留存清单(含最早记录时间)。

d) 应对审计进程进行保护,防止未经授权的中断

  • 核查要点:核查谁能变更审计配置或清理审计数据——相关系统权限为 AUDIT SYSTEMAUDIT ADMINISTER(12c 起)以及 SYSDBA;列出持上述权限的账户,确认应用账号不在其中。
  • 判定标准:
    • 符合:仅审计管理员可变更审计配置与清理审计数据,应用与运维账号无法关闭审计。
    • 部分符合:持 SYSDBA 的账户较多,但应用账号无审计相关权限。
    • 不符合:应用或普通运维账号可执行 AUDIT 变更或清理 AUD$
  • 注意:原稿「根据 Oracle 权限体系建立各类账户,可防止审计进程未经授权的中断」是应然描述,须以实际权限核查为据。
  • 证据留存:持 AUDIT SYSTEM / SYSDBA 权限的账户清单、实测变更审计配置的结果。

入侵防范

对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)

判定要点:最小安装、非必要服务与高危端口已关闭、管理终端来源受限、有数据有效性检验、版本无已知高危漏洞且定期漏扫修补、上位部署入侵检测并能出示本对象告警 → 符合;部分措施到位(如有防火墙限制但库层未配来源校验、有漏扫无修补记录)→ 部分符合;管理端口无限制开放或存在已知高危漏洞未修补 → 不符合(高风险)。

取证要求:已安装组件/选件清单、监听与端口核查输出、来源限制配置截图与拒绝实测、约束或校验配置输出、版本与补丁记录、漏扫报告、上位 IDS/IPS 告警与处置工单。

a) 应遵循最小安装的原则,仅安装需要的组件和应用程序

  • 核查要点:查已安装的数据库选件与组件(SELECT * FROM v$option WHERE value='TRUE';),确认是否安装了与业务无关的可选组件(如 Oracle Text、Spatial、OLAP、Java 虚拟机 JVM、Oracle Multimedia 等);数据库软件本体的组件安装若由宿主 OS 承载,应注明并转由 OS 侧测评。
  • 判定标准:
    • 符合:仅启用必需选件,无示例模式。
    • 部分符合:安装了非必需选件但未启用相关服务。
    • 不符合:启用了与业务无关且对外可达的组件。
  • 注意:不得仅写「数据库此项不适用」而不说明理由。
  • 证据留存:v$option 输出、已安装组件清单截图。

b) 应关闭不需要的系统服务、默认共享和高危端口

  • 核查要点:查监听端口(lsnrctl status,默认 1521)与监听状态;OS 层 netstat -ano / ss -lntp 查监听;确认 1521 是否对全网开放,有无防火墙或 ACL 限制;核查是否设置了监听口令(lsnrctlchange_password / set password)——未设口令时任意可连到监听端口的人都能执行 lsnrctl 管理命令
  • 判定标准:
    • 符合:仅监听必要地址,非必要服务已关闭,监听已设管理口令。
    • 部分符合:监听 0.0.0.0 但有防火墙/ACL 限制(须取得边界策略证据)。
    • 不符合:1521 无限制开放,或监听未设口令且可从网络访问。
  • 注意:端口与网络服务属数据库可承载项,不宜直接判不适用。
  • 证据留存:lsnrctl status 输出、监听配置截图、边界策略截图。

c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制

  • 核查要点:在 sqlnet.ora 中通过节点校验限制来源:
tcp.validnode_checking = yes
tcp.invited_nodes = (127.0.0.1, 192.168.10.5, 192.168.10.6)
注意 `tcp.invited_nodes` **只接受逗号分隔的具体 IP 或主机名,不支持网段/通配符**;且启用后未列入的地址会被拒绝。也可在数据库层用登录触发器、在网络层用防火墙或 IPSec 实现。
  • 判定标准:
    • 符合:tcp.validnode_checking = yestcp.invited_nodes 已列举管理地址,实测非授权地址连接被拒。
    • 部分符合:仅在网络层限制,数据库层未配置节点校验。
    • 不符合:未做任何来源限制。
  • 常见不符合项:配置了 tcp.validnode_checking = yes 但把应用服务器的地址也一并列入,实际未限制管理终端。
  • 证据留存:sqlnet.ora 配置截图、非授权地址连接被拒实测记录、防火墙规则截图。

Oracle sqlnet.ora 信任 IP 配置界面对照

d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求

  • 核查要点:数据库侧对应约束机制——非空、数据类型、CHECK 约束、外键、触发器;查 DBA_CONSTRAINTS / DBA_TRIGGERS。若校验由应用层实现,须验证其有效性。
  • 判定标准:
    • 符合:关键字段有数据库约束,或应用层校验经验证有效。
    • 部分符合:仅依赖应用层校验但未提供验证证据。
    • 不符合:无校验且实测可写入超出设定范围的数据。
  • 注意:只有当应用层完全不在本次测评单元范围内时,才可注明「本组件不承载,由应用侧测评」,不得机械判不适用。
  • 证据留存:DBA_CONSTRAINTS 输出、非法数据写入实测结果。

e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞

  • 核查要点:SELECT banner FROM sys.v_$version; 获取版本,并结合 SELECT * FROM dba_registry_history; 查看已应用的补丁/PSU 记录;对照 CVE/NVD 与 Oracle 官方 Critical Patch Update(CPU)公告;查阅漏扫或渗透测试报告(建议周期不超过半年)与补丁台账。
  • 判定标准:
    • 符合:有定期漏扫(≤半年)且高危漏洞已打补丁(CPU/PSU/RU)并有复测验证记录。
    • 部分符合:有漏扫但无修补记录,或已打补丁未复测。
    • 不符合:无漏扫记录且当前版本存在已知高危漏洞(11g 已停止官方支持,属重点关注项)。
  • 证据留存:版本与补丁历史输出、漏扫报告、补丁记录与复测结论。

f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警

  • 核查要点:确认上位系统是否部署 IDS/IPS、数据库审计或数据库防火墙,并能提供针对本数据库的告警记录;数据库自身不具备入侵检测能力。
  • 判定标准:
    • 符合:上位系统已部署并能出示针对本对象的告警与处置记录。
    • 部分符合:已部署但告警未覆盖本对象或从未处置。
    • 不符合:无任何入侵检测措施。
  • 注意:按「本组件不承载、由上位系统测评」记录,不得判不适用,须取得上位系统的证据。
  • 证据留存:上位系统部署说明、告警记录、处置工单。

恶意代码防范

对应控制点:GB/T 22239-2019 8.1.4.5 恶意代码防范 a)b)

判定要点:宿主 OS 已部署恶意代码防范且规则库更新正常(含数据目录未排除),库内可执行载体(JVM/外部过程/脚本扩展)已按需关闭或受限 → 符合;OS 侧已部署但排除数据目录,或可执行载体已启用未加限制 → 部分符合;宿主无任何防范措施 → 不符合。仅当测评单元不含宿主 OS 时方可判不适用,并写明测评单元边界。

取证要求:宿主 OS 防范措施截图、规则库版本与更新时间、库内可执行载体启用状态查询输出、访谈纪要。

应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断

  • 核查要点:确认恶意代码防范能力由宿主操作系统承载,核查 OS 侧杀毒/EDR 的部署、更新状态与是否排除数据库目录;数据库侧还需核查 Java 虚拟机(JVM)选件是否启用(启用后数据库内可运行 Java 存储过程,是恶意代码的潜在执行载体)、UTL_HTTP / UTL_TCP 等网络包的对外访问权限是否受限。
  • 判定标准:
    • 符合:宿主 OS 已部署恶意代码防范且规则库更新正常(含数据目录),且非必要的 JVM 等执行载体已关闭或受限。
    • 部分符合:OS 侧已部署但排除了数据目录,或 JVM 已启用但未限制网络包权限。
    • 不符合:宿主机构无任何防范措施。
  • 注意:仅当测评单元不含宿主 OS 时,方可判不适用并写明理由与测评单元边界。
  • 证据留存:宿主 OS 侧防范措施截图、规则库版本与更新时间、v$option 中 JVM 的状态。

可信验证

对应控制点:GB/T 22239-2019 8.1.4.6 可信验证

判定要点:宿主服务器配备可信根(TCM/TPM)并启用引导与关键执行环节动态验证、验证结果送安全管理中心 → 符合;具备可信根但未启用动态验证或未送安全管理中心 → 部分符合;无可信验证措施 → 不符合(多数现场属此档,须由宿主机构侧取证)。

取证要求:可信计算配置截图、动态验证与报警记录、送安全管理中心的对接证据、访谈纪要。

可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心

  • 核查要点:访谈并核查宿主服务器是否配备可信芯片(TCM/TPM)并启用可信验证;数据库自身无该能力。
  • 判定标准:
    • 符合:宿主服务器启用基于可信根的验证并接入安全管理中心(须提供宿主机构取证)。
    • 部分符合:具备可信根但未启用动态验证或未送安全管理中心。
    • 不符合:无可信验证措施(多数现场属此档)。
  • 证据留存:可信计算相关配置截图、访谈纪要、宿主机构测评结论引用。

数据完整性

对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性 a)b)

判定要点:传输侧启用密码技术保护并强制校验(不可降级),存储侧有哈希基线或校验字段并定期比对 → 符合;仅传输侧保护或仅配置文件有基线、校验参数可降级 → 部分符合;传输与存储均无完整性保护 → 不符合。管理全在本机时传输项可判不适用,须写明依据。

取证要求:传输加密与校验参数截图、抓包结果(脱敏)、哈希基线清单与比对记录、第三方完整性监控说明。

a) 应采用密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

  • 核查要点:同身份鉴别 c)——核查 sqlnet.oraSQLNET.ENCRYPTION_SERVER / SQLNET.ENCRYPTION_TYPES_SERVER(NNE)或 TCPS(TLS)配置;NNE 同时提供加密与完整性校验(SQLNET.CRYPTO_CHECKSUM_SERVER,需设为 required 才强制)。
  • 判定标准:
    • 不适用:管理全在本地,需在报告写明依据。
    • 符合:已启用 NNE 或 TCPS 且校验和设为 required,抓包无法还原。
    • 部分符合:加密已启用但完整性校验(CRYPTO_CHECKSUM)为 requested,可被降级。
    • 不符合:未启用任何网络加密与完整性保护。
  • 证据留存:sqlnet.ora 加密与校验和参数截图、抓包结果。

b) 应采用密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

  • 核查要点:核查是否存在第三方完整性保护——配置文件与数据文件的哈希基线、业务表哈希或 MAC 校验字段、主机级文件完整性监控,并查定期比对记录;Oracle 自身不提供存储完整性保护(TDE 提供的是保密性,且默认只防静态数据泄露,不提供防篡改)。
  • 判定标准:
    • 符合:重要数据与配置文件均有完整性校验机制并定期比对。
    • 部分符合:仅配置文件有哈希基线,业务数据无校验。
    • 不符合:无任何完整性校验措施。
  • 注意:原稿「目前一般做不到,判定为不符合」属无核查依据的推断,应以上述核查结论定档。
  • 证据留存:哈希基线清单、比对记录、第三方工具说明。

数据保密性

对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性 a)b)

判定要点:鉴别数据以强算法加盐存储(不含已废弃的弱哈希),重要业务数据与个人信息字段采用透明加密或应用侧加密,密钥管理可控 → 符合;仅鉴别数据非明文而业务数据明文,或加密算法强度不足 → 部分符合;鉴别数据使用弱哈希或重要数据明文且无加密措施 → 不符合。

取证要求:口令存储格式查询输出、加密配置与密钥(钱包/证书)管理截图、敏感字段抽样结果、算法清单与选型说明、抓包结果(脱敏)。

a) 应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

  • 核查要点:在未启用 NNE/TCPS 时用 Wireshark 抓取认证过程,验证鉴别数据是否明文;核查加密参数的实际取值(requested 还是 required)。
  • 判定标准:与数据完整性 a) 同口径;抓包可还原明文口令时不得判符合
  • 证据留存:抓包结果(脱敏后)、sqlnet.ora 配置截图。

b) 应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

  • 核查要点:
    1. 鉴别数据:11g 起 Oracle 以加盐哈希形式存储口令(SYS.USER$.PASSWORD / SPARE4),非明文;核查是否存在仍使用 10g 旧式不区分大小写哈希的账户(DBA_USERS.PASSWORD_VERSIONS10G 时说明哈希强度较弱)。
    2. 业务与个人信息:抽查表中敏感字段是否明文;核查是否使用 TDE(透明数据加密,10gR2 及更高版本提供) 做表空间或列级加密,或使用 DBMS_CRYPTO 做应用侧加密。
  • 判定标准:
    • 符合:鉴别数据为加盐哈希(不含 10G 旧版本哈希),且重要业务数据与个人信息字段采用 TDE / DBMS_CRYPTO 之一加密存储。
    • 部分符合:仅鉴别数据非明文,业务与个人信息明文存储。
    • 不符合:鉴别数据使用 10G 旧式哈希,或重要数据明文且无加密措施。
  • 注意:
    • DBMS_CRYPTO 支持的算法中包含 DES、3DES 与 RC4,DES 与 RC4 不应作为等保要求的保密性措施;建议用 AES-128/256 或国密算法。
    • TDE 防的是磁盘丢失与数据/备份文件被复制,对已控制数据库实例的攻击者不提供防护,报告中应如实描述防护边界。
  • 证据留存:PASSWORD_VERSIONS 查询结果、TDE 钱包与加密配置截图、敏感字段抽样结果、密钥管理说明。

数据备份恢复

对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)

判定要点:有本地备份任务与近期备份产物且有恢复演练记录、有异地实时或定时备份链路、具备热冗余(集群/主备)并可演示切换 → 符合;有备份产物但仅做过校验从未真实恢复、异地周期过长、有冗余架构无切换演练 → 部分符合;无备份措施或单实例且无异地副本 → 不符合。

取证要求:备份脚本或作业配置截图、备份产物清单(含时间戳)、恢复演练记录、异地备份拓扑与同步状态输出、集群或主备状态输出、切换演练记录。

a) 应提供重要数据的本地数据备份与恢复功能

  • 核查要点:访谈并查看备份策略与执行记录(RMAN 备份脚本、Oracle 代理作业、备份目录清单),核对备份产物与策略是否一致,是否有恢复测试记录。
-- RMAN 物理备份(需在 RMAN 环境下执行)
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
RMAN> RESTORE DATABASE VALIDATE;      -- 校验备份集可恢复性
  • 备注:逻辑备份可用 Data Pump(expdp / impdp)或第三方图形工具(Navicat 等),其原理是通过协议连接数据库将需要备份的数据查询导出。RESTORE DATABASE VALIDATE 只校验备份集完整性,不能替代真实的恢复演练。备份与数据库同机存放时,主机故障会导致备份同时失效。
  • 判定标准:
    • 符合:有备份任务配置、近期备份产物,且有恢复演练记录。
    • 部分符合:有备份任务与产物,但只做过校验、从未真实恢复过。
    • 不符合:无备份措施。
  • 注意:Data Pump 逻辑备份无法覆盖归档日志与物理结构,不能单独作为生产库的完整备份方案,报告中应区分说明。
  • 证据留存:备份脚本或作业配置截图、备份产物清单(含时间戳)、恢复演练记录。

b) 应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地

  • 核查要点:确认备份目的地与主机是否分处不同物理地点(异地机房/同城灾备/对象存储),确认同步方式(RMAN 备份集定时推送、Data Guard、存储层复制、备份一体机)与周期。
  • 判定标准:
    • 符合:存在异地备份链路且周期满足业务 RPO 要求。
    • 部分符合:有异地备份但周期过长,或链路未验证过可用性。
    • 不符合:无异地备份。
  • 常见不符合项:把「本机多块磁盘互拷」或「同机房另一台主机的副本」当作异地备份。
  • 证据留存:异地备份拓扑说明、同步状态输出、异地侧备份集清单。

c) 应提供重要数据处理系统的热冗余,保证系统的高可用性

  • 核查要点:访谈并核查是否采用 RAC(实时应用集群)、Data Guard(主备)或宿主层高可用;查集群与备库状态及切换演练记录。
  • 判定标准:
    • 符合:具备 RAC / Data Guard / 宿主层高可用任一形态且可演示切换。
    • 部分符合:有冗余架构但无切换演练记录,或备库从未验证过可切换。
    • 不符合:单实例运行。
  • 证据留存:集群或 Data Guard 状态输出、冗余架构说明、切换演练记录。

剩余信息保护

对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)

判定要点:鉴别信息与敏感数据所在存储空间在释放或重分配前有可验证的清除机制(客体重用参数、存储层安全擦除、加密后销毁密钥),且备份介质纳入清除范围 → 符合;仅有逻辑删除(DROP/DELETE)未做清除验证,或备份介质未纳入 → 部分符合;无任何清除机制 → 不符合。

取证要求:客体重用或擦除相关参数截图、擦除验证记录、密钥销毁流程说明、备份介质销毁与清除记录、敏感数据分布清单。

a) 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除

  • 核查要点:Oracle 无原生的客体重用参数(不同于达梦的 ENABLE_OBJ_REUSE)。核查是否依赖存储层安全擦除、加密存储(TDE)后销毁密钥,或第三方擦除工具;并核查包含鉴别信息的备份文件是否纳入清除范围。
  • 判定标准:
    • 符合:启用存储加密且密钥销毁可控,或存储层有可验证的安全擦除机制。
    • 部分符合:仅依赖 DROP USER 等逻辑删除,未做清除验证。
    • 不符合:无任何清除机制。
  • 证据留存:TDE 钱包与密钥管理说明、擦除验证记录。

b) 应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除

  • 核查要点:同 a) 项,针对存放敏感业务数据与个人信息的数据文件、归档日志与备份集(RMAN 备份片、Data Pump 导出文件)。
  • 判定标准:与 a) 项同口径;备份介质未纳入清除范围时,应判部分符合。
  • 证据留存:敏感数据分布清单、备份介质销毁/清除记录。

个人信息保护

对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)

判定要点:仅采集与保存业务必需字段且有清单与制度支撑、个人信息所在对象有独立授权且实测非授权账户无法访问 → 符合;存在非必要字段但有清理计划,或有授权控制但备份文件未纳入管控 → 部分符合;超范围采集无制度,或非授权账户可直接读取 → 不符合。对象确实不承载个人信息时可判不适用,须先访谈确认并留存反向证据。

取证要求:个人信息字段清单、采集必要性说明与管理制度、权限清单、非授权访问实测记录、访谈纪要。

a) 应仅采集和保存业务必需的用户个人信息

  • 核查要点:核查库中是否存储个人信息;若存在,索取字段清单与采集必要性说明、个人信息保护管理制度。
  • 判定标准:
    • 符合:仅存储业务必需字段,有清单与制度支撑。
    • 部分符合:存在非必要字段但有清理计划。
    • 不符合:超范围采集且无清单与制度。
  • 证据留存:个人信息字段清单、采集必要性说明、管理制度文件。

b) 应禁止未授权访问和非法使用用户个人信息

  • 核查要点:验证非授权人员(或低权限账号)能否访问存储个人信息的表、表空间与备份文件;核查个人信息保护机制的访问控制配置。
  • 判定标准:
    • 符合:个人信息所在表有独立授权,实测非授权账户无法访问。
    • 部分符合:有授权控制但备份文件未纳入管控。
    • 不符合:非授权账户可直接读取个人信息。
  • 证据留存:权限清单、非授权访问验证记录、个人信息保护制度。

四、测评项对照表

控制点本文章节关键核查命令/配置
身份鉴别§三 身份鉴别dba_profilesPASSWORD_VERIFY_FUNCTION 默认 NULL、PASSWORD_LIFE_TIME 默认 180 天、FAILED_LOGIN_ATTEMPTS 默认 10、PASSWORD_LOCK_TIME 默认 1 IDLE_TIME 默认 UNLIMITED)、sqlnet.ora 的 NNE/TCPS 参数
访问控制§三 访问控制dba_users / dba_role_privs / dba_sys_privsDBA_TAB_PRIVS / DBA_COL_PRIVS、VPD、Oracle Label Security 选件
安全审计§三 安全审计audit_trail(NONE 即未开启)、audit_file_destDBA_STMT_AUDIT_OPTS、12c 统一审计 UNIFIED_AUDIT_TRAILDBMS_AUDIT_MGMT 清理策略
入侵防范§三 入侵防范v$option 选件清单、监听端口 1521 与监听口令、sqlnet.oratcp.validnode_checking / tcp.invited_nodesDBA_CONSTRAINTSbannerdba_registry_history、上位 IDS/IPS 告警
恶意代码防范§三 恶意代码防范宿主 OS 侧取证 + JVM 选件与 UTL_HTTP/UTL_TCP 权限核查
可信验证§三 可信验证宿主服务器可信根取证
数据完整性§三 数据完整性SQLNET.ENCRYPTION_SERVERSQLNET.CRYPTO_CHECKSUM_SERVER(须设为 required)、哈希基线比对
数据保密性§三 数据保密性PASSWORD_VERSIONS(是否含 10G 旧哈希)、TDE 钱包与加密配置、DBMS_CRYPTO 算法选型
数据备份恢复§三 数据备份恢复RMAN BACKUP DATABASE PLUS ARCHIVELOG、Data Pump、RAC / Data Guard 状态与切换演练
剩余信息保护§三 剩余信息保护无原生客体重用参数,依赖存储层擦除或 TDE 密钥销毁
个人信息保护§三 个人信息保护字段清单、独立授权与访问验证

参考依据

关联文章