1. 首页 > Oracle教程 > 正文

Oracle教程FG153-密码策略管理

Part03-生产环境项目实施方案

3.1 密码策略管理操作步骤

以下是密码策略管理的基本操作步骤:

— 创建密码验证函数
CREATE OR REPLACE FUNCTION verify_password (
username IN VARCHAR2,
password IN VARCHAR2,
old_password IN VARCHAR2
) RETURN BOOLEAN AS
min_length NUMBER := 8;has_uppercase BOOLEAN := FALSE;has_lowercase BOOLEAN := FALSE;has_number BOOLEAN := FALSE;has_special BOOLEAN := FALSE;BEGIN
— 检查密码长度
IF LENGTH(password) < min_length THEN RETURN FALSE;END IF;-- 检查密码复杂性 FOR i IN 1..LENGTH(password) LOOP IF REGEXP_LIKE(SUBSTR(password, i, 1), '[A-Z]') THEN has_uppercase := TRUE;ELSIF REGEXP_LIKE(SUBSTR(password, i, 1), '[a-z]') THEN has_lowercase := TRUE;ELSIF REGEXP_LIKE(SUBSTR(password, i, 1), '[0-9]') THEN has_number := TRUE;ELSIF REGEXP_LIKE(SUBSTR(password, i, 1), '[^a-zA-Z0-9]') THEN has_special := TRUE;END IF;END LOOP;IF NOT (has_uppercase AND has_lowercase AND has_number) THEN RETURN FALSE;END IF;RETURN TRUE;END;/
— 创建包含密码策略的配置文件
CREATE PROFILE secure_password_profile LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10
PASSWORD_VERIFY_FUNCTION verify_password
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 7;– 为用户分配配置文件
ALTER USER app_user PROFILE secure_password_profile;– 查看密码策略设置
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = ‘SECURE_PASSWORD_PROFILE’
AND resource_type = ‘PASSWORD’;

3.2 密码策略参数说明

— 密码策略参数说明
— FAILED_LOGIN_ATTEMPTS: 失败登录尝试次数,超过后账户锁定
— PASSWORD_LIFE_TIME: 密码有效期(天)
— PASSWORD_REUSE_TIME: 密码重用时间(天)
— PASSWORD_REUSE_MAX: 密码重用前必须更改的次数
— PASSWORD_VERIFY_FUNCTION: 密码验证函数
— PASSWORD_LOCK_TIME: 账户锁定时间(天)
— PASSWORD_GRACE_TIME: 密码过期后的宽限期(天)

— 修改密码策略
ALTER PROFILE secure_password_profile LIMIT
PASSWORD_LIFE_TIME 60
FAILED_LOGIN_ATTEMPTS 5;

Part04-生产案例与实战讲解

4.1 案例1:实施强密码策略

场景:为企业生产环境实施强密码策略,提高系统安全性。

— 1. 创建密码验证函数
SQL> CREATE OR REPLACE FUNCTION verify_password (
username IN VARCHAR2,
password IN VARCHAR2,
old_password IN VARCHAR2
) RETURN BOOLEAN AS
min_length NUMBER := 10;has_uppercase BOOLEAN := FALSE;has_lowercase BOOLEAN := FALSE;has_number BOOLEAN := FALSE;has_special BOOLEAN := FALSE;BEGIN
— 检查密码长度
IF LENGTH(password) < min_length THEN RETURN FALSE;END IF;-- 检查密码复杂性 FOR i IN 1..LENGTH(password) LOOP IF REGEXP_LIKE(SUBSTR(password, i, 1), '[A-Z]') THEN has_uppercase := TRUE;ELSIF REGEXP_LIKE(SUBSTR(password, i, 1), '[a-z]') THEN has_lowercase := TRUE;ELSIF REGEXP_LIKE(SUBSTR(password, i, 1), '[0-9]') THEN has_number := TRUE;ELSIF REGEXP_LIKE(SUBSTR(password, i, 1), '[^a-zA-Z0-9]') THEN has_special := TRUE;END IF;END LOOP;IF NOT (has_uppercase AND has_lowercase AND has_number AND has_special) THEN RETURN FALSE;END IF;RETURN TRUE;END;/Function created. -- 2. 创建安全配置文件 SQL> CREATE PROFILE enterprise_secure_profile LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10
PASSWORD_VERIFY_FUNCTION verify_password
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 7;Profile created.

