Oracle 数据库 Profile 详解

Oracle 数据库 Profile 详解

一 Profile 基本概念

Profile 是 Oracle 数据库中用于管理用户资源和密码策略的重要对象,它是一组命名的资源限制和密码规则的集合。通过 Profile 可以:

  1. 控制用户对系统资源的使用
  2. 实施密码安全策略
  3. 简化用户权限管理

二 Profile 的主要功能

1.1 资源限制功能

参数说明
SESSIONS_PER_USER每个用户的最大并发会话数
CPU_PER_SESSION单个会话可使用的CPU时间(百分之一秒)
CPU_PER_CALL单个SQL调用可使用的CPU时间(百分之一秒)
CONNECT_TIME会话最大连接时间(分钟)
IDLE_TIME会话最大空闲时间(分钟)
LOGICAL_READS_PER_SESSION会话可读取的数据块总数
LOGICAL_READS_PER_CALL单个SQL调用可读取的数据块数
PRIVATE_SGA会话在SGA中可分配的私有空间(KB/MB)
COMPOSITE_LIMIT综合资源限制(基于多个资源的加权计算)

1.2 密码策略功能

参数说明
FAILED_LOGIN_ATTEMPTS允许的连续失败登录次数
PASSWORD_LIFE_TIME密码有效期(天)
PASSWORD_REUSE_TIME密码可重用时间(天)
PASSWORD_REUSE_MAX密码可重用次数
PASSWORD_LOCK_TIME密码锁定时间(天)
PASSWORD_GRACE_TIME密码过期后的宽限期(天)
PASSWORD_VERIFY_FUNCTION密码复杂度验证函数

1.3 用户状态限制

INACTIVE_ACCOUNT_TIME是 Oracle 12c (12.2) 及以上版本引入的一个 Profile 密码参数,用于设置用户账户在不活动(未登录)多长时间后自动被锁定。

参数说明
INACTIVE_ACCOUNT_TIME控制账户因不活动而被自动锁定的时间阈值(天)

三 Profile 管理命令

3.1 创建 Profile

CREATE PROFILE app_profile LIMIT
  SESSIONS_PER_USER 5
  CPU_PER_SESSION 100000
  CONNECT_TIME 480
  IDLE_TIME 30
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LIFE_TIME 90
  PASSWORD_REUSE_TIME 180
  PASSWORD_REUSE_MAX 3
  PASSWORD_LOCK_TIME 1;

3.2 修改 Profile

ALTER PROFILE app_profile LIMIT
  IDLE_TIME 60
  PASSWORD_LIFE_TIME 60;

3.3 删除 Profile

DROP PROFILE app_profile [CASCADE];
-- CASCADE选项会将该profile从已分配的用户上移除

3.4 分配 Profile 给用户

ALTER USER test PROFILE app_profile;

3.5 查看 Profile 信息

-- 查看所有profile
SELECT * FROM DBA_PROFILES;

-- 查看特定profile的设置
SELECT * FROM DBA_PROFILES WHERE PROFILE = 'APP_PROFILE';

-- 查看用户分配的profile
SELECT USERNAME, PROFILE FROM DBA_USERS;

四 默认 Profile

Oracle 提供两个默认 Profile:

  1. DEFAULT:基本的资源限制和密码策略
  2. MONITORING_PROFILE:用于监控用户,有更严格的限制

五 Profile 使用最佳实践

  1. 分类管理:根据用户角色创建不同的profile

    • 开发人员profile
    • 应用程序profile
    • DBA profile
    • 报表用户profile
  2. 密码安全

    CREATE PROFILE secure_profile LIMIT
      FAILED_LOGIN_ATTEMPTS 3
      PASSWORD_LIFE_TIME 60
      PASSWORD_REUSE_TIME 365
      PASSWORD_REUSE_MAX 5
      PASSWORD_LOCK_TIME 1/24  -- 锁定1小时
      PASSWORD_GRACE_TIME 7;
    
  3. 资源控制

    CREATE PROFILE app_profile LIMIT
      SESSIONS_PER_USER 10
      CPU_PER_SESSION UNLIMITED
      CONNECT_TIME 1440
      IDLE_TIME 30
      LOGICAL_READS_PER_SESSION 1000000;
    
  4. 启用资源限制

    ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;
    
  5. 自定义密码验证函数

    -- 使用Oracle提供的UTLPWDMG包创建密码验证函数
    @?/rdbms/admin/utlpwdmg.sql
    -- 然后可以在profile中引用
    ALTER PROFILE secure_profile LIMIT
      PASSWORD_VERIFY_FUNCTION verify_function;
    

六 注意事项

  1. 修改profile后,新设置只对新会话生效
  2. 资源限制需要RESOURCE_LIMIT参数设为TRUE才能生效
  3. 删除profile时,如果有用户正在使用,需要加CASCADE选项
  4. 密码策略对SYS用户无效
  5. 过于严格的限制可能导致应用程序异常

Profile是Oracle数据库安全管理的重要组成部分,合理使用可以显著提高数据库的安全性和稳定性。

谨记:心存敬畏,行有所止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值