管理口令安全和资源(一)

学习目标

  1. Manage passwords using profiles:
    • 使用配置文件(profiles)来管理密码。这意味着你应该能够设置和修改密码策略,比如密码的复杂性、有效期、尝试次数限制等。在Oracle数据库中,配置文件是一组可以应用于所有用户的预定义资源限制和密码参数。
  2. Administer profiles:
    • 管理配置文件。这包括创建新的配置文件、修改现有配置文件的设置、分配配置文件给用户账户以及删除不再需要的配置文件。
  3. Control use of resources using profiles:
    • 使用配置文件来控制资源的使用。这涉及到设置资源限制,例如会话可以使用的CPU时间、可以同时打开的会话数、可以使用的内存量等,以防止单个用户或一组用户占用过多资源。
  4. Obtain password and resource limit information:
    • 获取密码和资源限制信息。这指的是能够查询数据库,以查看特定用户或配置文件的密码策略和资源限制设置,以及如何解读这些信息。
      以下是一个简单的例子,展示了如何在Oracle数据库中执行上述任务:
-- 1. Manage passwords using profiles
-- 创建一个配置文件,设置密码有效期和复杂性要求
CREATE PROFILE my_profile LIMITPASSWORD_LIFE_TIME 90PASSWORD_REUSE_TIME 365PASSWORD_REUSE_MAX UNLIMITEDPASSWORD_VERIFY_FUNCTION ora12c_verify_functionPASSWORD_LOCK_TIME 1;
-- 2. Administer profiles
-- 将配置文件分配给用户
ALTER USER my_user PROFILE my_profile;
-- 修改配置文件
ALTER PROFILE my_profile LIMIT PASSWORD_LIFE_TIME 60;
-- 3. Control use of resources using profiles
-- 设置资源限制,例如每个用户的并发会话数
ALTER PROFILE my_profile LIMIT SESSIONS_PER_USER 5;
-- 4. Obtain password and resource limit information
-- 查询特定用户的配置文件设置
SELECT * FROM DBA_PROFILES WHERE PROFILE = 'MY_PROFILE';

通过配置文件(profiles)来设置密码管理

在Oracle数据库中如何通过配置文件(profiles)来设置密码管理,并将这些配置文件分配给用户,以及如何使用CREATE USERALTER USER命令来锁定、解锁和使账户密码过期。以下是每个步骤的详细解释:

  1. Set up password management by using profiles and assigning them to users:
    • 通过使用配置文件来设置密码管理,并将这些配置文件分配给用户。配置文件定义了密码策略,如密码复杂性、有效期、尝试次数限制等。以下是如何操作的示例:
-- 创建一个新的配置文件
CREATE PROFILE my_profile LIMITPASSWORD_LIFE_TIME 90PASSWORD_REUSE_TIME 365PASSWORD_REUSE_MAX UNLIMITEDPASSWORD_VERIFY_FUNCTION ora12c_verify_functionPASSWORD_LOCK_TIME 1;
-- 将配置文件分配给用户
ALTER USER my_user PROFILE my_profile;
  1. Lock, unlock, and expire accounts using the CREATE USER or ALTER USER command:
    • 使用CREATE USERALTER USER命令来锁定、解锁和使账户密码过期。以下是如何操作的示例:
-- 创建用户时锁定账户
CREATE USER my_user IDENTIFIED BY my_password ACCOUNT LOCK;
-- 解锁用户账户
ALTER USER my_user ACCOUNT UNLOCK;
-- 使用户密码过期,强制用户在下次登录时更改密码
ALTER USER my_user PASSWORD EXPIRE;
  1. Password limits are always enforced:
    • 密码限制始终被强制执行。这意味着一旦配置文件中设置了密码策略,这些策略将始终应用于相关用户。
  2. To enable password management, run the utlpwdmg.sql script as the user SYS:
    • 要启用密码管理,需要以SYS用户身份运行utlpwdmg.sql脚本。这个脚本通常包含了设置默认密码策略的SQL命令,以下是如何操作的示例:
