openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略

news2024/11/23 20:46:36

文章目录

    • openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略
      • 115.1 操作步骤

openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略

115.1 操作步骤

用户密码存储在系统表pg_authid中,为防止用户密码泄露,openGauss对用户密码进行加密存储,所采用的加密算法由配置参数password_encryption_type决定。

  • 当参数password_encryption_type设置为0时,表示采用md5方式对密码加密。MD5加密算法安全性低,存在安全风险,不建议使用。
  • 当参数password_encryption_type设置为1时,表示采用sha256和md5方式对密码加密。MD5加密算法安全性低,存在安全风险,不建议使用。
  • 当参数password_encryption_type设置为2时,表示采用sha256方式对密码加密,为默认配置。
  • 当参数password_encryption_type设置为3时,表示采用sm3方式对密码加密。
  1. 以操作系统用户omm登录数据库主节点。

  2. 使用如下命令连接数据库。

    gsql -d postgres -p 8000
    

    postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

    连接成功后,系统显示类似如下信息:

    gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.
    
    openGauss=# 
    
  3. 查看已配置的加密算法。

    openGauss=# SHOW password_encryption_type;
     password_encryption_type
    --------------------------
     2
    (1 row)
    

    如果显示结果为0或1,执行“\q”命令退出数据库。

  4. 执行如下命令将其设置为安全的加密算法。

    gs_guc reload -N all -I all -c "password_encryption_type=2"
    

    img 须知: 为防止用户密码泄露,在执行CREATE USER/ROLE命令创建数据库用户时,不能指定UNENCRYPTED属性,即新创建的用户的密码只能是加密存储的。

  5. 配置密码安全参数。

    • 密码复杂度

      初始化数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度(password_policy)的要求,否则会提示用户重新输入密码。

      • 参数password_policy设置为1时表示采用密码复杂度校验,默认值。
      • 参数password_policy设置为0时表示不采用密码复杂度校验,但需满足密码不能为空并且只包含有效字符,有效字符范围为大写字母(A-Z)、小写字母(a-z)、数字(0-9)及特殊字符详见表1。设置为0会存在安全风险,不建议设置为0,即使需要设置也要将所有openGauss节点中的password_policy都设置为0才能生效。

      配置password_policy参数。

      1. 使用如下命令连接数据库。

        gsql -d postgres -p 8000
        

        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:

        gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
        Non-SSL connection (SSL connection is recommended when requiring high-security)
        Type "help" for help.
        
        openGauss=# 
        
      2. 查看已配置的参数。

        openGauss=# SHOW password_policy;
         password_policy
        ---------------------
         1
        (1 row)
        

        如果显示结果不为1,执行“\q”命令退出数据库。

      3. 执行如下命令设置成默认值1。

        gs_guc reload -N all -I all -c "password_policy=1"
        

      img 说明:

      帐户密码的复杂度要求如下:

      • 包含大写字母(A-Z)的最少个数(password_min_uppercase)
      • 包含小写字母(a-z)的最少个数(password_min_lowercase)
      • 包含数字(0-9)的最少个数(password_min_digital)
      • 包含特殊字符的最少个数(password_min_special)(特殊字符的列表请参见表1)
      • 密码的最小长度(password_min_length)
      • 密码的最大长度(password_max_length)
      • 至少包含上述四类字符中的三类。
      • 不能和用户名、用户名倒写相同,本要求为非大小写敏感。
      • 不能和当前密码、当前密码的倒写相同。
      • 不能是弱口令。
      • 弱口令指的是强度较低,容易被破解的密码,对于不同的用户或群体,弱口令的定义可能会有所区别,用户需自己添加定制化的弱口令。
      • 弱口令字典中的口令存放在gs_global_config系统表中,当创建用户、修改用户需要设置密码时,系统将会把用户设置口令和弱口令字典中存放的口令进行对比,如果符合,则会提示用户该口令为弱口令,设置密码失败。
      • 弱口令字典默认为空,用户通过以下语法可以对弱口令字典进行增加和删除,示例如下:
      openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'), ('password2');
      openGauss=# DROP WEAK PASSWORD DICTIONARY;
      
    • 密码重用

      用户修改密码时,只有超过不可重用天数(password_reuse_time)或不可重用次数(password_reuse_max)的密码才可以使用。参数配置说明如表2所示。

      img 说明: 不可重用天数默认值为60天,不可重用次数默认值是0。这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户可以根据需要重新设置参数,提高安全等级。

      配置password_reuse_time参数。

      1. 使用如下命令连接数据库。

        gsql -d postgres -p 8000
        

        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:

        gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
        Non-SSL connection (SSL connection is recommended when requiring high-security)
        Type "help" for help.
        
        openGauss=# 
        
      2. 查看已配置的参数。

        openGauss=# SHOW password_reuse_time;
         password_reuse_time
        ---------------------
         60
        (1 row)
        

        如果显示结果不为60,执行“\q”命令退出数据库。

      3. 执行如下命令设置成默认值60。

        img 说明: 不建议设置为0,即使需要设置也要将所有openGauss节点中的password_reuse_time都设置为0才能生效。

        gs_guc reload -N all -I all -c "password_reuse_time=60"
        

      配置password_reuse_max参数。

      1. 使用如下命令连接数据库。

        gsql -d postgres -p 8000
        

        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:

        gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
        Non-SSL connection (SSL connection is recommended when requiring high-security)
        Type "help" for help.
        
        openGauss=# 
        
      2. 查看已配置的参数。

        openGauss=# SHOW password_reuse_max;
        password_reuse_max
        --------------------
        0
        (1 row)
        

        如果显示结果不为0,执行“\q”命令退出数据库。

      3. 执行如下命令设置成默认值0。

        gs_guc reload -N all -I all -c "password_reuse_max = 0"
        
    • 密码有效期限

      数据库用户的密码都有密码有效期(password_effect_time),当达到密码到期提醒天数(password_notify_time)时,系统会在用户登录数据库时提示用户修改密码。

      img 说明: 考虑到数据库使用特殊性及业务连续性,密码过期后用户还可以登录数据库,但是每次登录都会提示修改密码,直至修改为止。

      配置password_effect_time参数。

      1. 使用如下命令连接数据库。

        gsql -d postgres -p 8000
        

        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:

        gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
        Non-SSL connection (SSL connection is recommended when requiring high-security)
        Type "help" for help.
        
        openGauss=# 
        
      2. 查看已配置的参数。

        openGauss=# SHOW password_effect_time;
         password_effect_time
        ----------------------
         90
        (1 row)
        

        如果显示结果不为90,执行“\q”命令退出数据库。

      3. 执行如下命令设置成默认值90(不建议设置为0)。

        gs_guc reload -N all -I all -c "password_effect_time = 90"
        

      配置password_notify_time参数。

      1. 使用如下命令连接数据库。

        gsql -d postgres -p 8000
        

        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:

        gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
        Non-SSL connection (SSL connection is recommended when requiring high-security)
        Type "help" for help.
        
        openGauss=# 
        
      2. 查看已配置的参数。

        openGauss=# SHOW password_notify_time;
        password_notify_time
        ----------------------
        7
        (1 row)
        
      3. 如果显示结果不为7,执行如下命令设置成默认值7(不建议设置为0)。

        gs_guc reload -N all -I all -c "password_notify_time = 7"
        
    • 密码修改

      • 在安装数据库时,会新建一个和初始化用户重名的操作系统用户,为了保证帐户安全,请定期修改操作系统用户的密码。

        以修改用户user1密码为例,命令格式如下:

        passwd user1
        

        根据提示信息完成修改密码操作。

      • 建议系统管理员和普通用户都要定期修改自己的帐户密码,避免帐户密码被非法窃取。

        以修改用户user1密码为例,以系统管理员用户连接数据库并执行如下命令:

        openGauss=# ALTER USER user1 IDENTIFIED BY "$$$$$$$$" REPLACE "XXXXXXXX";
        ALTER ROLE
        

        img 说明: $$$$$$$$、XXXXXXXX分别代表用户user1的新密码和原始密码,这些密码要符合规则,否则会执行失败。

      • 管理员可以修改自己的或者其他帐户的密码。通过修改其他帐户的密码,解决用户密码遗失所造成无法登录的问题。

        以修改用户joe帐户密码为例,命令格式如下:

        openGauss=# ALTER USER joe IDENTIFIED BY "abc@1234";
        ALTER ROLE
        

        img 说明:

        • 系统管理员之间不允许互相修改对方密码。
        • 系统管理员可以修改普通用户密码且不需要用户原密码。
        • 系统管理员修改自己密码但需要管理员原密码。
    • 密码验证

      设置当前会话的用户和角色时,需要验证密码。如果输入密码与用户的存储密码不一致,则会报错。

      以设置用户joe为例,命令格式如下:

      openGauss=# SET ROLE joe PASSWORD "abc@1234";
      ERROR:  Invalid username/password,set role denied.
      

    表 1 特殊字符

    编号字符编号字符编号字符编号字符
    1~9*17|25<
    210(18[26.
    3@11)19{27>
    4#12-20}28/
    5$13_21]29
    6%14=22--
    7^15+23--
    8&16\24--

    表 2 不可重用天数和不可重用次数参数说明

    参数取值范围配置说明
    不可重用天数(password_reuse_time)正数或0,其中整数部分表示天数,小数部分可以换算成时,分,秒。默认值为60。如果参数变小,则后续修改密码按新的参数进行检查。如果参数变大(比如由a变大为b),因为b天之前的历史密码可能已经删除,所以b天之前的密码仍有可能被重用。则后续修改密码按新的参数进行检查。说明:时间以绝对时间为准,历史密码记录的都是当时的时间,不识别时间的修改。
    不可重用次数(password_reuse_max)正整数或0。默认值为0,表示不检查重用次数。如果参数变小,则后续修改密码按新的参数进行检查。如果参数变大(比如由a变大为b),因为b次之前的历史密码可能已经删除,所以b次之前的密码仍有可能被重用。则后续修改密码按新的参数进行检查。
  6. 设置用户密码失效。

    具有CREATEROLE权限的用户在创建用户时可以强制用户密码失效,新用户首次登陆数据库后需要修改密码才允许执行其他查询操作,命令格式如下:

    openGauss=# CREATE USER joe PASSWORD "abc@1234" EXPIRED;
    CREATE ROLE
    

    具有CREATEROLE权限的用户可以强制用户密码失效或者强制修改密码且失效,命令格式如下:

    openGauss=# ALTER USER joe PASSWORD EXPIRED;
    ALTER ROLE
    
    openGauss=# ALTER USER joe PASSWORD "abc@2345" EXPIRED;
    ALTER ROLE
    

    img 说明:

    • 密码失效的用户登录数据库后,当执行简单查询或者扩展查询时,会提示用户修改密码。修改密码后可以正常执行语句。
    • 只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以设置用户密码失效,其中系统管理员也可以设置自己或其他系统管理员密码失效。不允许设置初始用户密码失效。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

img

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

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

相关文章

2023-2024-1高级语言程序设计-一维数组

7-1 逆序输出数组元素的值 从键盘输入n个整数存入一维数组中&#xff0c;然后将数组元素的值逆序输出。 输入格式: 第一行输入整数个数n&#xff1b; 第二行输入n 个整数&#xff0c;数据之间以空格隔开。 输出格式: 逆序输出数组元素的值&#xff0c;每个数据之后跟一个空…

[React] React-Redux 快速入门

文章目录 1.安装 Redux Toolkit 和 React Redux2.创建 Redux Store3.为 React 提供 Redux Store​4.创建 Redux State Slice5.添加 Slice Reducers 到 Store6.在 React 组件中使用 Redux State 和 Actions​7.总结 1.安装 Redux Toolkit 和 React Redux npm install reduxjs/t…

测试服务器端口是否开通,计算退休时间

本案例知识点 netstat -tuln | grep 80 nestat 目前主机打开的网络服务端口&#xff0c;-tuln目前主机启动的服务&#xff0c;如图 报错说参数太多&#xff0c;仔细检查发现if后的中括号内&#xff0c;变量少双引号导致&#xff0c;改完之后运行显示22,25端口开放&#xff0…

关于编程不得不说的事

这些年&#xff0c;互联网爆炸式的发展&#xff0c;促生了无数程序员&#xff0c;也促生了大量 IT培训机构。短短数年间&#xff0c;科班出生的程序员和培训机构出生的程序员呈指数增长。程序员的职业也不再是金饭碗。写了这么多代码&#xff0c;有些感触&#xff0c;所以写下来…

挑战100天 AI In LeetCode Day01(1)

挑战100天 AI In LeetCode Day01&#xff08;1&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-12.1 题目2.2 题解 三、面试经典 150 题-13.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&#xff0c;面向程序…

回顾十大数据恢复软件,帮助用于恢复丢失的文件!

您是否因丢失计算机上的重要文件而感到恐慌&#xff1f;你不是一个人&#xff01;数据丢失是许多人面临的严重问题&#xff0c;但幸运的是&#xff0c;有许多解决方案可以恢复数据。 在本文中&#xff0c;我将回顾十大数据恢复软件&#xff0c;以帮助您恢复丢失的文件&#xf…

线性【SVM】数学原理和算法实现

一. 数学原理 SVM是一类有监督的分类算法&#xff0c;它的大致思想是&#xff1a;假设样本空间上有两类点&#xff0c;如下图所示&#xff0c;我们希望找到一个划分超平面&#xff0c;将这两类样本分开&#xff0c;我们希望这个间隔能够最大化来使得模型泛化能力最强。 如上图所…

Vulnhub-DC-3 靶机复现完整过程

啰嗦两句&#xff1a; 提权之前完成是一个月前做的&#xff0c;当时在提权处出了点问题就搁置了&#xff0c;今天才完成&#xff0c;所以IP地址可能会会有变化 注意&#xff1a;后续出现的IP地址为192.168.200.55同样是靶机IP地址&#xff0c;若本文能有帮助到你的地方&#xf…

Flutter 07 框架和三棵树(Widgets、Elements和RenderObjects)

一、Flutter框架的整体结构&#xff1a; Flutter是Google推出并开源的跨平台开发框架&#xff0c;主打跨平台、高保真、高性能。开发者可以通过Dart语 言开发Flutter应用&#xff0c;一套代码同时运行在ios和Android平台。不仅如此&#xff0c;Flutter还支持Web、桌面、嵌 入应…

论文阅读——What Can Human Sketches Do for Object Detection?(cvpr2023)

论文&#xff1a;https://openaccess.thecvf.com/content/CVPR2023/papers/Chowdhury_What_Can_Human_Sketches_Do_for_Object_Detection_CVPR_2023_paper.pdf 代码&#xff1a;What Can Human Sketches Do for Object Detection? (pinakinathc.me) 一、 Baseline SBIR Fram…

按键开发环境搭建

雷电模拟器 创建虚拟机 2.设置root权限 打开按键精灵连接虚拟机 开启悬浮 mumu模拟器操作 查找端口方法 adb connect 127.0.0.1:16416 设置-应用-所有应用-按键精灵-开启悬浮 步骤二&#xff1a;开启root 处理未root&#xff1a;中途如果有如下未root的情况&#x…

基于单片机的超声波测距仪

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、本课题研究的主要内容二、超声波测距仪的整体方案2.2 超声波测距仪设计原理 三、超声波测距仪系统硬件电路的设计3.1 超声波测距仪的基本结构 四、 超声波测距仪系统的软件设计4.1 主程序软件设计仿真 五、结…

从信号中去除 60 Hz 杂声

美国和其他几个国家/地区的交流电以 60 Hz 的频率振荡。这些振荡通常会破坏测量结果&#xff0c;必须将其减去。 在存在 60 Hz 电力线噪声的情况下&#xff0c;研究模拟仪器的输入的开环电压。电压采样频率为 1 kHz。 load openloop60hertz, openLoop openLoopVoltage;Fs 10…

一文详解:传统企业如何把进销存管理流程搬到线上?

进销存管理是企业管理的核心流程之一&#xff0c;它有助于提高效率、降低成本、增加盈利&#xff0c;同时确保客户满意度&#xff0c;这对于企业的长期成功和竞争力至关重要。但在信息化转型的浪潮下&#xff0c;很多企业的传统进销存流程却遇到不少问题。 如果你也在考虑把进…

JavaEE平台技术——Spring和Spring Boot

JavaEE平台技术——Spring和Spring Boot 1. 控制反转1.1. IoC是什么1.2. IoC能做什么1.3. IoC和DI 2. SpringBean对象定义3. Spring容器4. SpringBoot 在观看这个之前&#xff0c;大家请查阅前序内容。 &#x1f600;JavaEE的渊源 &#x1f600;&#x1f600;JavaEE平台技术——…

【Unity基础】7.动画状态参数

【Unity基础】7.动画状态参数 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity基础系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;创建动画状态 (1) 创建动画状态 不好意思各位~最近工作比较忙&#xff0c;稍微耽误了这两周的博客。话…

【Mybatis小白从0到90%精讲】09:Mybatis动态SQL:if、where、set标签

文章目录 前言一、if 标签二、where 标签三、set 标签前言 动态SQL 是 Mybatis的亮点功能之一,如果你经历过 拼接SQL 的繁琐痛苦,那么你就能切身感受到动态SQL到底有多爽!真香哈~ 另外,Mybatis将动态SQL设计的如此自然,让人看看就能理解和接受,我想这也是Mybaits如此深…

智慧城市排水系统,管网水位监测仪怎么监测

地下排水管网应用于城市的多个环境之中&#xff0c;比如排放雨水&#xff0c;污水或者是地表水等&#xff0c;总之是在维护城市的安全运行&#xff0c;并且保护城市地下生命线处于正常状态。但是一旦排水系统面对各种极端天气&#xff0c;便有可能会突发安全事故&#xff0c;导…

仿写知乎日报第三周

新学到的 本周新学习了FMDB数据库&#xff0c;并对Masonry的使用有了更近一步的了解&#xff0c;还了解了cell的自适应高度 FMDB数据库的介绍和使用&#xff1a;iOS——FMDB的介绍与使用 cell自适应高度和Mansonry自动布局 本周写了评论区&#xff0c;在写评论区的时候&…

WebSocket Day02 : 握手连接

前言 握手连接是WebSocket建立通信的第一步&#xff0c;通过客户端和服务器之间的一系列握手操作&#xff0c;确保了双方都支持WebSocket协议&#xff0c;并达成一致的通信参数。握手连接的过程包括客户端发起握手请求、服务器响应握手请求以及双方完成握手连接。完成握手连接后…