大数跨境

OceanBase Oracle模式|Profile 登录失败锁定配置指南

OceanBase Oracle模式|Profile 登录失败锁定配置指南 瑞蓝创软件
2026-07-14
17
导读:筑牢数据库安全防线
图片

作者简介樊宏伟瑞蓝创数据库工程师















原创内容未经授权不得随意使用,转载请联系小编并注明来源

官方来源:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218720

适用范围:OceanBase V4.2.1 及以上企业版 Oracle 模式租户

一、功能概述

OceanBase 数据库通过 User Profile(用户配置文件)实现登录失败锁定功能,核心目的是防止暴力密码破解攻击,提升数据库安全性。

  • 当用户连续登录失败次数达到阈值时,系统会自动锁定该用户
  • 锁定时间可自定义,到期后自动解锁,也可由管理员手动提前解锁
  • 所有策略基于 Profile 统一管理,可批量应用给多个用户

二、核心参数说明

Profile 通过4个密码相关参数管控登录与密码策略,前两项为登录锁定核心参数:

参数名
含义
单位
默认值(DEFAULT Profile)
FAILED_LOGIN_ATTEMPTS
连续登录失败的最大次数,达到后锁定用户
UNLIMITED(无限制)
PASSWORD_LOCK_TIME
用户被锁定的时长
UNLIMITED(永久锁定)
PASSWORD_LIFE_TIME
密码的有效使用天数
UNLIMITED(永久有效)
PASSWORD_GRACE_TIME
密码过期后的宽限期,期间仍可登录
UNLIMITED(无宽限期)

重要说明

  1. 用户未指定Profile时,默认继承 DEFAULT Profile
  2. 默认Profile全部参数为 UNLIMITED,无登录锁定、密码过期策略,生产环境必须修改;
  3. 参数支持三种赋值:整数、UNLIMITED(无限制)、DEFAULT(继承默认配置)。

三、标准操作步骤

步骤1. 前提条件

  • 使用SYS等管理员账号登录Oracle模式租户;
  • 创建Profile需要 CREATE PROFILE 系统权限;
  • 解锁账号需要 ALTER USER 系统权限。

步骤2. 创建自定义登录锁定策略 Profile

-- 语法模板
CREATE PROFILE "profile_name"LIMIT
FAILED_LOGIN_ATTEMPTS {integer | UNLIMITED | DEFAULT}
PASSWORD_LOCK_TIME {integer | UNLIMITED | DEFAULT}
  [PASSWORD_LIFE_TIME {integer | UNLIMITED | DEFAULT}]
  [PASSWORD_GRACE_TIME {integer | UNLIMITED | DEFAULT}];

-- 示例1:连续失败5次,自动锁定1天
CREATE PROFILE "sec_profile_5_1"LIMIT
FAILED_LOGIN_ATTEMPTS5
PASSWORD_LOCK_TIME1;

-- 示例2:连续失败3次,永久锁定账号
CREATE PROFILE "sec_profile_3_perm"LIMIT
FAILED_LOGIN_ATTEMPTS3
PASSWORD_LOCK_TIMEUNLIMITED;

步骤3. 校验Profile配置

-- 查询全部密码类Profile配置
SELECT PROFILE, RESOURCE_NAME, LIMIT 
FROM DBA_PROFILES 
WHERE RESOURCE_TYPE = 'PASSWORD'
ORDER BY PROFILE, RESOURCE_NAME;

-- 单独查看指定Profile详情
SELECT * FROM DBA_PROFILES 
WHERE PROFILE = 'SEC_PROFILE_5_1' AND RESOURCE_TYPE = 'PASSWORD';

步骤4. 将Profile绑定给业务用户

方式1:新建用户时直接指定Profile(推荐)

-- 语法模板
CREATEUSER"user_name"IDENTIFIEDBY"password" PROFILE "profile_name";

-- 实操示例
CREATEUSER"app_user"IDENTIFIEDBY"App@20240605" PROFILE "sec_profile_5_1";

-- 授予基础会话权限
GRANTCREATESESSIONCREATETABLETO"app_user";

方式2:给存量用户修改Profile

-- 语法模板
ALTER USER "user_name" PROFILE "profile_name";

-- 实操示例
ALTER USER "old_user" PROFILE "sec_profile_5_1";