-- 以SYS用户登录SQL*Plus或SQL Developer
CONNECT SYS AS SYSDBA;
-- 运行utlpwdmg.sql脚本
@?/rdbms/admin/utlpwdmg.sql;

运行utlpwdmg.sql脚本后,数据库将应用默认的密码管理策略,这些策略可以通过修改配置文件来定制。记得在执行这些操作之前备份相关配置,并在生产环境中谨慎操作。


密码账户锁定

在数据库中用于密码账户锁定策略的两个参数及其功能:

  • FAILED_LOGIN_ATTEMPTS

    • 描述:这个参数指定了在账户被锁定之前允许的失败登录尝试次数。一旦用户连续失败登录次数达到这个参数设置的值,账户将会被锁定。
  • PASSWORD_LOCK_TIME

    • 描述:这个参数指定了账户在被锁定后保持锁定的天数。在指定的天数结束后,账户将自动解锁,用户可以再次尝试登录。

以下是如何在Oracle数据库中设置这些参数的示例:

-- 创建或修改配置文件以设置失败登录尝试次数和锁定时间
CREATE PROFILE my_profile LIMITFAILED_LOGIN_ATTEMPTS 5PASSWORD_LOCK_TIME 2;
-- 将配置文件分配给用户
ALTER USER my_user PROFILE my_profile;

如果用户my_user连续5次登录失败,其账户将被锁定,并且将保持锁定状态2天。

密码历史管理

在数据库中用于密码历史管理的两个参数及其功能:

  • PASSWORD_REUSE_TIME
    • 描述:这个参数指定了密码可以被重新使用之前需要经过的天数。这意味着用户在更改密码后,必须等待指定的时间才能将旧密码重新设置为新的密码。
  • PASSWORD_REUSE_MAX
    • 描述:这个参数指定了密码可以被重新使用之前必须进行的最大密码更改次数。用户必须更改密码达到指定的次数后,才能重新使用之前的密码。
      以下是如何在Oracle数据库中设置这些参数的示例:
-- 创建或修改配置文件以设置密码重用时间和最大重用更改次数
CREATE PROFILE myprofile LIMITPASSWORD_REUSE_TIME 365PASSWORD_REUSE_MAX 5;
-- 将配置文件分配给用户
ALTER USER myuser PROFILE myprofile;

对于使用myprofile配置文件的用户myuser,他们不能在一年内重新使用任何旧密码,并且必须在重新使用任何旧密码之前更改密码至少5次。

密码验证

这段文字描述了在Oracle数据库中用于密码验证的一个参数及其功能:

  • PASSWORD_VERIFY_FUNCTION
  • 描述:这个参数指定了一个PL/SQL函数,该函数在密码被分配给用户之前执行密码复杂性的检查。这个函数可以自定义,以确保密码满足特定的安全要求,比如最小长度、包含数字、大写字母、小写字母和特殊字符等。
  • 例子:Oracle数据库提供了一个默认的密码验证函数ORA12C_VERIFY_FUNCTION,它可以在创建或修改配置文件时被指定为PASSWORD_VERIFY_FUNCTION的值。
    以下是如何在Oracle数据库中设置这个参数的示例:
    sql
  • 创建或修改配置文件以使用密码验证函数
CREATE PROFILE myprofile LIMITPASSWORD_VERIFY_FUNCTION ora12c_verify_function;
- 将配置文件分配给用户
ALTER USER myuser PROFILE myprofile;

在这个例子中,对于使用myprofile配置文件的用户myuser,每当他们尝试设置或更改密码时,都会调用ora12c_verify_function函数来检查密码是否符合复杂性要求。如果密码不符合要求,那么密码更改将失败,并且用户会收到一个错误消息。
如果你想要自定义密码验证逻辑,你可以创建自己的PL/SQL函数,并在创建或修改配置文件时指定该函数的名称。例如:

  • 创建自定义密码验证函数
