更新时间:2024-10-14 GMT+08:00

安全函数

安全函数

  • gs_encrypt_aes128(encryptstr,keystr)

    描述:使用基于keystr派生出的密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,并且至少包含大写字母、小写字母、数字和特殊字符中的三种字符。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。

    返回值类型:text

    返回值长度:至少为92字节,不超过4*[(Len+68)/3]字节,其中Len为加密前数据长度(单位为字节)。

    示例:

    1
    2
    3
    4
    5
    openGauss=# SELECT gs_encrypt_aes128('MPPDB','1234@abc');
                                          gs_encrypt_aes128
    ----------------------------------------------------------------------------------------------
     OF1g3+70oeqFfyKiWlpxfYxPnpeitNc6+7nAe02Ttt37fZF8Q+bbEYhdw/YG+0c9tHKRWM6OcTzlB3HnqvX+1d8Bflo=
    (1 row)
    

    由于该函数的执行过程需要传入口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。

  • gs_decrypt_aes128(decryptstr,keystr)

    描述:使用基于keystr派生出的密钥对decrypt字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正确解密。keystr不得为空。

    此函数需要结合gs_encrypt_aes128加密函数共同使用。

    返回值类型:text

    示例:

    1
    2
    3
    4
    5
    openGauss=# SELECT gs_decrypt_aes128('OF1g3+70oeqFfyKiWlpxfYxPnpeitNc6+7nAe02Ttt37fZF8Q+bbEYhdw/YG+0c9tHKRWM6OcTzlB3HnqvX+1d8Bflo=','1234@abc');
     gs_decrypt_aes128 
    -------------------
     MPPDB
    (1 row)
    

    由于该函数的执行过程需要传入口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。

  • gs_password_deadline()

    描述:显示当前账户密码离过期还距离多少天。

    返回值类型:interval

    示例:

    1
    2
    3
    4
    5
    openGauss=# SELECT gs_password_deadline();
      gs_password_deadline   
    -------------------------
     83 days 17:44:32.196094
    (1 row)
    
  • gs_password_notifytime()

    描述:显示账户密码到期前提醒的天数。

    返回值类型:int32

  • login_audit_messages(BOOLEAN)

    描述:查看登录用户的登录信息。

    返回值类型:元组

    示例:

    • 查看上一次登录成功的日期、时间和IP等信息。
      1
      2
      3
      4
      5
      openGauss=> select * from login_audit_messages(true);
       username | database |       logintime        |    mytype     | result | client_conninfo
      ----------+----------+------------------------+---------------+--------+-----------------
       omm      | postgres | 2020-06-29 21:56:40+08 | login_success | ok     | gsql@[local]
      (1 row)
      
    • 查看自从上一次登录成功以来登录失败的尝试次数、日期和时间。
      1
      2
      3
      4
      5
      6
      openGauss=>  select * from login_audit_messages(false);
       username | database |       logintime        |    mytype    | result |  client_conninfo
      ----------+----------+------------------------+--------------+--------+-------------------
       omm      | postgres | 2020-06-29 21:57:55+08 | login_failed | failed | [unknown]@[local]
       omm      | postgres | 2020-06-29 21:57:53+08 | login_failed | failed | [unknown]@[local]
      (2 rows)
      
  • login_audit_messages_pid(BOOLEAN)

    描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。

    返回值类型:元组

    在开启线程池的情况下,由于线程切换,同一session中获取到的backendid可能会发生变化,因此会造成多次调用该函数返回值不一致的情况。不建议用户在开启线程池的情况下调用此函数。

    示例:

    • 查看上一次登录成功的日期、时间和IP等信息。
      1
      2
      3
      4
      5
      openGauss=> SELECT * FROM login_audit_messages_pid(true);
       username | database |       logintime        |    mytype     | result | client_conninfo |    backendid
      ----------+----------+------------------------+---------------+--------+-----------------+-----------------
       omm      | postgres | 2020-06-29 21:56:40+08 | login_success | ok     | gsql@[local]    | 139823109633792
      (1 row)
      
    • 查看自从上一次登录成功以来登录失败的尝试次数、日期和时间。
      1
      2
      3
      4
      5
      6
      openGauss=> SELECT * FROM login_audit_messages_pid(false);
       username | database |       logintime        |    mytype    | result |  client_conninfo  |    backendid
      ----------+----------+------------------------+--------------+--------+-------------------+-----------------
       omm      | postgres | 2020-06-29 21:57:55+08 | login_failed | failed | [unknown]@[local] | 139823109633792
       omm      | postgres | 2020-06-29 21:57:53+08 | login_failed | failed | [unknown]@[local] | 139823109633792
      (2 rows)
      
  • inet_server_addr()

    描述:显示服务器IP信息。

    返回值类型:inet

    示例:

    1
    2
    3
    4
    5
    openGauss=# SELECT inet_server_addr();
     inet_server_addr
    ------------------
     10.10.0.13
    (1 row)
    
    • 上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。
    • 如果是通过本地连接,使用此接口显示为空。
  • inet_client_addr()

    描述:显示客户端IP信息。

    返回值类型:inet

    示例:

    1
    2
    3
    4
    5
    openGauss=# SELECT inet_client_addr();
     inet_client_addr
    ------------------
     10.10.0.50
    (1 row)
    
    • 上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。
    • 如果是通过本地连接,使用此接口显示为空。
  • pg_query_audit(timestamptz startime,timestamptz endtime,audit_log)

    描述:查看当前CN节点审计日志。

    返回值类型:record

    函数返回字段如下:

    名称

    类型

    描述

    time

    timestamp with time zone

    操作时间

    type

    text

    操作类型

    result

    text

    操作结果

    userid

    oid

    用户id

    username

    text

    执行操作的用户名

    database

    text

    数据库名称

    client_conninfo

    text

    客户端连接信息

    object_name

    text

    操作对象名称

    detail_info

    text

    执行操作详细信息

    node_name

    text

    节点名称

    thread_id

    text

    线程id

    local_port

    text

    本地端口

    remote_port

    text

    远端端口

  • pgxc_query_audit(timestamptz startime,timestamptz endtime)

    描述:查看所有CN节点审计日志。

    返回值类型:record

    函数返回字段同pg_query_audit函数。

  • pg_delete_audit(timestamp startime,timestamp endtime)

    描述:删除指定时间段的审计日志。
    返回值类型:void

  • alldigitsmasking

    描述:脱敏策略的内部函数,对所有字符进行脱敏。

    参数:col text, letter character default '0'

    返回值类型:text

  • creditcardmasking

    描述:脱敏策略的内部函数,对所有信用卡信息进行脱敏。

    参数:col text, letter character default 'x'

    返回值类型:text

  • randommasking

    描述:脱敏策略的内部函数,使用随机策略。

    参数:col text,

    返回值类型:text

  • fullemailmasking

    描述:脱敏策略的内部函数,对出现最后一个'.'之前的文本(除'@'符外)进行脱敏。

    参数:col text, letter character default 'x'

    返回值类型:text

  • basicemailmasking

    描述:脱敏策略的内部函数,对出现第一个'@'之前的文本进行脱敏。

    参数:col text, letter character default 'x'

    返回值类型:text

  • shufflemasking

    描述:脱敏策略的内部函数,对字符进行乱序排列。

    参数:col text

    返回值类型:text

  • regexpmasking

    描述:脱敏策略的内部函数,对字符进行正则表达式替换。

    参数:col text, reg text, replace_text text, pos INTEGER default 0, reg_len INTEGER default -1

    返回值类型:text

  • gs_encrypt(encryptstr,keystr, encrypttype)

    描述:根据encrypttype,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符), encrypttype可以是aes128或sm4。

    返回值类型:text

    示例:

    openGauss=#  SELECT gs_encrypt('MPPDB','Asdf1234','sm4'); 
             gs_encrypt         
     ------------------------------
     ZBzOmaGA4Bb+coyucJ0B8AkIShqc
    (1 row)

    由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。

  • gs_decrypt(decryptstr,keystr,decrypttype)

    描述:根据decrypttype,以keystr为密钥对decrypt字符串进行解密,返回解密后的字符串。解密使用的decrypttype 及keystr必须保证与加密时使用的encrypttype 及keystr一致才能正常解密。keystr不得为空。decrypttype可以是aes128或sm4。

    此函数需要结合gs_encrypt加密函数共同使用。

    返回值类型:text

    示例:

    openGauss=# select gs_decrypt('ZBzOmaGA4Bb+coyucJ0B8AkIShqc','Asdf1234','sm4');
     gs_decrypt 
    ------------
     MPPDB
    (1 row)

    由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。