— 3. 为用户分配配置文件
SQL> ALTER USER app_user PROFILE enterprise_secure_profile;SQL> ALTER USER sysadmin PROFILE enterprise_secure_profile;– 4. 验证密码策略
SQL> SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = ‘ENTERPRISE_SECURE_PROFILE’
AND resource_type = ‘PASSWORD’;PROFILE RESOURCE_NAME LIMIT
———————– ————————- ——————–
ENTERPRISE_SECURE_PROF FAILED_LOGIN_ATTEMPTS 3
ENTERPRISE_SECURE_PROF PASSWORD_LIFE_TIME 90
ENTERPRISE_SECURE_PROF PASSWORD_REUSE_TIME 365
ENTERPRISE_SECURE_PROF PASSWORD_REUSE_MAX 10
ENTERPRISE_SECURE_PROF PASSWORD_VERIFY_FUNCTION VERIFY_PASSWORD
ENTERPRISE_SECURE_PROF PASSWORD_LOCK_TIME 1
ENTERPRISE_SECURE_PROF PASSWORD_GRACE_TIME 7

4.2 案例2:修改默认密码策略

场景:修改默认配置文件,为所有用户设置基本的密码策略。

— 1. 查看当前默认密码策略
SQL> SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = ‘DEFAULT’
AND resource_type = ‘PASSWORD’;PROFILE RESOURCE_NAME LIMIT
———- ————————- ——————–
DEFAULT FAILED_LOGIN_ATTEMPTS 10
DEFAULT PASSWORD_LIFE_TIME UNLIMITED
DEFAULT PASSWORD_REUSE_TIME UNLIMITED
DEFAULT PASSWORD_REUSE_MAX UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION NULL
DEFAULT PASSWORD_LOCK_TIME UNLIMITED
DEFAULT PASSWORD_GRACE_TIME 7

— 2. 修改默认密码策略
SQL> ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 180
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 7;Profile altered.

— 3. 验证修改
SQL> SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = ‘DEFAULT’
AND resource_type = ‘PASSWORD’;PROFILE RESOURCE_NAME LIMIT
———- ————————- ——————–
DEFAULT FAILED_LOGIN_ATTEMPTS 5
DEFAULT PASSWORD_LIFE_TIME 90
DEFAULT PASSWORD_REUSE_TIME 180
DEFAULT PASSWORD_REUSE_MAX UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION NULL
DEFAULT PASSWORD_LOCK_TIME 1
DEFAULT PASSWORD_GRACE_TIME 7

4.3 案例3:测试密码策略

场景:测试密码策略是否有效。

— 1. 创建测试用户
SQL> CREATE USER test_user IDENTIFIED BY Test123
PROFILE enterprise_secure_profile;User created.

— 2. 尝试使用弱密码修改密码(应该失败)
SQL> ALTER USER test_user IDENTIFIED BY password;ERROR: ORA-28003: password verification for the specified password failed
ORA-20001: Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.

— 3. 使用强密码修改密码(应该成功)
SQL> ALTER USER test_user IDENTIFIED BY Test123!;User altered.

— 4. 测试失败登录尝试
— 尝试使用错误密码登录3次,账户应该被锁定
SQL> CONN test_user/wrong_password;ERROR: ORA-01017: invalid username/password; logon denied

SQL> CONN test_user/wrong_password;ERROR: ORA-01017: invalid username/password; logon denied

SQL> CONN test_user/wrong_password;ERROR: ORA-28000: the account is locked

— 5. 解锁账户
SQL> ALTER USER test_user ACCOUNT UNLOCK;User altered.

Part05-风哥经验总结与分享

5.1 密码策略管理最佳实践

风哥提示:

  • 根据安全级别设置不同的密码策略
  • 使用密码验证函数增强密码复杂性
  • 定期更新密码策略,适应新的安全威胁
  • 为管理员用户设置更严格的密码策略
  • 定期提醒用户更新密码
  • 记录密码策略的变更历史

学习交流加群风哥QQ113257174

生产环境建议:请根据实际情况调整配置和参数,确保生产环境的安全性和稳定性。

风哥提示:更多学习教程公众号风哥教程itpux_com

更多视频教程www.fgedu.net.cn

学习交流加群风哥微信: itpux-com

from oracle:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息