计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
态势感知 SA
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
文档首页/ 云数据库 RDS/ 最佳实践/ RDS for PostgreSQL/ RDS for PostgreSQL安全最佳实践

RDS for PostgreSQL安全最佳实践

更新时间:2025-01-02 GMT+08:00

PostgreSQL数据库在可靠性、稳定性、数据一致性等获得了业内极高的声誉,已成为许多企业的首选开源关系数据库,业界简称PG。RDS for PostgreSQL是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线云数据库服务。

为加强RDS for PostgreSQL数据库安全性,本文将从以下几个维度给出建议,您可以根据业务需要在本指导的基础上进行安全配置。

配置数据库的最大连接数

max_connections 决定了数据库的最大并发连接数。增加这个参数值可能引起RDS for PostgreSQL请求更多的System V共享内存或者信号量,会导致超出操作系统默认配置允许的值。请根据业务的复杂度,合理配置max_connections,具体可参考实例使用规范

配置客户端认证超时时间

authentication_timeout控制完成客户端认证的时间上限,单位是秒。该参数可以防止客户端长时间占用连接通道,默认是60s。如果在指定的时间内没有完成认证,连接将被强制关闭。该超时时间的配置是为了增强PostgreSQL的安全性。

配置SSL连接和加密算法

尽可能利用SSL进行TCP/IP连接,使用SSL加密通信可确保客户端和服务器之间的所有通信都经过加密,防止数据被泄露和篡改,确保数据的完整性。在设置SSL加密时,服务端需要配置安全的TLS协议和加密算法,推荐使用TLSv1.2协议,加密算法推荐使用EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EDH+aRSA+AESGCM:EDH+aDSS+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!SRP:!RC4,具体请参考SSL连接

可通过修改参数“ssl_min_protocol_version”配置TLS协议,修改参数“ssl_ciphers”配置加密算法。

配置密码加密功能

密码必须要加密。使用CREATE USER或者ALTER ROLE修改密码时候,默认使用加密的方式,推荐使用scram-sha-256,可通过修改参数“password_encryption”进行配置。

MD5选项仅供与低版本兼容场景使用,新建数据库实例默认使用scram-sha-256。

须知:

参数“password_encryption”修改后需要重置密码后才能生效。

配置服务器拒绝带反斜杠转义的引号

参数“backslash_quote”控制字符串里面引号是否可以被\'代替。推荐使用SQL标准方法,表示一个引号是写两遍 (''),如果客户端代码不能正确的转义,可能发生SQL注入攻击。建议配置参数“backslash_quote”值为“safe_encoding”,拒绝带反斜杠转义的引号的查询,可以避免SQL注入的风险。

定期检查并删除业务不再使用的角色

对于每个查询出来的角色,检查是否必须存在,任何未知的角色都需要被审视,确保每个角色都是正常使用的,否则删除这些角色。可通过如下命令进行查询:

SELECT rolname FROM pg_roles;

建议回收public模式的所有权限

public模式是默认的模式,所有用户都可以访问其中的对象,包括表、函数、视图等。如果public模式中的对象被授予了权限,那么所有用户都可以访问这些对象,这可能会导致安全漏洞。root用户可通过如下命令回收权限:

revoke all on schema public from public;

设置合理的用户角色密码有效期

当创建角色时候,使用VALID UNTIL关键字设置过多长时间后角色的密码不再有效。如果这个关键字被忽略,密码会长期有效。建议定期更改密码,例如每三个月更改一次密码。可通过如下命令进行设置:

CREATE ROLE name WITH PASSWORD 'password' VALID UNTIL 'timestamp';

检查是否设置密码有效期:

SELECT rolname,rolvaliduntil FROM pg\_roles WHERE rolsuper = false AND rolvaliduntil IS NULL;

配置日志级别记录发生错误的SQL语句

参数“log_min_error_statement”控制哪些引起错误的SQL语句记录到服务器日志中。对于大于等于当前配置等级的SQL语句消息,会记录到日志里。有效的值包括debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic。“log_min_error_statement”至少配置为“error”,具体可参考日志配置管理

确保数据库账号的最低权限

RDS for PostgreSQL支持“基于角色”的方法授予账号对数据和命令的访问权限。建议管理员结合业务需要,遵从最低授权原则,创建合适的数据库账号,对账号进行授权。如果发现存在不符合该角色的账号权限,请结合业务需要,对账号权限进行更新或者删除。由于PostgreSQL存在一些内置账号,用于给数据库实例提供完善的后台运维管理服务,禁止用户使用和删除。

开启备份功能

创建云数据库RDS实例时,系统默认开启自动备份策略,默认自动备份保留7天,可根据业务需要调整备份保留时长。RDS for PostgreSQL实例支持自动备份手动备份,您可以定期对数据库进行备份,当数据库故障或数据损坏时,可以通过备份文件恢复数据库,从而保证数据可靠性,详情请参见数据备份

开启数据库审计功能

通过将PostgreSQL审计扩展(pgAudit)与RDS for PostgreSQL数据库实例一起使用,可以捕获审计员通常需要或满足法规要求的详细记录。例如,您可以设置pgAudit扩展来跟踪对特定数据库和表所做的更改、记录进行更改的用户以及许多其他详细信息。pgAudit默认不开启,根据业务需要开启插件。具体配置可参考使用pgAudit插件

避免绑定EIP直接通过公网访问RDS for PostgreSQL

避免RDS for PostgreSQL部署在公网或者DMZ里,应该将RDS for PostgreSQL部署在华为云内部网络,使用路由器或者防火墙技术把RDS for PostgreSQL保护起来,避免直接绑定EIP方式从公网访问RDS for PostgreSQL。通过这种方式防止未授权的访问及DDos攻击等。建议解绑弹性公网IP,如果您的业务必须绑定EIP,请务必通过设置安全组规则限制访问数据库的源IP。

数据库版本更新到最新版本

PostgreSQL社区当前9.5/9.6/10版本已经EOL,社区已不再维护,云上9.5/9.6版本已经发布EOS公告。使用较老的版本可能存在安全风险,运行最新版本的软件可以避免受到某些攻击。如果业务需要,可通过升级内核小版本或者使用转储与还原升级大版本

配置账号认证失败延迟时间

PostgreSQL数据库默认内置了auth_delay插件,auth_delay会使服务器在返回认证失败之前短暂停止,使得暴力破解数据库密码更难。可通过修改RDS for PostgreSQL实例参数设置auth_delay.milliseconds参数(该参数为返回认证失败之前等待的毫秒数)延迟账号登录认证失败的等待时间,缺省值是0。

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容