当前位置: 首页 > news >正文

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

学习目标

  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,则密码更改操作将失败。

相关文章:

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

学习目标 Manage passwords using profiles: 使用配置文件&#xff08;profiles&#xff09;来管理密码。这意味着你应该能够设置和修改密码策略&#xff0c;比如密码的复杂性、有效期、尝试次数限制等。在Oracle数据库中&#xff0c;配置文件是一组可以应用于所有用户的预定义…...

【Linux】【Vim】vim编辑器的用法

一、vim简介 Vim是一款功能强大且高度可定制的文本编辑器&#xff0c;广泛应用于Linux 和 Unix系统中。 它不仅继承了vi编辑器的所有特性&#xff0c;还增加了许多新的功能&#xff0c;如语法高亮、代码折叠、多级撤销等。 Vim有三种主要的工作模式&#xff1a; 命令模式&am…...

Golang Gin系列-3:Gin Framework的项目结构

在Gin教程的第3篇&#xff0c;我们将讨论如何设置你的项目。这不仅仅是把文件扔得到处都是&#xff0c;而是要对所有东西的位置做出明智的选择。相信我&#xff0c;这些东西很重要。如果你做得对&#xff0c;你的项目会更容易处理。当你以后不再为了找东西或添加新功能而绞尽脑…...

LabVIEW实车四轮轮速信号再现系统

开发了一个基于LabVIEW的实车四轮轮速信号再现系统。该系统解决现有电机驱动传感器成本高、重复性差、真实性差和精度低等问题&#xff0c;提供一种高精度、低成本的轮速信号再现解决方案。 项目背景 ABS轮速传感器在现代汽车安全系统中发挥着至关重要的作用。为保证其准确性和…...

2025.1.16——六、BabySQL 双写绕过|联合注入

题目来源&#xff1a;buuctf [极客大挑战 2019]BabySQL 1 目录 一、打开靶机&#xff0c;分析已知信息 二、手工注入解题 step 1&#xff1a;万能密码 step 2&#xff1a;正常注入&#xff0c;判断字段数 step 3&#xff1a;绕过 step 4&#xff1a;查数据库 step 5&am…...

Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比

先说结论&#xff1a; Swgger 3.0 与Swagger 2.0 区别很大&#xff0c;Swagger3.0用了最新的注释实现更强大的功能&#xff0c;同时使得代码更优雅。 就个人而言&#xff0c;如果新项目推荐使用Swgger 3.0&#xff0c;对于工具而言新的一定比旧的好&#xff1b;对接于旧项目原…...

【已解决】git clone报错:Failed to connect to github.com port 443: Timed out

1.问题原因1 报错信息1&#xff1a; fatal: unable to access https://github.com/microsoft/xxx/: Failed to connect to github.com port 443: Timed out 报错信息2&#xff1a; fatal: unable to access https://github.com/xxx/xx/: OpenSSL SSL_read: Connection was …...

Qt 程序 DPI 适配方法归纳

方案1&#xff1a;通过 Windows api 处理 缺点&#xff1a;放大之后界面会模糊。 通过调用api实现 #include <ShellScalingAPI.h> #pragma comment(lib, "Shcore.lib")HRESULT hr SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE);或者使用qt.conf 实现 在…...

AI刷题-小R的随机播放顺序、不同整数的计数问题

目录 一、小R的随机播放顺序 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、 不同整数的计数问题 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终…...

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

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

【影刀_常规任务计划_API调用】

影刀_常规任务计划 1、在常规任务计划被关闭或者设置了定时任务的情况下&#xff08;非手动执行&#xff09;&#xff0c;通过API的方式启动任务&#xff0c;任务仍然可以被正常执行。 2、如果在常规任务计划里面应用中填写的参数的话&#xff0c; 如果通过api执行&#xff…...

参数校验 Spring Validation框架

后端参数校验 解决&#xff1a;校验前端传入的参数是否符合预期 1、引入依赖 使用Spring Validation框架 <!-- validation参数校验框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validatio…...

Spring Boot 基础入门指南

Spring Boot 基础入门指南 引言 在当今快速发展的软件行业中&#xff0c;开发者们一直在寻找简化应用程序开发的方法。Spring Boot 应运而生&#xff0c;它旨在帮助开发者快速构建基于Spring框架的应用程序&#xff0c;同时尽可能减少配置工作。本文将带您了解Spring Boot的基…...

doc、pdf转markdown

国外的一个网站可以&#xff1a; Convert A File Word, PDF, JPG Online 这个网站免费的&#xff0c;算是非常厚道了&#xff0c;但是大文件上传多了之后会扛不住 国内的一个网站也不错&#xff1a; TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…...

基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1

基于 HTML5 Canvas 制作一个精美的 2048 小游戏 在这个快节奏的生活中&#xff0c;简单而富有挑战性的游戏总能给我们带来乐趣。2048 是一款受欢迎的益智游戏&#xff0c;不仅考验智力&#xff0c;还能让人回味无穷。今天&#xff0c;我带领大家将一起学习如何使用 HTML5 Canv…...