> 注意:修改用户Profile仅对后续新会话生效,不影响已建立的长连接。

步骤5. 验证锁定策略生效

  1. 测试账号连续输入错误密码,达到次数阈值;
  2. 再次登录抛出报错:
ERROR 5039 (01007): User locked
  1. 管理员查询失败登录记录:
SELECT USERHOST, FAILED_ATTEMPTS 
FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;

步骤6. 解锁被锁定账号

方式1:自动解锁

等待 PASSWORD_LOCK_TIME 时长到期,账号自动恢复。

方式2:管理员手动解锁(紧急场景)

-- 语法模板
ALTER USER "user_name" ACCOUNT UNLOCK;

-- 示例
ALTER USER "app_user" ACCOUNT UNLOCK;

> 重要限制:已经锁定的账号,修改Profile参数无法自动解锁,必须执行上面语句。

步骤7. 修改已有Profile策略

-- 语法模板
ALTER PROFILE "profile_name"LIMIT
FAILED_LOGIN_ATTEMPTS {new_value}
PASSWORD_LOCK_TIME {new_value};

-- 示例:失败次数改为3次,锁定时长改为7天
ALTER PROFILE "sec_profile_5_1"LIMIT
FAILED_LOGIN_ATTEMPTS3
PASSWORD_LOCK_TIME7;

> 注意:修改Profile只对新会话生效,不会自动解锁已经锁定的用户。

四、生产环境最佳实践

1. 加固默认Profile

关闭无限制策略,统一基线:

ALTER PROFILE "DEFAULT" LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1
  PASSWORD_LIFE_TIME 90
  PASSWORD_GRACE_TIME 7;

2. 分级安全策略

  • 管理员账号:连续失败3次,永久锁定
  • 普通业务账号:连续失败5次,锁定1天
  • 只读账号:连续失败10次,锁定30分钟

3. 定期安全审计

定时查询失败登录视图,及时发现暴力破解行为:

SELECT USERHOST, FAILED_ATTEMPTS 
FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;

4. 权限最小化管控

严格收紧 ALTER USER 权限,仅少量运维管理员拥有账号解锁权限。

五、常见问题排查

问题1:账号已经锁定,修改Profile锁定时长,账号依旧无法自动解锁

原因:Profile配置变更只对未来生效,不处理已经锁定的存量账号

解决:执行 ALTER USER 用户名 ACCOUNT UNLOCK; 手动解锁

问题2:配置 FAILED_LOGIN_ATTEMPTS=5,输错6次才触发锁定

原因:失败计数从0开始,累计5次失败达到阈值,第6次登录才会返回账号锁定报错

问题3:DBA_PROFILES 中看到 PASSWORD_LOCK_TIME 值为 86400000000

原因:该数字是 UNLIMITED 在数据库内部的存储值,属于正常现象,无需处理


六、官方文档链接

    1. CREATE PROFILE 语法:CREATE PROFILE

      https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000222057

    2. CREATE USER 语法:CREATE USER

      https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000222061

    3. MySQL模式登录失败策略:MySQL 模式通过租户级配置项 connection_control_failed_connections_threshold 来控

      https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218724

    4. Oracle模式登录失败策略:Oracle 模式利用 User Profile 实现用户锁定功能

      https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218720


    如果在操作过程中遇到问题,欢迎在评论区留言交流,后续我们会持续分享更多实战运维干货,记得关注不迷路,下次见~

    END


    瑞蓝创 OceanBase OBCP V4 精英训练营

    点击下方图片立即了解详情

    瑞蓝创02.png


    ··


    ·

    ·

    ▼ 点击「阅读原文」,了解更多产品技术文章


    【声明】内容源于网络
    0
    0
    瑞蓝创软件
    专注于企业信息科技战略咨询、数据中心规划及运维、智能化软件产品研发,致力于为金融、能源、电信、制造等行业提供智能的业务永续及流程自动化解决方案。
    内容 54
    粉丝 0
    瑞蓝创软件 专注于企业信息科技战略咨询、数据中心规划及运维、智能化软件产品研发,致力于为金融、能源、电信、制造等行业提供智能的业务永续及流程自动化解决方案。
    总阅读435
    粉丝0
    内容54