Oracle系列---【Oracle中密码的策略如何设置】

在 Oracle 数据库中,profile 是一个与用户关联的配置集合,用于控制用户账户的资源使用情况和密码策略。例如,profile 可以定义用户的密码过期时间、账户锁定策略、并发会话数限制等。

简单来说,profile 是一组规则的集合,这些规则可以应用到一个或多个数据库用户,从而限制或管理他们的行为。


1. profile 的作用

每个数据库用户都可以被分配到一个特定的 profile,这些 profile 决定了用户使用数据库资源的限制以及密码策略。例如:

  • 资源限制:控制用户的 CPU 时间、会话数、I/O 操作等。
  • 密码策略:设置密码的有效期、复杂性要求、失败登录后的锁定策略等。

2. 查询语句中 profile 的含义

在以下查询中:

sql 复制代码
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN ('PASSWORD_LIFE_TIME', 'FAILED_LOGIN_ATTEMPTS', 'PASSWORD_LOCK_TIME');
  • profile :表示某个用户使用的配置集合名称。例如,可能的值包括 DEFAULT(系统默认的配置)或自定义的 profile 名称。
  • resource_name :表示资源或密码策略的名称。例如:
    • PASSWORD_LIFE_TIME:密码的有效期。
    • FAILED_LOGIN_ATTEMPTS:允许的最大登录失败次数。
    • PASSWORD_LOCK_TIME:账户被锁定后的解锁时间。
  • limit :表示对应的资源或策略的具体限制值。例如:
    • PASSWORD_LIFE_TIME 的值可以是 30(天数)或 UNLIMITED
    • FAILED_LOGIN_ATTEMPTS 的值可以是 5(允许的失败次数)。
    • PASSWORD_LOCK_TIME 的值可以是 1(1天)或 UNLIMITED

3. DEFAULT Profile

Oracle 默认提供一个名为 DEFAULTprofile,系统中所有新创建的用户都会自动分配到这个 profile,除非明确指定了其他 profile

在默认配置下:

  • PASSWORD_LIFE_TIME :通常为 UNLIMITED(密码不会过期)或者根据安全策略调整。
  • FAILED_LOGIN_ATTEMPTS :通常默认为 10(超过 10 次失败会锁定用户账户)。
  • PASSWORD_LOCK_TIME :通常为 1(1天后解锁),但也可能是 UNLIMITED(手动解锁)。

要查看 DEFAULT profile 的配置,可以执行以下查询:

sql 复制代码
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = 'DEFAULT';

4. 用户与 profile 的关联

每个数据库用户都被分配到一个 profile,可以通过以下查询查看用户所属的 profile

sql 复制代码
SELECT username, profile
FROM dba_users;

5. 管理 profile

a. 创建自定义 Profile

如果需要创建一个自定义的 profile,可以使用以下命令:

sql 复制代码
CREATE PROFILE my_profile LIMIT
  PASSWORD_LIFE_TIME 30
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1;

这会创建一个名为 my_profile 的配置,设置以下限制:

  • 密码有效期为 30 天。
  • 登录失败 5 次后账户会被锁定。
  • 锁定账号 1 天后自动解锁。
b. 分配 Profile 给用户

可以通过以下命令将用户分配到指定的 profile

sql 复制代码
ALTER USER username PROFILE my_profile;
c. 修改 Profile

如果需要调整现有 profile 的配置,可以使用以下命令:

sql 复制代码
ALTER PROFILE my_profile LIMIT
  PASSWORD_LIFE_TIME 60;

这会将 my_profile 的密码有效期改为 60 天。

d. 删除 Profile

只有当没有用户使用一个 profile 时,才能删除它。删除一个 profile 的命令如下:

sql 复制代码
DROP PROFILE my_profile CASCADE;

CASCADE 表示同时删除与该 profile 相关联的所有限制。


6. 示例输出解释

假设执行以下查询:

sql 复制代码
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN ('PASSWORD_LIFE_TIME', 'FAILED_LOGIN_ATTEMPTS', 'PASSWORD_LOCK_TIME');

可能的结果为:

PROFILE RESOURCE_NAME LIMIT
DEFAULT PASSWORD_LIFE_TIME UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS 10
DEFAULT PASSWORD_LOCK_TIME 1
MY_PROFILE PASSWORD_LIFE_TIME 30
MY_PROFILE FAILED_LOGIN_ATTEMPTS 5
MY_PROFILE PASSWORD_LOCK_TIME 1

解释

  • DEFAULT 是系统默认配置,密码不会过期(UNLIMITED),登录失败 10 次会锁定账户,锁定 1 天后自动解锁。
  • MY_PROFILE 是自定义的 profile,密码有效期为 30 天,登录失败 5 次后锁定账户,账户 1 天后解锁。

7. 总结

  • profile 是用户的一组配置规则,用于管理数据库资源使用和密码策略。
  • 每个用户可以分配到一个 profile,如果未指定,则默认使用 DEFAULT profile。
  • 通过查询 DBA_PROFILESDBA_USERS,可以查看 profile 的配置和用户分配情况。
  • 可以创建、修改或删除自定义 profile,以满足特定的安全和资源管理需求。

如果有进一步的问题,请随时告诉我!

相关推荐
不羁。。19 分钟前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
yangchanghua1112 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance2 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai2 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂6 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.7 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚9 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队10 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术