知识图谱入门(一)

最近在研究Graph RAG项目&#xff0c;因此对相关内容做个总结&#xff0c;首先从知识图谱开始&#xff0c;供大家参考。 知识图谱是结构化知识表示的一种形式&#xff0c;它将知识组织成一个多关系图&#xff0c;其中节点表示实体&#xff0c;边表示实体之间的关 系。知识图谱…...

springboot项目-基础数据回显

一.基础数据回显说明 微服务项目中由于从服务独立的角度考虑&#xff0c;对数据库做了分库的处理。对于基础数据表来说&#xff0c;各个服务都是需要的。项目中在使用基础数据时&#xff0c;往往是在sql中写连接然后获取基础数据的名称。例&#xff1a; select wi.name,bc.ci…...

LabVIEW实现油浸式变压器自主监测与实时报告

油浸式变压器广泛应用于电力系统中&#xff0c;尤其是在电力传输和分配领域。为了确保变压器的安全、稳定运行&#xff0c;及时监测其工作状态至关重要。传统的变压器监测方法通常依赖人工巡检和定期检查&#xff0c;但这不能及时发现潜在的故障隐患&#xff0c;且效率较低。随…...

K8S 亲和性与反亲和性 深度好文

今天我们来实验 pod 亲和性。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8-alpine docker pull nginx…...

关于php语言api接口开发的流程

确定接口需求&#xff1a;首先明确接口的功能和需求&#xff0c;包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由&#xff1a;根据接口需求&#xff0c;设计具体的接口路由&#xff0c;即URL路径&#xff0c;用于访问接口。 搭建PHP环境&#xff1a;确保你的服务器上…...

AMLP:基于大语言模型的自动化机器学习势函数构建平台

1. 项目概述&#xff1a;当AI遇见原子模拟&#xff0c;AMLP如何重塑机器学习势函数构建在计算材料科学和化学物理领域&#xff0c;分子动力学模拟是我们窥探微观世界动态行为的“显微镜”。无论是研究新材料的相变过程&#xff0c;还是探索生物大分子的折叠机制&#xff0c;其核…...

Vulnhub-DC-1

1.信息收集 使用工具nmap扫描主机端口 这是Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成 Web指纹扫描 发现是&#xff1a;drupal…...

Allegro PCB设计小技巧:如何让Route Keepout区域既能走线又能打过孔(附详细步骤图)

Allegro PCB设计实战&#xff1a;Route Keepout区域的灵活控制技巧 在高速PCB设计中&#xff0c;Route Keepout区域的管理常常让工程师陷入两难境地——元件封装自带的限制区域与实际布线需求产生冲突。特别是处理PCIE等高速信号时&#xff0c;这种矛盾尤为突出。传统做法要么完…...

别再只用鼠标了!用Leap Motion手势控制Unity游戏,保姆级配置避坑指南(2024版)

2024年Unity手势交互开发实战&#xff1a;Leap Motion从配置到游戏逻辑全解析在游戏开发领域&#xff0c;交互方式的创新往往能带来全新的体验。想象一下&#xff0c;玩家不再需要键盘鼠标&#xff0c;仅凭自然的手部动作就能操控游戏角色——这正是Leap Motion手势识别技术为U…...

BetterJoy终极指南:3分钟让你的Switch手柄变身PC游戏神器

BetterJoy终极指南&#xff1a;3分钟让你的Switch手柄变身PC游戏神器 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.c…...

WarcraftHelper:让魔兽争霸3在现代电脑上完美运行的关键插件

WarcraftHelper&#xff1a;让魔兽争霸3在现代电脑上完美运行的关键插件 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为《魔兽争霸3》这…...

终极指南:三步搞定Windows系统安卓APK文件安装,告别模拟器时代

终极指南&#xff1a;三步搞定Windows系统安卓APK文件安装&#xff0c;告别模拟器时代 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为电脑无法直接运行手机应用…...

当“画笔”变成“画笔”,世界便不再扁平:上海科技大学师玉娇团队 BevSplat 论文深度解读

用高斯画笔为地面图像“补上高度”&#xff0c;让卫星图片与街景的配对不再尴尬 想象一下这幅情境&#xff1a;一辆自动驾驶汽车在密集的城市楼群中行驶。GPS 信号被摩天大楼遮挡得断断续续&#xff0c;车辆根本无法准确知道自己的位置。于是&#xff0c;它需要一种备用方案&am…...

终极鼠标连点器MouseClick:5分钟免费获取完整使用指南

终极鼠标连点器MouseClick&#xff1a;5分钟免费获取完整使用指南 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#xff0c;…...

污水管网在线监测系统,精准定位污水偷排源头

当前&#xff0c;城市地下排水管网普遍存在“看不见、摸不着”的监管难题。污水偷排、漏检等现场层出不穷&#xff0c;依赖人工进行监测管理的方式无疑是十分困难的。因此&#xff0c;管理部门需要灵活运用先进技术&#xff0c;积极转变观念&#xff0c;实现对污水管网的定量、…...