Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数

Oracle 的SEC_CASE_SENSITIVE_LOGON 参数

关键版本信息

SEC_CASE_SENSITIVE_LOGON 参数在以下版本中被弃用:

  1. Oracle 12c Release 1 (12.1)

    • 该参数首次被标记为"过时"(obsolete)
    • 但依然保持功能有效
  2. Oracle 18c/19c 及更高版本

    • 参数被完全弃用(deprecated)
    • 虽然仍能查询和设置,但不再影响数据库行为
    • 密码大小写敏感性变为强制启用且不可配置

版本行为对比表

Oracle 版本 参数状态 默认行为 是否可修改
10g及以下 有效 不区分大小写(FALSE)
11g 有效 区分大小写(TRUE)
12.1 过时(Obsolete) 区分大小写 是(但不建议)
12.2+ 弃用(Deprecated) 强制区分大小写
18c/19c/21c 弃用 强制区分大小写

官方文档说明

根据Oracle 19c安全指南:

"As of Oracle Database 12c Release 2, the SEC_CASE_SENSITIVE_LOGON parameter is deprecated. Case-sensitive passwords are always enforced and cannot be disabled."

迁移建议

  1. 升级到12c+的处理方案

    sql 复制代码
    -- 1. 检查现有密码兼容性
    SELECT username FROM dba_users 
    WHERE password_versions NOT LIKE '%12%';
    
    -- 2. 批量重置密码(如需)
    BEGIN
      FOR r IN (SELECT username FROM dba_users WHERE account_status='OPEN') LOOP
        EXECUTE IMMEDIATE 'ALTER USER '||r.username||' IDENTIFIED BY "NewPass123"';
      END LOOP;
    END;
  2. 应用适配要求

    • 确保所有连接字符串使用正确大小写
    • 更新硬编码密码的配置文件
    • 修改自动化的密码管理脚本

替代方案

在12.2+版本中,如需控制认证行为,应考虑:

  1. 使用统一目录服务

    sql 复制代码
    ALTER SYSTEM SET ldap_directory_access = 'PASSWORD';
  2. 配置全局认证模块

    sql 复制代码
    -- 使用Oracle Kerberos适配器
    ALTER SYSTEM SET os_authent_prefix = '' SCOPE=SPFILE;
  3. 实施代理认证

    sql 复制代码
    ALTER USER app_user GRANT CONNECT THROUGH proxy_user;

检查当前版本实际行为的方法

sql 复制代码
-- 方法1:测试密码敏感性(需实际尝试)
DECLARE
  v_count NUMBER;
BEGIN
  BEGIN
    EXECUTE IMMEDIATE 'CREATE USER testuser IDENTIFIED BY "Test123"';
    EXECUTE IMMEDIATE 'GRANT CREATE SESSION TO testuser';
    
    BEGIN
      EXECUTE IMMEDIATE 'CONNECT testuser/test123';
      DBMS_OUTPUT.PUT_LINE('Case-insensitive allowed (unexpected)');
    EXCEPTION
      WHEN OTHERS THEN 
        DBMS_OUTPUT.PUT_LINE('Case-sensitive enforced (expected)');
    END;
    
    EXECUTE IMMEDIATE 'DROP USER testuser';
  EXCEPTION
    WHEN OTHERS THEN 
      DBMS_OUTPUT.PUT_LINE('Setup failed: '||SQLERRM);
  END;
END;
/

-- 方法2:检查参数元数据(12c+)
SELECT name, isdeprecated, description 
FROM v$parameter 
WHERE name = 'sec_case_sensitive_logon';

在Oracle 12.2及更高版本中,即使显示参数存在,密码大小写敏感性也始终强制启用,这是Oracle加强安全体系的重要改进。

相关推荐
GIS数据转换器3 小时前
村镇无人机物流配送与跨域监测一体化平台
大数据·运维·人工智能·科技·无人机
努力进修3 小时前
“数据心脏” 驱动能源自主:国产数据库支撑 Cemsol 实现固井全流程数字化闭环
数据库·人工智能·能源
vHelios3 小时前
SQL不会写?不会找关联表?复杂SQL语句编写逻辑实现思路请查收✉
数据库·sql
倔强的石头1063 小时前
飞牛OS部署Mtab:Docker搭建自托管书签导航并实现远程访问
运维·docker·容器
DB哥讲数据库3 小时前
【ClickHouse安装教程】从零开始部署高性能列式数据库(附ClickHouse安装包)
数据库·clickhouse
TDengine (老段)4 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
jerryinwuhan12 小时前
《系统部署与运维》开篇 课程介绍
运维
小白勇闯网安圈12 小时前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
努力的小雨13 小时前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全
数据库
科技绘图14 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化