
# 数据库安全设置
#### 密码复杂度要求
- 华为云TaurusDB for PostgreSQL数据库服务Console端数据库密码复杂度，请参见[购买TaurusDB for PostgreSQL实例](https://support.huaweicloud.com/usermanual-taurusdb-pg/taurusdb_03_0004.html)中的数据库配置表格。
- 华为云TaurusDB for PostgreSQL数据库实例数据库对在客户端新创建的数据库用户，设置了密码安全策略：
  - 密码最小长度为8个字符。
  
  - 密码中必须含有字母和非字母，其中，非字母包括数字和特殊字符。
  
  - 密码不得包含用户名。
   
 
#### SSL数据加密
TaurusDB for PostgreSQL实例默认开启SSL数据加密，且不支持关闭。
#### 创建用户建议
用户在使用CREATE USER或CREATE ROLE命令时，建议指定VALID UNTIL 'timestamp' 参数（timestamp为过期时间戳），设置用户密码的过期时间。
#### 访问数据库对象建议
用户在访问数据库对象时，建议指定数据库对象的schema名，以防止特定场景下的"[特洛伊木马](https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path)"攻击。
#### 账户说明
您在创建TaurusDB for PostgreSQL数据库实例时，系统会自动为实例创建如下系统账户（用户不可使用），用于给数据库实例提供完善的后台运维管理服务。
![](https://support.huaweicloud.com/usermanual-taurusdb-pg/public_sys-resources/notice_3.0-zh-cn.png)
如果试图删掉、重命名、修改这些账户的密码和权限，会导致出错，请谨慎操作。
- rdsAdmin：管理账户，拥有最高的superuser权限，用于查询和修改实例信息、故障排查、迁移、恢复等操作。
- pg_execute_server_program：允许用运行该数据库的用户执行数据库服务器上的程序来配合COPY和其他允许执行服务器端程序的函数。
- pg_read_all_settings：读取所有配置变量，甚至是那些通常只对超级用户可见的变量。
- pg_read_all_stats：读取所有的pg_stat_\*视图并且使用与扩展相关的各种统计信息，甚至是那些通常只对超级用户可见的信息。
- pg_stat_scan_tables：执行可能会在表上取得ACCESS SHARE锁的监控函数（可能会持锁很长时间）。
- pg_signal_backend：向其他后端发送信号（例如：取消查询、中止）。
- pg_read_server_files：允许使用COPY以及其他文件访问函数从服务器上该数据库可访问的任意位置读取文件。
- pg_write_server_files：允许使用COPY以及其他文件访问函数在服务器上该数据库可访问的任意位置中写入文件。
- pg_monitor：读取/执行各种监控视图和函数。这个角色是pg_read_all_settings、pg_read_all_stats以及pg_stat_scan_tables的成员。
- rdsRepl：复制账户，用于备实例在主实例上同步数据。
- rdsBackup：备份账户，用于后台的备份。
- rdsMetric：指标监控账户，用于watchdog采集数据库状态数据。
 