CREATE OR REPLACE FUNCTION my_password_verify_function(p_password VARCHAR2, p_old_password VARCHAR2)RETURN BOOLEAN ISBEGIN- 这里添加自定义的密码验证逻辑RETURN TRUE; -- 或者根据验证结果返回FALSEEND;- 将自定义密码验证函数分配给配置文件
ALTER PROFILE myprofile LIMIT PASSWORD_VERIFY_FUNCTION my_password_verify_function;

在这个自定义函数中,你可以实现任何你想要的密码验证规则,确保用户设置的密码足够强大,以防止未授权访问。

强制执行密码复杂性和验证规则

PASSWORDVERIFYFUNCTION这个函数在数据库的sqlnet.ora文件中指定,或者直接在数据库中作为分配给用户的PASSWORDPROFILE中的一个参数。
以下是如何使用PASSWORDVERIFYFUNCTION的步骤:

  1. 创建PL/SQL函数:
    您需要创建一个PL/SQL函数,负责检查密码的复杂性。这个函数应该返回一个布尔值(TRUE或FALSE)。以下是一个简单的函数示例,它要求密码长度至少为8个字符,并且包含数字和特殊字符:
CREATE OR REPLACE FUNCTION verify_password Complexity(p_password VARCHAR2)RETURN BOOLEAN IS
BEGIN-- 检查密码长度IF LENGTH(p_password) < 8 THENRETURN FALSE;END IF;-- 检查密码是否包含数字IF NOT REGEXP_LIKE(p_password, '[0-9]') THENRETURN FALSE;END IF;-- 检查密码是否包含特殊字符IF NOT REGEXP_LIKE(p_password, '[^a-zA-Z0-9]') THENRETURN FALSE;END IF;-- 如果所有检查都通过,则返回TRUERETURN TRUE;
END verify_password Complexity;
/
  1. sqlnet.ora文件中指定该函数:
    编辑sqlnet.ora文件,添加以下行来指定密码验证函数:
    PASSWORDVERIFYFUNCTION=verify_password_Complexity
    
  2. 在密码配置文件中设置:
    如果您不想在sqlnet.ora文件中设置,也可以在数据库中为特定的密码配置文件设置该函数:
ALTER PROFILE DEFAULT LIMITPASSWORD_VERIFY_FUNCTION verify_password_Complexity;

这个函数可以实现以下密码复杂性规则:

  • 密码长度至少为8个字符
  • 密码包含数字
  • 密码包含特殊字符
  • 密码不包含用户名或用户名的一部分
  • 密码不是常见词汇或之前使用过的密码
    PASSWORDVERIFYFUNCTION为在Oracle数据库环境中实施自定义密码策略提供了灵活性。然而,Oracle在新版本的数据库中已经弃用了PASSWORDVERIFYFUNCTION的使用,转而推荐使用DBMSMETADATA包进行密码验证。建议您查看您使用的Oracle数据库版本的官方文档,以获取关于密码管理的最新实践。

创建密码验证函数

  1. 以SYS用户身份登录数据库。
  2. 创建一个符合以下规范的函数:该函数接受三个参数(用户ID、新密码和旧密码),并返回一个布尔值。
    以下是该函数的创建示例:
CREATE OR REPLACE FUNCTION sys.user_provided_passwd_func (userid_parameter IN VARCHAR2(30),password_parameter IN VARCHAR2(30),old_password_parameter IN VARCHAR2(30)
) RETURN BOOLEAN IS
BEGIN-- 在这里实现您的密码验证逻辑-- 例如,以下是一些可能的验证规则:-- 检查新密码长度是否至少为8个字符IF LENGTH(password_parameter) < 8 THENRETURN FALSE;END IF;-- 检查新密码是否与旧密码不同IF password_parameter = old_password_parameter THENRETURN FALSE;END IF;-- 添加更多的密码复杂性检查-- ...-- 如果所有检查都通过,则返回TRUERETURN TRUE;
EXCEPTIONWHEN OTHERS THEN-- 如果发生异常,可以记录日志并返回FALSE-- 例如:DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);RETURN FALSE;
END user_provided_passwd_func;
/

