zoukankan      html  css  js  c++  java
  • PG-用户账号安全

    用户安全

    用户密码

    密码复杂度

    PostgreSQL支持通过动态库的方式扩展PG的功能(即插件),而密码复杂度可以通过预加载passwordcheck.so模块实现。该模块可以检查密码复杂度(密码长度,包含数字,字母,大小写,特殊字符等,同时排除暴力破解字典中的字符串)

    配置方式

    通过$PGDATA/postgresql.conf

    • local_preload_libraries (string)
    • session_preload_libraries (string)
    • shared_preload_libraries (string)

    image-20210617110041380

    创建测试用户

    --创建用户
    CREATE USER u1 WITH PASSWORD '123';
    create role test password 'Test#2021' login;
    
    --修改用户密码
    ALTER USER u1 WITH PASSWORD '111';
    alter role test password 'test#2021';
    

    密码加密存储

    加密方式
    show password_encryption;
    
    查看用户密码
    select usename, passwd, valuntil from pg_shadow where usename='test';
    
    SELECT rolname,rolpassword FROM pg_authid;
    

    用户密码到期

    设置用户密码过期时间
    alter user test with valid until '2021-01-01 08:00:00';
    
    查看用户密码过期时间
    -- 查看用户信息
    select usename, valuntil from pg_user
    where usename = 'postgres';
    

    valuntil 列表示密码的有效期

    密码失败验证延迟

    auth_delay.so 模块会导致服务器在报告身份验证失败之前短暂停留,这个主要用于防止暴力破解. 验证失败后, 延迟一个时间窗口才能继续验证。

    配置
    ls -l $PGHOME/lib/auth_delay.so
    
    # 配置参数文件
    grep 'shared_preload_libraries' $PGDATA/postgresql.conf 
    
    auth_delay.milliseconds (int) --指定延迟时间
    
    

    防止密码被记录到数据库日志中

    密码的配置命令可能会被记录到history文件及csvlog日志文件中(如果开启了DDL或更高级别审计log_statement),这些文件明文记录了密码,可能造成密码泄露风险。

    密码可能被记录的2个地方
    • HISTFILE

      • 可以通过 PSQL_HISTORY 变量配置历史文件存储路径

      • 默认存储路径

        • Linux/Unix: ~/.psql_history
        • Windows: %APPDATA%postgresqlpsql_history
      • 可以在~/.psqlrc 文件中为每个数据库指定独立的 history 文件

        # 添加如下配置
        vi ~/.psqlrc
        set HISTFILE ~/.psql_history- :DBNAME
        
    • 数据库中log_filename配置文件中

      • 当 log_statement 配置 ddl 或更高级别审计时,将密码明文记录到日志文件中

        grep 'log_statement' $PGDATA/postgresql.conf
        
    防止记录密码的方式创建或修改用户密码
    • 使用createuser命令行工具带上-W选项,提示输入密码
    • 使用pg_md5工具生成密码,然后使用该md5的值设置用户密码
  • 相关阅读:
    Smali语法
    css 实现垂直水平居中常用方法
    css border实现三角形
    vue-router学习笔记
    vuex状态管理
    es6 reduce的用法
    vue学习笔记
    chrome调式工具
    前端需要了解的http知识
    underscore.js and moment.js
  • 原文地址:https://www.cnblogs.com/binliubiao/p/14904820.html
Copyright © 2011-2022 走看看