DBAtlas · 数据库运维图谱

创建密码策略 profile 并分配给用户

Oracle安全

命令

-- Hardened profile for application/human users:
CREATE PROFILE app_user_prf LIMIT
  FAILED_LOGIN_ATTEMPTS    5
  PASSWORD_LOCK_TIME       1/24          -- 1 hour lock
  PASSWORD_LIFE_TIME       90
  PASSWORD_GRACE_TIME      7
  PASSWORD_REUSE_TIME      365
  PASSWORD_REUSE_MAX       10
  INACTIVE_ACCOUNT_TIME    60            -- accounts unused for 60 days are locked
  PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_function;

-- Service accounts: password never expires, gradual password rollover enabled:
CREATE PROFILE service_account_prf LIMIT
  FAILED_LOGIN_ATTEMPTS    UNLIMITED
  PASSWORD_LIFE_TIME       UNLIMITED
  PASSWORD_ROLLOVER_TIME   1;            -- old and new password both valid for 1 day

ALTER USER customer_app PROFILE app_user_prf;

-- Check:
SELECT username, profile, account_status,
       TO_CHAR(expiry_date,'YYYY-MM-DD') AS expiry_date, lock_date
FROM   dba_users
WHERE  profile IN ('APP_USER_PRF', 'SERVICE_ACCOUNT_PRF');

SELECT profile, resource_name, limit
FROM   dba_profiles
WHERE  profile = 'APP_USER_PRF' AND resource_type = 'PASSWORD'
ORDER  BY resource_name;

作用

profile 将登录失败锁定、密码有效期、重用、复杂度(verify 函数)和非活动账户锁定规则应用于一组用户。PASSWORD_ROLLOVER_TIME 使应用在服务账户密码变更期间可以无中断切换。

适用场景

用于安全审计/CIS 基准要求、创建新的应用用户时,以及按用户组分离 DEFAULT profile 的宽松取值。

注意

无需额外许可。服务账户上的 FAILED_LOGIN_ATTEMPTS 限制会让一台配置了错误密码的应用服务器锁定该账户并导致生产中断。应用账户上的 PASSWORD_LIFE_TIME 可能导致意外的 EXPIRED 状态。verify 函数必须存在于 SYS 下(否则执行 @?/rdbms/admin/utlpwdmg.sql;该脚本也会修改 DEFAULT profile)。更改 profile 不会重新验证现有密码。

在 DBAtlas 中打开 →

相关内容