请注意,上述代码只是一个示例,您需要根据自己的密码策略实现具体的验证逻辑。
3. 在创建函数之后,您需要将其与密码配置文件关联起来,以便在用户更改密码时调用该函数:

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION sys.user_provided_passwd_func;

这样,每当用户尝试更改密码时,系统都会调用user_provided_passwd_func函数来验证新密码是否符合您定义的规则。如果函数返回FALSE,则密码更改操作将失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt vs ios开发应用环境搭建和上架商店的记录

qt 下载链接如下 https://download.qt.io/new_archive/qt/5.14/5.14.2/qt-opensource-mac-x64-5.14.2.dmg 安装选项全勾选就行&#xff0c;这里特别说明下qt5.14.2/qml qt5.14.2对qml支持还算成熟&#xff0c;但很多特性还得qt6才行&#xff0c;这里用qt5.14.2主要是考虑到服…

windows 极速安装 Linux (Ubuntu)-- 无需虚拟机

1. 安装 WSL 和 Ubuntu 打开命令行&#xff0c;执行 WSL --install -d ubuntu若报错&#xff0c;则先执行 WSL --update2. 重启电脑 因安装了子系统&#xff0c;需重启电脑才生效 3. 配置 Ubuntu 的账号密码 打开 Ubuntu 的命令行 按提示&#xff0c;输入账号&#xff0c;密…

AI编程工具使用技巧——通义灵码

活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…

C#表达式和运算符

本文我们将学习C#的两个重要知识点&#xff1a;表达式和运算符。本章内容会理论性稍微强些&#xff0c;我们会尽量多举例进行说明。建议大家边阅读边思考&#xff0c;如果还能边实践就更好了。 1. 表达式 说到表达式&#xff0c;大家可能感觉有些陌生&#xff0c;我们先来举个…

pycharm+pyside6+desinger实现查询汉字笔顺GIF动图

一、引言 这学期儿子语文期末考试有一道这样的题目&#xff1a; 这道题答案是B&#xff0c;儿子做错了选了C。我告诉他“车字旁”和“车”的笔顺是不一样的&#xff0c;因为二者有一个笔画是不一样的&#xff0c;“车字旁”下边那笔是“提”&#xff0c;而“车”字是“横”&am…

2018年西部数学奥林匹克几何试题

2018G1 在 △ A B C \triangle ABC △ABC 中, O O O 为外心, M M M 为边 B C BC BC 的中点, 延长 A B AB AB 交 ( A O M ) (AOM) (AOM) 于点 D D D, ( A O M ) (AOM) (AOM) 交 A C AC AC 于点 E E E. 求证: E C D M ECDM ECDM. 证明: 设点 G G G 为 △ A B C …

C++ QT中Q_Q和Q_D是什么?怎么使用?本质是什么?C++仿写

1.QT中Q_Q和Q_D是什么? Q_Q可以得到外部可以访问的类指针Q_D可以得到内部封装,外部不可达的类指针2. 怎么使用? 上代码 APrivate.h#pragma once #include <QtCore>class A;class APrivate {Q_DECLARE_PUBLIC(A) public:APrivate();~APrivate(); public:void APrivate…

宇泰串口卡驱动在Ubuntu22.04编译、安装汇总

从官网下载驱动官网地址 上传到Ubuntu, 目录结构如下&#xff1a; 驱动源代码: 驱动代码是基于开源项目编译来的 编译路径不能有中文路径&#xff0c;否则可能有类似错误 源码是基于Linux2.3内核编译&#xff0c;我当前是6.8.0-51&#xff0c;数据结构有升级&#xff0c;需要调…

WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测

WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测 目录 WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于WOA-CNN-GRU-Attention、…

