24、Oracle数据库加固
Categories:
13 分钟阅读
定位:Oracle 数据库 11gR2 / 12c / 19c / 21c 等保三级安全加固手册:按 00~11 编号分节覆盖官方补丁管理、默认账户治理、口令复杂度与有效期、登录失败处理与超时、权限最小化与三权分立、远程管理与传输加密、审计、数据加密、数据字典保护、备份恢复、剩余信息保护与版本支持,每节附核查命令与测评项对照表。
适用版本:Oracle Database 11gR2 / 12c / 19c / 21c+(多租户 CDB/PDB 与非多租户两种形态均适用;参数作用域、公共用户 C##/C### 与 PDB 本地用户的差异随文标注,11g 现场不存在多租户口径)。 配套测评:01、Oracle数据库测评、02-Oracle测评命令单。
使用说明:
- 本文为加固操作手册:文中
ALTER SYSTEM、ALTER PROFILE、ALTER USER、审计策略、监听与 sqlnet.ora 修改均属变更类操作,可能中断业务会话、需要重启实例或重载监听。实施前必须完成变更审批、确认维护窗口,备份 spfile/参数文件、listener.ora与sqlnet.ora原配置,并用 RMAN 完成一次可恢复的全备,准备可执行的回滚预案。- 先在测试环境或灰度实例验证,确认无业务影响后再推广;每完成一项立即用「核查方法」命令复核——配置已下发不等于策略已生效(如
audit_trail为静态参数须重启、resource_limit=TRUE后 Profile 限制才生效、监听修改后须lsnrctl reload)。- 示例中的账户名、口令、路径、IP 均为演示值(如
PleaseChange#2026、192.168.10.10),现场须替换为本单位口令策略与网络规划的真实值,严禁直接沿用示例口令;对外发布或归档时须对内网地址与账户信息脱敏。- 命令不存在、视图名或参数与本文不一致时,先用
select * from v$version;与show con_name;确认版本与部署形态,再查阅对应版本官方文档换用等效命令;版本差异不得直接作为「无法整改」的结论,须给出替代措施并评估其实际效果(详见文末核验说明的 11g/12c/19c/21c 差异要点)。- 涉及账户锁定、监听限制、加密强制(
required)的变更存在锁死自身风险:务必保留一条已验证的恢复通道(本机操作系统组认证登录、另一独立管理账户、监听配置文件备份)后再实施。- 加固完成后按「16、安全评估加固记录表3.0」逐项留痕(整改前后回显、操作人、时间、验证结论、回退情况),并纳入复测;测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准,本文的「加固要点」不构成最终测评结论。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点,并写明判定依据与承载该能力的上位组件。- 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则:控制能力由统一认证平台、堡垒机、数据库审计设备、云托管数据库平台或存储层加密承载时,应注明测评单元边界后判定不适用或转由上位组件核查,不得机械按缺失判不符合。
- 产品版本确实不提供该能力(如标准版无 TDE、已停止支持的版本无补丁源)时,须核查替代措施并按替代措施的实际效果定档,不得直接判不适用;已停止支持的版本应同时提出升级或补偿控制建议。
测评项对照表
| 控制点(GB/T 22239-2019 安全计算环境-数据库) | 对应章节 |
|---|---|
| 身份鉴别:口令复杂度/有效期 | 01、02、10 |
| 身份鉴别:登录失败处理与超时 | 03 |
| 身份鉴别:远程管理防窃听 | 05 |
| 访问控制:账户最小化、默认账户治理、权限分离 | 01、04、08 |
| 安全审计:审计开启、审计记录与留存 | 06 |
| 入侵防范:补丁与漏洞管理、端口与服务收敛 | 00、05、11 |
| 数据完整性/数据保密性(通信传输与存储) | 05、07 |
| 数据备份恢复 | 09 |
| 剩余信息保护 | 10 |
00 关注官方安全更新公告
对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 e)(能发现可能存在的已知漏洞,并在经过充分测试评估后及时修补漏洞)
加固要点:建立 Oracle 版本与补丁台账,跟踪 Oracle 每季度发布的 CPU(Critical Patch Update)安全公告并按变更窗口修补:CPU 于每年 1、4、7、10 月的第三个星期二发布,其余月份以月度安全更新(CSPU)形式发布,紧急漏洞走 Security Alerts 单独公告。补丁分两层核查:二进制层用
opatch lsinventory(只读)核对 ORACLE_HOME 已装补丁;数据库层用DBA_REGISTRY_SQLPATCH视图核对datapatch执行结果(12c 起提供)。已停止 Premier/Extended Support 的版本(11gR2、12c 系列已陆续退出支持)须提出升级或补偿控制建议,并按 11 节口径单独记录。验证方法:
v$version版本回显、opatch lsinventory与DBA_REGISTRY_SQLPATCH补丁记录、CPU 公告订阅证据与补丁评估变更单、漏洞扫描报告、官方支持状态截图(对照 Oracle Lifetime Support 政策页)。
数据库版本已停止官方支持且长期未安装任何安全补丁,同时监听对非运维网段或互联网开放时,按《高风险判定指引》按入侵防范不符合与高风险线索记录;DBA_REGISTRY_SQLPATCH 中存在 WITH ERRORS 状态的补丁记录,说明补丁未完整生效,应作为高频「已打补丁但未整改完成」情形跟踪。
判定口径详见 22、高风险判定指引与加固对照表。
官方安全公告(CPU/Security Alerts):https://www.oracle.com/security-alerts/
核查方法
select * from v$version;
-- 数据库层补丁记录(12c 起,datapatch 结果)
select patch_id, patch_type, action, status, action_time, description
from dba_registry_sqlpatch order by action_time;
# 二进制层补丁清单(只读核查)
$ORACLE_HOME/OPatch/opatch lsinventory
示例输出(节选)
$ $ORACLE_HOME/OPatch/opatch lsinventory | head -20
Oracle Interim Patch Installer version 12.2.0.1.42
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.1.4
Installed Top-level Products (1):
Oracle Database 19c 19.0.0.0.0
Interim patches (2) :
Patch 35643107 : applied on Tue Jul 18 2023
SQL> select patch_id, patch_type, status, action_time from dba_registry_sqlpatch order by action_time;
PATCH_ID PATCH_TYP STATUS ACTION_TIME
---------- --------- --------- -------------------------
35643107 RU SUCCESS 18-JUL-23 10.32.11.000000 AM
加固操作(补丁安装属变更类,必须安排维护窗口并回滚预案)
- 评估对应季度 CPU 公告中 Oracle Database 部分的 CVSS 评分与所装组件是否受影响,形成变更单;
- 测试环境先行安装(
opatch apply后执行$ORACLE_HOME/OPatch/datapatch),回归业务与备份作业; - 生产窗口安装并核验:
$ORACLE_HOME/OPatch/opatch apply # 安装二进制补丁(需关闭实例或按补丁说明操作)
$ORACLE_HOME/OPatch/datapatch -verbose # 应用 SQL 层补丁(RAC 需在全部节点执行)
- 复核:
opatch lsinventory出现新补丁号;select patch_id,status from dba_registry_sqlpatch;状态为SUCCESS。
- 预期现象:版本在官方支持期内;季度 CPU 补丁按台账更新;
dba_registry_sqlpatch无WITH ERRORS记录;补丁评估与变更单齐备。
01 默认账户治理与多余账户清理
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)(身份标识唯一)与 8.1.4.2 访问控制 b)c)(重命名/修改默认账户口令、及时删除或停用多余的、过期的账户,避免共享账户)
加固要点:11g 起新建库的大多数默认账户在创建时即处于锁定(LOCKED)且口令过期(EXPIRED)状态(官方安全指南口径),但从早期版本升级、手工
CREATE DATABASE建库或运维过程中临时解锁过的账户不在其列,须逐一核查:改默认口令、停用多余账户、删除过期账户;多租户环境注意公共用户(C##/C###)在 CDB 根处置、PDB 本地用户在各 PDB 内核查(DBA_USERS_WITH_DEFPWD从 PDB 查询只显示本地用户,公共用户须回到 CDB 根查询)。XS$NULL为 Real Application Security 内部账户(不能认证登录、不拥有任何对象),不对其实施删除、解锁、改名等处置。19c 起可用INACTIVE_ACCOUNT_TIMEProfile 参数自动锁定长期未登录账户。验证方法:
DBA_USERS.ACCOUNT_STATUS清单(OPEN/EXPIRED/LOCKED/EXPIRED & LOCKED)、DBA_USERS_WITH_DEFPWD查询结果(有返回即存在默认口令账户)、V$PWFILE_USERS口令文件账户清单、账户台账与审批记录、锁定与改口令的变更单。
DBA_USERS_WITH_DEFPWD 有返回,或存在未改默认口令的管理账户(如沿用安装口令的 SYSTEM/应用账户),按《高风险判定指引》可直接判高风险;同时存在空口令或共享管理账户、账户对全网开放时,合并判定为高风险。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select username, account_status, profile, created from dba_users order by created;
select username from dba_users_with_defpwd; -- 有返回即默认口令账户(19c RU 19.32+ 另有 PRODUCT 列)
select username, sysdba, sysoper from v$pwfile_users;
show parameter inactive_account_time -- 19c 新增,11g/12c 无此参数属正常
示例输出(节选)
SQL> select username, account_status, profile from dba_users order by username;
USERNAME ACCOUNT_STATUS PROFILE
---------------- ----------------- ----------
APPUSER OPEN SEC_PROFILE
AUDIT_ADMIN OPEN SEC_PROFILE
XS$NULL EXPIRED & LOCKED DEFAULT
SCOTT OPEN DEFAULT -- 须处置
SQL> select username from dba_users_with_defpwd;
USERNAME
----------
SCOTT
加固操作(均为变更类)
-- 改默认/弱口令(新口令须满足 02 节复杂度策略)
alter user scott identified by "PleaseChange#2026";
-- 锁定(停用)多余或过期账户;锁定同时强制口令过期
alter user scott account lock;
alter user old_app account lock password expire;
-- 重设口令并解锁(仅对确需保留的账户)
alter user appuser identified by "PleaseChange#2026" account unlock;
-- 19c:自动锁定 120 天未登录的账户(最小值 15,UNLIMITED 为不启用)
alter profile sec_profile limit inactive_account_time 120;
注意:显式
ACCOUNT LOCK的账户只能由安全管理员解锁(alter user xx account unlock;),锁定前须确认无作业/中间件仍在使用该账户;XS$NULL等内部账户保持锁定状态即可,不做任何处置;多租户:
alter session set container=CDB$ROOT;后处置公共用户,进入各 PDB 处置本地用户。预期现象:无默认口令账户(
dba_users_with_defpwd查询为空);非必要账户全部EXPIRED & LOCKED或已删除;v$pwfile_users仅保留必要管理账户;台账与实际账户一致。
02 口令复杂度与有效期(Profile 与校验函数)
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)(身份鉴别信息具有复杂度要求并定期更换)
加固要点:11g 起
DEFAULTProfile 的出厂口令参数为:FAILED_LOGIN_ATTEMPTS 10、PASSWORD_LIFE_TIME 180、PASSWORD_GRACE_TIME 7、PASSWORD_LOCK_TIME 1、PASSWORD_REUSE_TIME/MAX UNLIMITED、PASSWORD_VERIFY_FUNCTION NULL——即默认不启用复杂度校验,必须显式配置。Oracle 自带口令校验函数由$ORACLE_HOME/rdbms/admin/catpvf.sql安装到 SYS 模式:VERIFY_FUNCTION_11G(已弃用,弱规则)、ORA12C_VERIFY_FUNCTION(≥8 位,字母+数字+特殊字符,不得含用户名/库名/oracle,与旧口令差≥3 字符)、ORA12C_STRONG_VERIFY_FUNCTION(≥9 位,2 大写+2 小写+2 数字+2 特殊)、ORA12C_STIG_VERIFY_FUNCTION(≥15 位,STIG 规则,ORA_STIG_PROFILE的默认函数)。注意:官方校验函数不作用于 SYS 账户,最高权限账户须以制度约束并以DBA_USERS_WITH_DEFPWD、改口令记录兜底。口令有效期建议不超过 90 天、历史防重复不少于 5 次(见 10 节)。11g/12c 环境另需关注口令版本:SQLNET.ALLOWED_LOGON_VERSION_SERVER默认 12(11g 口令版本将逐步被弃用,旧客户端兼容方案见官方文档)。验证方法:
DBA_PROFILES口令类参数回显(PASSWORD_VERIFY_FUNCTION非空、PASSWORD_LIFE_TIME≤90)、弱口令设置被拒的实测记录、catpvf.sql执行记录、口令策略管理制度、最高权限账户改口令记录。
PASSWORD_VERIFY_FUNCTION 为空(未启用复杂度校验)且存在弱口令/默认口令账户时,按《高风险判定指引》可直接判高风险;仅在模板中配置而未对存量账户重设口令,属高频「已整改但无效」情形,复测必须实测而非只看配置。SYS 账户不受校验函数约束,须单独核查其口令强度与定期更换记录。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select profile, resource_name, limit from dba_profiles
where resource_name in ('PASSWORD_LIFE_TIME','PASSWORD_GRACE_TIME','PASSWORD_REUSE_TIME',
'PASSWORD_REUSE_MAX','PASSWORD_VERIFY_FUNCTION')
order by profile, resource_name;
示例输出(节选)
SQL> select profile, resource_name, limit from dba_profiles
2 where resource_name in ('PASSWORD_LIFE_TIME','PASSWORD_VERIFY_FUNCTION');
PROFILE RESOURCE_NAME LIMIT
---------- ---------------------------- --------
DEFAULT PASSWORD_LIFE_TIME 180
DEFAULT PASSWORD_VERIFY_FUNCTION NULL
SEC_PROFILE PASSWORD_LIFE_TIME 90
SEC_PROFILE PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION
加固操作(属变更类;先测试环境验证,避免应用账户批量过期)
-- 1. 安装官方口令校验函数(11g 起随数据库软件提供;以 SYS 执行)
@$ORACLE_HOME/rdbms/admin/catpvf.sql
-- 2. 为需引用函数的用户授予 EXECUTE(不授予则该用户无法在 Profile 中引用)
grant execute on sys.ora12c_verify_function to sec_admin;
-- 3. 加固 DEFAULT 或专用 Profile(12c+ 建议用 ORA12C 系列;11g 环境可暂用 VERIFY_FUNCTION_11G 并列入升级计划)
alter profile default limit
password_life_time 90
password_grace_time 7
password_verify_function ora12c_verify_function;
-- 4. 高安全要求场景:管理账户专用 Profile(STIG 规则)
create profile sec_profile limit
failed_login_attempts 5
password_life_time 90
password_verify_function ora12c_strong_verify_function;
alter user sys identified by "PleaseChange#2026"; -- SYS 不受校验函数约束,须手工设置强口令
alter system set sec_case_sensitive_logon = true scope = both; -- 口令大小写敏感:11g 默认 TRUE(12.1 起该参数弃用,保持默认即可,禁止改 FALSE)
说明:
sec_case_sensitive_logon=FALSE会使口令比较不区分大小写、显著降低强度,禁止关闭;PASSWORD_VERIFY_FUNCTION设回NULL即关闭校验,禁止在生产环境使用。预期现象:
DBA_PROFILES中PASSWORD_VERIFY_FUNCTION非空、PASSWORD_LIFE_TIME≤90;用弱口令建用户或改口令被口令校验函数拒绝;账户口令到期前后出现ORA-28001/ORA-28002提示并强制改口令。
03 登录失败处理与会话超时
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(具有登录失败处理功能,配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等措施)
加固要点:三层落地——① Profile 层:
FAILED_LOGIN_ATTEMPTS(建议 3~5 次)+PASSWORD_LOCK_TIME(锁定时长,按天计)实现失败锁定,Oracle 还会对连续失败登录指数级增加响应延迟以对抗口令猜测(官方安全指南口径);② 会话层:Profile 的IDLE_TIME实现空闲会话超时退出,其生效前提是RESOURCE_LIMIT=TRUE(ALTER SYSTEM SET resource_limit=TRUE,动态参数,19c 默认 TRUE,低版本环境须核查确认);③ 网络层:sqlnet.ora的SQLNET.EXPIRE_TIME(分钟级心跳,清理异常中断的死连接),与IDLE_TIME配合实现超时退出。锁定策略须覆盖最高权限账户,并保留一条已验证的恢复通道(本机操作系统组认证登录,见 04 节),避免锁定即失联。验证方法:Profile 参数回显(
FAILED_LOGIN_ATTEMPTS/PASSWORD_LOCK_TIME/IDLE_TIME)、resource_limit参数回显、sqlnet.ora的SQLNET.EXPIRE_TIME配置、一次真实失败登录实测:连续输错至阈值后DBA_USERS.ACCOUNT_STATUS变为LOCKED(TIMED),锁定到期自动解锁或手工解锁后登录成功;空闲超过IDLE_TIME的会话被断开(客户端报ORA-02396: exceeded maximum idle time)。
数据库管理入口无任何登录失败处理措施且对全网或互联网开放、可被无限次口令猜测时,按高风险线索记录;失败锁定未覆盖管理账户、或未保留本地恢复通道导致锁定即失联,同样记录为高风险线索。将 FAILED_LOGIN_ATTEMPTS 设为 UNLIMITED 等同于关闭失败处理,按未整改对待。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select profile, resource_name, limit from dba_profiles
where resource_name in ('FAILED_LOGIN_ATTEMPTS','PASSWORD_LOCK_TIME','IDLE_TIME')
order by profile, resource_name;
show parameter resource_limit
select username, account_status, lock_date from dba_users where account_status like 'LOCKED%';
加固操作(ALTER SYSTEM/ALTER PROFILE 属变更类,建议维护窗口执行)
alter system set resource_limit = true scope = both; -- 使 Profile 资源限制(含 IDLE_TIME)生效
alter profile default limit failed_login_attempts 5 password_lock_time 1;
alter profile default limit idle_time 30; -- 空闲 30 分钟自动断开会话
# $ORACLE_HOME/network/admin/sqlnet.ora(服务端)
SQLNET.EXPIRE_TIME = 10 # 每 10 分钟探测客户端,清理异常中断的死连接(变更后重启监听/实例生效)
说明:
ACCOUNT_STATUS为LOCKED(TIMED)表示按PASSWORD_LOCK_TIME自动锁定、到期自动解锁;LOCKED为显式锁定,只能由安全管理员alter user xx account unlock;解锁。锁定期间该账户全部连接(含应用连接池)被拒,须与应用侧确认重试策略。预期现象:失败 5 次后账户进入锁定状态且登录被拒(
ORA-28000);空闲会话 30 分钟被断开;show parameter resource_limit为TRUE;sqlnet.ora含SQLNET.EXPIRE_TIME配置。
04 权限最小化与三权分立(含 PUBLIC 收权)
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)d)f)(账户与权限分配、授予账户所需的最小权限并实现权限分离、授权粒度到表/列级)
加固要点:Oracle 无内置三权分立角色,须按「系统管理员(业务运维)/ 安全管理员(用户与权限管理)/ 审计管理员(审计策略与审计记录查询)」分别建独立管理账户分权,避免一人全权。管理权限与操作系统组绑定:OSDBA 组(Linux 惯例
dba)成员获 SYSDBA、OSOPER 组(oper)获 SYSOPER、OSBACKUPDBA(backupdba)/OSDGDBA(dgdba)/OSKMDBA(kmdba)分别对应 SYSBACKUP/SYSDG/SYSKM(12c 起为备份、Data Guard、密钥管理提供的分权管理权限,官方建议替代「一把梭」的 SYSDBA;Windows 侧为 ORA_DBA/ORA_OPER 本地组)——主机侧须核查这些组的成员清单最小化。数据库内:12c 起CREATE USER创建的用户权限域为空,登录须单独授予CREATE SESSION;CONNECT角色自 12c 起精简为仅含CREATE SESSION;按岗位最小授权(一应用一账户、对象权限优先于ANY系统权限)。PUBLIC是所有用户的公共角色,对 PUBLIC 授予EXECUTE 的 PL/SQL 包(UTL_FILE、UTL_HTTP、UTL_TCP、DBMS_JAVA等)是 SQL 注入提权的常见跳板,须按行业基线(CIS 检查项口径)核查并收口;注意官方文档提示:从 PUBLIC 撤销与 DML 相关的权限会触发全库存储对象重授权,收权前必须在测试环境回归。验证方法:
DBA_SYS_PRIVS/DBA_ROLE_PRIVS/DBA_TAB_PRIVS/DBA_COL_PRIVS权限矩阵、V$PWFILE_USERS管理权限清单、操作系统组(dba/oper/backupdba等)成员清单、PUBLIC 执行权限查询结果、三权分立的分权实测(审计管理员执行 DDL 应被拒)、权限审批记录。
SYSDBA/SYSOPER 级账户远超必要人数、应用账户持有 DBA 角色或 SELECT ANY TABLE 等 ANY 系统权限、多套业务共用一个高权限账户时,按高风险线索记录;UTL_FILE/DBMS_JAVA 等危险包对 PUBLIC 开放执行权限且存在 SQL 注入面的应用时,按高风险线索记录并限期收口。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select grantee, privilege, admin_option from dba_sys_privs where admin_option = 'YES' order by grantee;
select grantee, granted_role, admin_option from dba_role_privs order by grantee;
select grantee, owner, table_name, privilege from dba_tab_privs
where grantee = 'PUBLIC' and privilege = 'EXECUTE' order by table_name; -- PUBLIC 可执行的危险包
select * from v$pwfile_users;
示例输出(节选)
SQL> select grantee, privilege from dba_sys_privs where grantee='APPUSER';
GRANTEE PRIVILEGE
---------- -------------------------
APPUSER CREATE SESSION
SQL> select grantee, granted_role from dba_role_privs where grantee='APPUSER';
GRANTEE GRANTED_ROLE
---------- --------------------
APPUSER CONNECT -- 12c+ 该角色仅含 CREATE SESSION,符合最小化
加固操作(均为变更类;PUBLIC 收权前必须完成应用回归测试)
-- 1. 三权分立:独立管理账户(CREATE USER 权限域为空,须显式授予 CREATE SESSION)
create user ops_admin identified by "PleaseChange#2026"; -- 系统管理员:业务运维
create user sec_admin identified by "PleaseChange#2026"; -- 安全管理员:用户与权限
create user audit_admin identified by "PleaseChange#2026"; -- 审计管理员:审计策略与记录
grant create session, create table, create view to ops_admin;
grant create session, alter user, create user, drop user, create profile, alter profile to sec_admin;
grant create session, select any dictionary to audit_admin; -- 审计记录查询(或授予 SELECT_CATALOG_ROLE)
-- 2. 12c+ 管理权限分离(替代用 SYSDBA 做备份/容灾/密钥管理)
grant sysbackup to backup_admin;
grant syskm to key_admin;
-- 3. 应用账户最小授权:对象权限优先,禁止 GRANT ANY/DROP ANY 类权限
grant create session to appuser;
grant select, insert, update on appowner.t_order to appuser;
-- 4. PUBLIC 收口(高影响变更:先测试环境回归依赖对象,再生产窗口执行)
revoke execute on sys.utl_file from public;
revoke execute on sys.utl_http from public;
grant execute on sys.utl_file to etl_owner; -- 仅授予确需的账户
说明:从 PUBLIC 收回
EXECUTE后,依赖这些包的存储过程/函数须重新授权才可执行,官方文档明确提示撤销 PUBLIC 相关权限存在级联影响;主机侧同时核查dba、oper、backupdba、dgdba、kmdba组成员清单并最小化(groups <user>)。预期现象:权限矩阵与岗位一致,应用账户无
ANY类权限与 DBA 角色;PUBLIC 执行权限清单不含危险包或已按基线收口;审计管理员执行create user被拒;OS 组成员最小化并有台账。
05 远程管理与传输加密(监听与网络加密)
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 c)(远程管理时防止鉴别信息在传输过程中被窃听)、8.1.2.2 通信传输 a)b)、8.1.4.4 入侵防范 c)(管理终端限制)
加固要点:Oracle 侧传输加密与来源限制分三层:① 监听运行期加固:
listener.ora中设置ADMIN_RESTRICTIONS_<监听名>=ON,禁止通过lsnrctl SET ...在运行期修改监听参数(修改该参数后须lsnrctl reload生效);② 来源白名单:监听所在 Oracle Home 的sqlnet.ora配置TCP.VALIDNODE_CHECKING=YES+TCP.INVITED_NODES(合法节点清单,IPv4 支持通配符、IPv6 支持 CIDR;TCP.EXCLUDED_NODES的优先级低于INVITED_NODES),RAC 环境须在 Grid Home 的sqlnet.ora配置;③ 传输加密:启用原生网络加密(Native Network Encryption)或 TCPS(TLS)监听端点任一——SQLNET.ENCRYPTION_SERVER/SQLNET.CRYPTO_CHECKSUM_SERVER默认值为accepted(即不强制),须改为required并显式限定算法(19c 中AES256/AES192/AES128为现行算法,3DES/DES/RC4 与 MD5 已弃用;校验和建议 SHA256/384/512)。SQLNET.*参数写在sqlnet.ora,不在v$parameter中、show parameter查询不到,取证以配置文件与lsnrctl status输出为准。远程管理一律经堡垒机;管理终端地址与白名单清单须一致。验证方法:
listener.ora/sqlnet.ora配置截图、lsnrctl status(含 TCPS 端点(PROTOCOL=tcps)或监听状态正常)、从非授权地址连接被拒的实测记录、客户端与服务端加密协商实测(V$SESSION_CONNECT_INFO.NETWORK_SERVICE_BANNER显示加密套件)、堡垒机纳管清单。
远程管理鉴别信息明文传输(未配置 TCPS 或原生网络加密 required)、监听 1521 端口对办公终端区或互联网全开放且无白名单时,按《高风险判定指引》可直接判高风险;网络加密保留默认 accepted 仅表示"可协商",不构成传输加密符合。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
# SQLNET.* 参数不在 v$parameter 中,须直接取证配置文件与监听
cat $ORACLE_HOME/network/admin/sqlnet.ora
cat $ORACLE_HOME/network/admin/listener.ora
lsnrctl status
lsnrctl status | grep -i tcps # TCPS 端点为加密直接证据
示例输出(节选)
$ cat $ORACLE_HOME/network/admin/listener.ora
ADMIN_RESTRICTIONS_LISTENER = ON
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT = 1521))))
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ENCRYPTION_SERVER = required
SQLNET.CRYPTO_CHECKSUM_SERVER = required
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256, SHA384, SHA512)
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES = (192.168.10.10, 192.168.10.11)
加固操作(均为变更类:改 sqlnet.ora/listener.ora 后须 lsnrctl reload;required 生效前须确认全部客户端支持加密,否则业务立即中断,建议先灰度部分客户端)
# $ORACLE_HOME/network/admin/listener.ora
ADMIN_RESTRICTIONS_LISTENER = ON # 禁止运行期 SET 修改监听参数
# $ORACLE_HOME/network/admin/sqlnet.ora(服务端)
SQLNET.ENCRYPTION_SERVER = required
SQLNET.CRYPTO_CHECKSUM_SERVER = required
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256, SHA384, SHA512)
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12 # 最低口令版本,阻断老旧弱认证协议
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES = (192.168.10.10, 192.168.10.11, 192.168.20.0/24)
lsnrctl reload # 重新加载监听配置(白名单与 ADMIN_RESTRICTIONS 生效)
说明:TCPS 方案须为监听配置 PKCS12 钱包并在
listener.ora增加(PROTOCOL=tcps)端点,适合客户端固定且能分发证书的环境;原生网络加密无需证书、配置面小,两者任一满足即可(与配套测评口径一致)。预期现象:
lsnrctl status正常且(如部署 TCPS)含 tcps 端点;从白名单外地址发起的连接被监听直接拒绝;客户端会话的NETWORK_SERVICE_BANNER显示 AES 加密与 SHA 校验已启用;lsnrctl set log_status off等运行期修改被拒绝。
06 审计(传统审计与统一审计)
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)(启用安全审计、覆盖每个用户和重要用户行为及重要安全事件、审计记录保护与留存、审计进程保护)
加固要点:先判定审计形态再加固:
select value from v$option where parameter='Unified Auditing';为 TRUE 表示已启用纯统一审计——此时audit_trail参数与DBA_STMT_AUDIT_OPTS等传统审计视图均不再生效,取证改查UNIFIED_AUDIT_TRAIL(记录落在 AUDSYS 模式专表,仅允许插入)。12c~19c 默认为混合模式,传统审计与统一审计并存:传统审计用AUDIT语句+audit_trail参数(静态参数,取值 none/os/db/db,extended/xml/xml,extended;默认none,DBCA 建库为db,修改需重启);统一审计用CREATE AUDIT POLICY/AUDIT POLICY。官方预定义策略:ORA_SECURECONFIG(覆盖 CREATE/ALTER/DROP USER、ALTER SYSTEM、GRANT ANY、CREATE DIRECTORY 等安全配置类操作)与ORA_LOGON_FAILURES(失败登录)在新建库中默认启用,升级库不自动启用,升级环境须显式AUDIT POLICY启用。特权操作兜底:AUDIT_SYS_OPERATIONS记录 SYSDBA/SYSOPER 等管理会话的顶层语句(11g 默认 FALSE、12c 起默认 TRUE,静态参数;纯统一审计下该参数失效、管理用户活动被强制记录于UNIFIED_AUDIT_TRAIL)。审计留存不少于 6 个月、定期备份;审计清理用DBMS_AUDIT_MANAGEMENT(INIT_CLEANUP→SET_LAST_ARCHIVE_TIMESTAMP→CLEAN_AUDIT_TRAIL/CREATE_PURGE_JOB),禁止直接 truncate 审计表。21c 起传统审计语句(AUDIT传统语法)官方已标记弃用,新项目直接建统一审计策略。验证方法:
audit_trail/audit_sys_operations参数回显、v$option统一审计状态、审计策略清单(AUDIT_UNIFIED_ENABLED_POLICIES或DBA_STMT_AUDIT_OPTS/DBA_PRIV_AUDIT_OPTS)、审计记录样例(含时间、用户、操作、结果、来源)、留存周期与备份记录、用系统管理员账户尝试删除审计记录被拒的说明。
audit_trail=none 且统一审计未启用(v$option 为 FALSE)、审计记录可由系统管理员自行删除、留存不足 6 个月时,按高风险线索记录。注意:audit_trail 为静态参数,现场测评只做查询取证,不在业务时段执行 alter system set audit_trail=...;统一审计启用后传统审计视图与参数失效,判定时须先确认审计形态再选证据源。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
show parameter audit_trail
show parameter audit_sys_operations
select value from v$option where parameter = 'Unified Auditing';
select policy_name, enabled_option, entity_name, success, failure from audit_unified_enabled_policies; -- 统一审计已启用策略
select * from dba_stmt_audit_opts; -- 传统审计语句审计项(统一审计环境下为空属正常)
select * from dba_priv_audit_opts;
select dbusername, action_name, event_timestamp from unified_audit_trail where rownum <= 5;
select * from sys.aud$ where rownum <= 3; -- 传统审计 audit_trail=db 的落表
show parameter audit_file_dest
示例输出(节选)
SQL> show parameter audit_trail
NAME TYPE VALUE
----------------- ------- -------
audit_trail string DB
SQL> select value from v$option where parameter = 'Unified Auditing';
VALUE
---------
FALSE
加固操作(均为变更类;audit_trail/audit_sys_operations 为静态参数,须重启实例,严格安排维护窗口)
-- 传统审计(11g/未启用统一审计的环境)
alter system set audit_trail = db, extended scope = spfile; -- 记录 SQL 文本与绑定变量,重启生效
alter system set audit_sys_operations = true scope = spfile; -- SYSDBA/SYSOPER 顶层语句审计(11g 须显式开启)
audit session whenever not successful; -- 失败登录
audit create user, alter user, drop user by access;
audit alter system by access;
audit create profile, alter profile, drop profile by access;
-- 统一审计(12c+;升级库须显式启用官方预定义策略,新建库已默认启用)
audit policy ora_secureconfig;
audit policy ora_logon_failures whenever not successful;
-- 自定义策略:对敏感表的 DML 全量审计(语法与官方预定义策略一致)
create audit policy sec_app_dml
actions select on appowner.t_order,
update on appowner.t_customer;
audit policy sec_app_dml;
# 启用纯统一审计(12c~19c:重新链接二进制,属重大变更,须维护窗口+回滚预案;21c 起默认启用无需本步)
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
-- 审计留存与清理(DBMS_AUDIT_MANAGEMENT;统一审计类型下 INIT_CLEANUP 会报 ORA-46250 属正常)
begin
dbms_audit_mgmt.set_last_archive_timestamp(
audit_trail_type => dbms_audit_mgmt.audit_trail_aud_std,
last_archive_time => systimestamp - interval '180' day);
end;
/
begin
dbms_audit_mgmt.clean_audit_trail(
audit_trail_type => dbms_audit_mgmt.audit_trail_aud_std,
use_last_arch_timestamp => true);
end;
/
说明:审计清理前先将过期记录导出归档(留存 ≥6 个月的口径);
audit_trail=os/xml模式下记录落在audit_file_dest目录,须核查目录权限并纳入日志平台集中采集;统一审计下清理常量改用dbms_audit_mgmt.audit_trail_unified。预期现象:审计开启且有真实记录样例;失败登录、账户/权限变更、敏感表 DML 均可查到审计记录;清理作业仅删除超过留存期的记录;审计目录/表权限仅审计管理员可管理。
07 数据加密(TDE 与应用层加密)
对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性 b)(重要业务数据和鉴别信息采用密码技术保证存储过程的保密性)、8.1.4.7 数据完整性 b)
加固要点:静态数据加密首选 TDE(Transparent Data Encryption,透明数据加密):对表空间或敏感列加密,落盘数据文件、redo 中的数据均被加密(官方口径),并能加密备份文件。TDE 属 Oracle 企业版 + Advanced Security 选件能力,标准版不可用——未采购选件的现场按磁盘加密(存储层/主机层 LUKS 等)或应用层加密作为替代措施如实认定。TDE 密钥保存在数据库外部的密钥库(Keystore/TDE Wallet,口令保护/自动登录/本地自动登录三种类型),18c 起推荐用
WALLET_ROOT+TDE_CONFIGURATION参数定位密钥库(替代 12c 的SQLNET.ENCRYPTION_WALLET_LOCATION,后者已在 18c 弃用),密钥管理用ADMINISTER KEY MANAGEMENT语句(需ADMINISTER KEY MANAGEMENT系统权限或 SYSKM 管理权限);表空间加密默认算法 AES128、列加密默认 AES192,可显式指定 AES256。应用层加密可用DBMS_CRYPTO包实现字段级加密。传输侧加密见 05 节。验证方法:
DBA_TABLESPACES.ENCRYPTED与V$ENCRYPTED_TABLESPACES加密算法回显、WALLET_ROOT/TDE_CONFIGURATION参数回显、密钥库文件及其备份位置与权限、许可证明(EE + Advanced Security 选件)或磁盘加密/应用层加密的替代措施证据、密钥口令的保管制度(口令与密钥库分离存放)。
承载鉴别信息与核心敏感数据的表空间全程明文存储且无任何替代加密措施时,按高风险线索记录;启用 TDE 后密钥库口令丢失或未做密钥库备份,加密数据将不可恢复——密钥库备份(WITH BACKUP)与口令托管须与 TDE 启用同步完成,否则按可用性风险记录。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select tablespace_name, status, encrypted from dba_tablespaces order by tablespace_name;
select t.name, e.encryptionalg, e.encryptedts
from v$encrypted_tablespaces e, v$tablespace t
where t.ts# = e.ts#;
show parameter wallet_root -- 18c+(无值表示未采用新密钥库框架)
show parameter tde_configuration
加固操作(属变更类,且依赖 EE+Advanced Security 选件;先测试环境验证再生产窗口执行,示例为 19c 口径)
-- 1. 指定密钥库根目录(静态参数,需重启;密钥库目录应与数据文件分盘并限制 OS 权限)
alter system set wallet_root = '/u01/app/oracle/wallet' scope = spfile;
alter system set tde_configuration = "keystore_configuration=file" scope = both;
-- 2. 创建并打开口令保护密钥库,生成主加密密钥(WITH BACKUP 为强制子句,变更前自动备份密钥库)
administer key management create keystore identified by "Keystore#2026";
administer key management set keystore open identified by "Keystore#2026";
administer key management set key identified by "Keystore#2026" with backup;
-- 3. 创建自动登录密钥库(重启后无需人工开库;更严格的场景用 LOCAL AUTO_LOGIN)
administer key management create auto_login keystore from keystore identified by "Keystore#2026";
-- 4. 加密表空间(新建敏感数据表空间,显式指定 AES256)
create tablespace enc_ts datafile '/u01/app/oracle/oradata/orcl/enc_ts01.dbf' size 1g
encryption using 'aes256' default storage(encrypt);
说明:列级加密用
alter table t modify (credit_card encrypt);(示例,参数与NO SALT/SALT选项详见对应版本 Advanced Security Guide);已有明文表空间的在线转换须评估停机与空间开销;DBMS_CRYPTO包的EXECUTE权限按需授予业务账户并纳入权限矩阵(见 04 节)。预期现象:
dba_tablespaces.encrypted为 YES、v$encrypted_tablespaces显示 AES256 等算法;密钥库文件(ewallet.p12与cwallet.sso)存在且已备份;OS 层直接读取数据文件看不到明文;密钥口令与密钥库分人保管并留痕。
08 数据字典保护与高危参数核查
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 e)(重要主体设置安全标记等数据字典/元数据保护口径,结合系统权限最小化判定)
加固要点:数据字典保护核查四项:①
O7_DICTIONARY_ACCESSIBILITY保持 FALSE(默认值)——为 TRUE 时SELECT ANY TABLE等ANY系统权限可访问 SYS 模式数据字典,属高危配置;该参数 12.2 起官方弃用、19c 起 desupport(19c 库show parameter查询无结果属正常,无此风险面),现行版本字典保护改由SELECT ANY DICTIONARY系统权限(不随GRANT ALL PRIVILEGES传播)与SELECT_CATALOG_ROLE/EXECUTE_CATALOG_ROLE角色精细管控;②REMOTE_LOGIN_PASSWORDFILE核查为EXCLUSIVE(默认值;NONE禁用口令文件远程管理、SHARED多库共用,均为静态参数),V$PWFILE_USERS中持有 SYSDBA/SYSOPER 的账户最小化;③ 文件读写口径:UTL_FILE_DIR参数 12.2 起官方弃用,一律使用 DIRECTORY 对象并按账户授予READ/WRITE(CREATE DIRECTORY/DROP DIRECTORY已纳入ORA_SECURECONFIG审计策略,见 06 节),清理无需的目录对象授权;④ 隐含参数(_前缀)无公开官方文档支撑,不作为常规加固对象、不纳入测评要求,改动须有 Oracle 官方依据并记录。验证方法:
show parameter o7_dictionary_accessibility回显(≤12.2 环境)或版本说明(19c+)、REMOTE_LOGIN_PASSWORDFILE与V$PWFILE_USERS回显、DBA_DIRECTORIES与目录授权清单、SELECT ANY DICTIONARY授予人清单。
核查方法
show parameter o7_dictionary_accessibility -- ≤12.2 环境核查;19c 无该参数
show parameter remote_login_passwordfile
select * from v$pwfile_users;
select * from dba_directories;
select grantee, privilege, owner, table_name
from dba_tab_privs
where table_name in (select directory_name from dba_directories) order by grantee;
select grantee from dba_sys_privs where privilege = 'SELECT ANY DICTIONARY';
示例输出(节选)
SQL> show parameter remote_login_passwordfile
NAME TYPE VALUE
-------------------------- ------- ---------
remote_login_passwordfile string EXCLUSIVE
SQL> select username, sysdba, sysoper from v$pwfile_users;
USERNAME SYSDB SYSOP
---------- ----- -----
SYS TRUE TRUE
加固操作(参数均为静态,修改须重启实例,属变更类)
-- ① 发现 O7_DICTIONARY_ACCESSIBILITY=TRUE 时(≤12.2 环境才存在此配置面)
alter system set o7_dictionary_accessibility = false scope = spfile; -- 重启生效
-- ② 无远程口令文件管理需求时关闭远程 SYSDBA 口令登录(保留 OS 组本机认证通道,见 03 节恢复通道说明)
alter system set remote_login_passwordfile = none scope = spfile; -- 重启生效;改回需同步口令文件
-- ③ 目录对象收敛:清理无需的授权与目录对象
revoke read, write on directory data_pump_dir from appuser;
drop directory old_export_dir; -- 确认无作业引用后执行
说明:关闭
remote_login_passwordfile前必须确认本机操作系统组认证可用,否则管理通道中断;SELECT ANY DICTIONARY仅授予审计管理员等确需账户(见 04 节)。预期现象:≤12.2 环境
o7_dictionary_accessibility为 FALSE;remote_login_passwordfile与口令文件用途一致、v$pwfile_users账户最小化;目录对象清单与授权有台账、无全员可读写目录。
09 备份恢复(RMAN)
对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)(本地备份恢复、异地实时备份、热冗余)
加固要点:建立并实际执行备份策略:生产库运行于归档模式(
v$database.LOG_MODE=ARCHIVELOG),RMAN 定时全量+增量+归档日志备份,备份文件与主数据分盘分机并异地留存;控制文件自动备份开启(CONFIGURE CONTROLFILE AUTOBACKUP ON——COMPATIBLE≥12.2 的 CDB/单实例库默认 ON,旧环境须显式配置并用SHOW ALL核验);三级系统异地实时备份或热冗余用 Data Guard(备库日志应用状态)或同等手段,并每半年至少一次恢复演练。仅有备份脚本而无恢复验证不判符合;备份文件同样要限制访问权限。验证方法:
v$database.LOG_MODE回显、v$archive_dest归档目的地、RMANSHOW ALL配置、v$rman_backup_job_details最近备份作业状态(COMPLETED)、备份产物清单与异地存放证据、Data Guard 状态或异地备份链路说明、恢复演练记录(时间、耗时、一致性校验)。
核心业务库无任何备份、备份与主数据同机同盘、或从未做过恢复演练导致备份实际不可用时,按《高风险判定指引》可直接判高风险;仅开启归档模式而从未执行过备份作业,视同无备份。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
rman target /
RMAN> SHOW ALL; -- 核查 CONFIGURE CONTROLFILE AUTOBACKUP 等关键配置(只读)
select name, log_mode from v$database;
select dest_id, status, destination from v$archive_dest where status = 'VALID';
select * from (select session_key, start_time, status, input_type
from v$rman_backup_job_details order by start_time desc) where rownum <= 5;
示例输出(节选)
RMAN> SHOW ALL
使用目标数据库控制文件替代恢复目录
RMAN 配置参数为:
CONFIGURE CONTROLFILE AUTOBACKUP ON; -- 期望 ON
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
加固操作(RMAN 配置与备份执行属配置变更,建议维护窗口)
rman target /
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; -- 首次验证性全备
说明:归档模式未开启的库须按官方流程重启到 mount 状态开启
ARCHIVELOG(重大变更,评估空间与窗口);异地实时备份用 Data Guard(备库与主库日志同步状态须有监控与巡检记录);恢复演练记录须包含恢复耗时与数据一致性校验结果。预期现象:
LOG_MODE=ARCHIVELOG;SHOW ALL中 CONTROLFILE AUTOBACKUP 为 ON;最近备份作业状态 COMPLETED 且产物异地留存;近半年内有恢复演练记录。
10 剩余信息保护(口令历史、回收站与精细审计)
对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)(鉴别信息与敏感数据所在存储空间释放或重新分配前得到完全清除)
加固要点:数据库侧三件事:① 口令历史防重用:
PASSWORD_REUSE_MAX(次数)与PASSWORD_REUSE_TIME(天数)两者均设置时须同时满足、均为 UNLIMITED 时视为允许重用(官方规则)——至少配置其一(建议PASSWORD_REUSE_MAX 5或PASSWORD_REUSE_TIME 365),确保旧口令在约束期内不可复用;② 回收站清理:被 DROP 的敏感表仍以回收站对象形式占存数据,介质/空间再分配前对敏感对象执行PURGE(PURGE RECYCLEBIN清当前用户回收站,PURGE DBA_RECYCLEBIN需 SYSDBA 或PURGE DBA_RECYCLEBIN系统权限,操作不可恢复须先确认);③ 精细审计(可选增强):对敏感列用DBMS_FGA建立条件触发审计,留存敏感数据访问痕迹辅助溯源。表空间删除、数据文件下线等存储空间释放动作与介质销毁制度衔接(涉密介质按介质管理制度销毁并留痕)。验证方法:
DBA_PROFILES中PASSWORD_REUSE_*配置与旧口令重用被拒实测(ORA-28007: the password cannot be reused)、回收站对象清单与清理记录、FGA 审计记录样例(可选)、介质销毁/表空间下线的管理制度与记录。
核查方法
select profile, resource_name, limit from dba_profiles
where resource_name in ('PASSWORD_REUSE_TIME','PASSWORD_REUSE_MAX');
select owner, object_name, original_name, type, droptime
from dba_recyclebin order by droptime; -- 敏感表是否滞留回收站
加固操作(ALTER PROFILE 属变更类;PURGE 不可恢复,执行前必须确认)
alter profile default limit password_reuse_max 5 password_reuse_time unlimited;
-- 或同时设置:password_reuse_time 365 password_reuse_max 5(两者须同时满足,约束更严)
purge dba_recyclebin; -- 清理全库回收站(SYSDBA 或 PURGE DBA_RECYCLEBIN 权限);单对象用 purge table <原表名>;
-- 可选:FGA 对敏感列的访问审计(与 06 节审计互补)
begin
dbms_fga.add_policy(
object_schema => 'APPOWNER',
object_name => 'T_ORDER',
policy_name => 'FGA_AMOUNT',
audit_column => 'AMOUNT',
statement_types => 'SELECT,UPDATE');
end;
/
- 预期现象:口令历史约束生效(旧口令重用被拒);敏感表删除后回收站及时清理、空间可再分配;FGA 策略按需部署并有审计记录。
11 版本支持与生命周期
对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 e)(漏洞修补能力依赖厂商补丁源,与 00 节联动)
加固要点:核对现场版本在 Oracle 官方 Lifetime Support 政策中的支持状态并纳入台账:按 Oracle 2024 年 11 月更新的支持政策,Oracle Database 19c(长期支持版本)Premier Support 至 2029 年 12 月 31 日、Extended Support 至 2032 年 12 月 31 日(最新日期以官方 Lifetime Support 政策页为准);11gR2、12c 系列均已退出 Premier/Extended Support,仍在运行的须提出升级(优先 19c 长期支持版)与补偿控制建议。停止支持版本拿不到季度 CPU 补丁(00 节),入侵防范 e) 项按不符合处理并跟踪整改计划;多租户、统一审计等新特性仅在 12c+/19c+/21c+ 提供,版本升级计划与 02/06/08 节的版本差异整改联动。
验证方法:
v$version与补丁台账、Oracle Lifetime Support 政策页对照记录、升级立项/整改计划、补偿控制措施说明。
生产库运行已停止官方支持的版本(11gR2/12c 系列)且无升级计划与补偿控制时,按《高风险判定指引》以「无法获取安全补丁、已知漏洞不可修复」记录为高风险线索,限期整改。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select * from v$version;
对照 Oracle 官方 Lifetime Support 政策页(https://www.oracle.com/support/lifetime-support/ )确认支持期,截图留痕。
加固操作:无直接配置项;输出《版本支持状态与升级计划》台账,对已停止支持版本明确升级窗口、过渡期补偿控制(收紧白名单、加强审计与监控、季度漏洞扫描)。
- 预期现象:版本在支持期内或有已批准的升级/补偿计划;台账与官方政策页对照留痕。
参考依据
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境各控制点(数据库管理系统自身安全);涉客户端与服务端通信时另含 8.1.2 安全通信网络):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(测评对象边界认定、单元测评实施与结果判定:符合/部分符合/不符合/不适用):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》,可在全国标准信息公共服务平台检索:http://openstd.samr.gov.cn/bzgk/gb/
- 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准)——高风险情形判定口径,站内对照表:22、高风险判定指引与加固对照表
- Oracle Critical Patch Updates, Security Alerts and Bulletins:https://www.oracle.com/security-alerts/
- Oracle Lifetime Support 政策(19c Premier/Extended Support 期):https://www.oracle.com/support/lifetime-support/
- Oracle Database 19c Security Guide(默认账户与口令策略:using-password-management-policy、口令校验函数:managing-complexity-passwords、安装加固导则:guidelines-securing-database-installation-and-configuration、管理权限分立:managing-administrative-privileges、PUBLIC 授权:grants-and-revokes-privileges-and-public-role)
- Oracle Database 19c Security Guide·审计(预定义统一审计策略:auditing-activities-predefined-unified-audit-policies、统一审计踪迹管理:managing-unified-audit-trail、审计清理:purging-audit-trail-records、纯统一审计启用排障:troubleshooting-for-audit)
- Oracle Database 19c Reference(初始化参数与视图:AUDIT_TRAIL、AUDIT_SYS_OPERATIONS、REMOTE_LOGIN_PASSWORDFILE、RESOURCE_LIMIT、WALLET_ROOT、DBA_USERS_WITH_DEFPWD、DBA_REGISTRY_SQLPATCH、UNIFIED_AUDIT_TRAIL、DBA_USERS、19c desupport 清单:release-changes)
- Oracle Database 19c Net Services Reference(sqlnet.ora 参数:parameters-for-the-sqlnet.ora、listener.ora 参数:oracle-net-listener-parameters-in-listener-ora)
- Oracle Database 19c Advanced Security Guide(TDE):introduction-to-transparent-data-encryption
- Oracle Database 19c PL/SQL Packages and Types Reference(DBMS_AUDIT_MGMT、DBMS_QOPATCH、DBMS_FGA)
- Oracle Database 19c Backup and Recovery User’s Guide / RMAN Reference(configuring-rman-client-basic、CONFIGURE)
- Oracle Database 19c 安装文档(OS 组与默认账户:operating-system-groups-created-during-oracle-database-installation、understanding-operating-system-privileges-groups、oracle-database-system-privileges-accounts-and-passwords)
- Oracle SQL Language Reference(CREATE USER(19c)、CREATE PROFILE(18c)、PURGE(26ai)、AUDIT 传统审计弃用(21c))
- 历史版本参数口径(O7_DICTIONARY_ACCESSIBILITY(18c Reference)、UTL_FILE_DIR(12.2 Reference))
- 命令核验说明:本文命令与参数已于 2026-09 对照 Oracle 官方文档(docs.oracle.com 19c Database Reference / Security Guide / Net Services Reference / Advanced Security Guide / PL/SQL Packages and Types Reference / Backup and Recovery,及 www.oracle.com 的 security-alerts 与 Lifetime Support 政策页)逐条核验。11g/12c/19c/21c 差异要点:①
O7_DICTIONARY_ACCESSIBILITY:11g/12.1 默认 FALSE 且可设置,12.2 弃用,19c 起 desupport(19c 库show parameter查询无结果属正常,非故障);②AUDIT_SYS_OPERATIONS:11g 默认 FALSE、12c 起默认 TRUE,均为静态参数;③audit_trail默认none(DBCA 建库为db),为静态参数须重启;纯统一审计(v$option为 TRUE)下audit_trail与传统审计视图均失效,12c~19c 需重链接二进制(uniaud_on)启用纯统一审计,21c 起统一审计默认启用且传统AUDIT语句弃用;④RESOURCE_LIMIT19c 默认 TRUE,低版本环境以show parameter核查为准,IDLE_TIME生效依赖其为 TRUE;⑤ 口令校验函数:VERIFY_FUNCTION_11G已弃用,12c+ 供应ORA12C_VERIFY_FUNCTION/ORA12C_STRONG_VERIFY_FUNCTION/ORA12C_STIG_VERIFY_FUNCTION(catpvf.sql安装,不作用于 SYS);⑥DBA_USERS_WITH_DEFPWD各版本均有(19c RU 19.32+ 增加 PRODUCT 列)、DBA_REGISTRY_SQLPATCH/DBMS_QOPATCH为 12c+ 能力(11g 仅opatch lsinventory),INACTIVE_ACCOUNT_TIME为 19c 新增 Profile 参数;⑦WALLET_ROOT/TDE_CONFIGURATION为 18c 起密钥库框架(替代 12c 的SQLNET.ENCRYPTION_WALLET_LOCATION,后者 18c 弃用),TDE 属企业版 Advanced Security 选件;⑧ RMAN 控制文件自动备份在COMPATIBLE≥12.2 时默认 ON,旧环境须显式CONFIGURE CONTROLFILE AUTOBACKUP ON;⑨ 19c 支持期:Premier Support 至 2029-12-31、Extended Support 至 2032-12-31(Oracle 2024-11 更新口径,以官方页面为准)。未能核验的项已随文注明(如SEC_MAX_FAILED_LOGIN_ATTEMPTS等网络层认证限制参数未收录,现场以对应版本文档为准)。
关联文章
- 本板块相关篇:12、MySQL数据库加固、08、达梦数据库加固、09、MongoDB数据库加固、14、PostgreSQL数据库加固、15、KingbaseES人大金仓数据库加固、21、Web中间件安全加固
- 配套测评:01、Oracle数据库测评
- 测评命令单:02-Oracle测评命令
- 板块目录:系统管理软件·平台
- 数据库服务器 Linux 主机层加固(配套):11、Linux操作系统加固手册
- 通用加固方案:17、加固方案总纲
- 取证记录模板:16、安全评估加固记录表3.0
- 高风险判定口径:22、高风险判定指引与加固对照表