广播网络实验

1 实验内容 1、构建星性拓扑下的广播网络,实现hub各端口的数据广播,验证网络的连通性并测试网络效率 2、构建环形拓扑网络,验证该拓扑下结点广播会产生数据包环路 2 实验流程与结果分析 2.1 实验环境 ubuntu、mininet、xterm、wireshark、iperf 2.2 实验方案与结果分析…

人参t2t基因组-文献精读100

Telomere-to-telomere reference genome for Panax ginseng highlights the evolution of saponin biosynthesis 人参的端粒到端粒参考基因组揭示皂苷生物合成的进化 摘要 人参&#xff08;Panax ginseng&#xff09;是中药的代表性植物之一&#xff0c;并在全球范围内广泛使…

深度学习基础--GRU学习笔记(李沐《动手学习深度学习》)

前言 GRU是RNN模型的升级版&#xff0c;也是LSTM的弱化版&#xff0c;学习GRU也是为了学习LSTM做准备&#xff0c;这一篇文章是学习笔记&#xff1b;RNN&#xff1a;RNN讲解参考&#xff1a;李沐动手学习深度学习&#xff1b;欢迎收藏加关注&#xff0c;本人将会持续更新。 文…

unity学习17:unity里的旋转学习,欧拉角,四元数等

目录 1 三维空间里的旋转与欧拉角&#xff0c;四元数 1.1 欧拉角比较符合直观 1.2 四元数 1.3 下面是欧拉角和四元数的一些参考文章 2 关于旋转的这些知识点 2.1 使用euler欧拉角旋转 2.2 使用quaternion四元数,w,x,y,z 2.3 使用quaternion四元数,类 Vector3.zero 这种…

Three.js计算机与反射艺术相结合

反射-CSDN直播反射映象https://live.csdn.net/v/460090 一.CSS部分 body {margin: 0;padding: 0;height: 100vh;overflow: hidden;display: flex;align-items: center;justify-content: center;background: black; }二.JS部分 //wccchallenge - reflection //reflection for…

PDF文件提取开源工具调研总结

概述 PDF是一种日常工作中广泛使用的跨平台文档格式&#xff0c;常常包含丰富的内容&#xff1a;包括文本、图表、表格、公式、图像。在现代信息处理工作流中发挥了重要的作用&#xff0c;尤其是RAG项目中&#xff0c;通过将非结构化数据转化为结构化和可访问的信息&#xff0…

从AI生成内容到虚拟现实:娱乐体验的新边界

引言 在快速发展的科技时代&#xff0c;娱乐行业正经历一场前所未有的变革。传统的娱乐方式正与先进技术融合&#xff0c;创造出全新的沉浸式体验。从AI生成的个性化内容&#xff0c;到虚拟现实带来的身临其境的互动场景&#xff0c;科技不仅改变了我们消费娱乐的方式&#xf…

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…

《offer 来了:Java 面试核心知识点精讲 -- 原理篇》

在 Java 面试的战场上&#xff0c;只知皮毛可不行&#xff0c;面试官们越来越看重对原理的理解。今天就给大家分享一本能让你在面试中脱颖而出的 “武林秘籍”——《offer 来了&#xff1a;Java 面试核心知识点精讲 -- 原理篇》。 本书详细介绍了Java架构师在BAT和移动互联网公…

家政服务小程序,打造智慧家政新体验

春节即将来临&#xff0c;家政市场呈现出了火热的场景&#xff0c;大众对家政服务的需求持续增加。 近年来&#xff0c;家政市场开始倾向数字化、智能化&#xff0c;借助科学技术打造家政数字化平台&#xff0c;让大众在手机上就可以预约家政服务&#xff0c;减少传统家政市场…

vim练级攻略(精简版)

vim推荐配置: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 0. 规定 Ctrl-λ 等价于 <C-λ> :command 等价于 :command <回车> n 等价于 数字 blank字符 等价于 空格&#xff0c;tab&am…