在 Amazon RDS 中为 PostgreSQL 数据库实例启用加密连接 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon RDS 中为 PostgreSQL 数据库实例启用加密连接

创建者:Rohit Kapoor (AWS)

环境:PoC 或试点

技术:数据库;联网;安全、身份、合规

工作负载:开源

Amazon Web Services:Amazon RDS;Amazon Aurora

Summary

Amazon Relational Database Service(Amazon RDS)支持适用于 PostgreSQL 数据库实例的 SSL 加密。使用 SSL,您可以加密应用程序与 Amazon RDS for PostgreSQL 数据库实例之间的 PostgreSQL 连接。默认情况下,Amazon RDS for PostgreSQL 使用 SSL/TLS,并期望所有客户端都使用 SSL/TLS 加密进行连接。Amazon RDS for PostgreSQL 支持 TLS 版本 1.1 和 1.2。

此模式介绍了如何为 Amazon RDS for PostgreSQL 数据库实例启用加密连接。您可使用相同进程为 Amazon Aurora PostgreSQL-Compatible Edition 启用加密连接。

先决条件和限制

架构

在 Amazon RDS 中为 PostgreSQL 数据库实例启用加密连接

工具

  • pgAdmin 是 PostgreSQL 的开源管理和开发平台。您可在 Linux、Unix、macOS 和 Windows 上使用 pgadmin 来管理 PostgreSQL 10 及更高版本中的数据库对象。

  • PostgreSQL 编辑器提供了更加用户友好的界面,可帮助您创建、开发和运行查询,并按您的要求编辑代码。

最佳实践

  • 监控不安全数据库连接。

  • 审核数据库访问权限。

  • 确保对备份和快照进行静态加密。

  • 监控数据库访问。

  • 避免使用不受限制的访问组。

  • 使用 Amazon 增强您的通知效果 GuardDuty。

  • 定期监控政策遵守情况。

操作说明

任务描述所需技能

将受信任的证书加载到您的计算机。

要将证书添加到计算机的受信任的根证书颁发机构存储中,请按照以下步骤操作。(这些指令以 Windows Server 为例。)

  1. 在 Windows 服务器中,选择开始运行,然后键入 mmc

  2. 在控制台中,选择文件添加/删除管理单元

  3. 可用管理单元下方,选择证书,然后选择添加

  4. 此管理单元将始终管理证书下方,选择计算机账户下一步

  5. 选择本地计算机完成

  6. 如果您没有其他管理单元要添加到控制台,请选择确定

  7. 在控制台树中,双击证书

  8. 右键单击受信任的根证书颁发机构

  9. 依次选择所有任务导入以导入已下载的证书。

  10. 按照“证书导入向导”中的步骤操作。

DevOps 工程师、迁移工程师、DBA
任务描述所需技能

创建参数组和设置 rds.force_ssl 参数。

如果 PostgreSQL 数据库实例具有自定义参数组,请编辑该参数组并将 rds.force_ssl 更改为 1。

如果数据库实例使用未启用 rds.force_ssl 的默认参数组,则创建新的参数组。您可使用 Amazon RDS API 修改新的参数组,也可以按照以下说明手动修改新的参数组。

要创建新参数组,请执行以下操作:

  1. 登录 AWS 管理控制台,打开托管数据库实例的 AWS 区域 的 Amazon RDS 控制台

  2. 在导航窗格中,选择参数组

  3. 选择创建参数组,然后设置以下值: 

    • 对于参数组系列,选择 postgres14 或更高版本。

    • 对于组名,键入 pgsql-<database_instance>-ssl

    • 对于描述,为要添加的参数组输入自由格式的描述。

    • 选择创建

  4. 选择您创建的参数组。

  5. Parameter group actions (参数组操作) 中,选择 Edit (编辑)

  6. 找到 rds.force_ssl 并将其设置更改为 1

    注意:更改此参数之前,请先进行客户端测试。

  7. 选择保存更改

将参数组与您的 PostgreSQL 数据库实例相关联,请执行以下操作:

  1. 在 Amazon RDS 控制台上的导航窗格中,选择数据库,然后选择 PostgreSQL 数据库实例。

  2. 选择 Modify(修改)。

  3. 其他配置下方,选择新的参数组,然后选择继续

  4. 计划修改下方,选择立即应用

  5. 选择修改数据库实例

有关更多信息,请参阅 Amazon RDS 文档

DevOps 工程师、迁移工程师、DBA

强制执行 SSL 连接。

连接到 Amazon RDS for PostgreSQL 数据库实例。不使用 SSL 的连接尝试会被拒绝,并显示错误消息。有关更多信息,请参阅 Amazon RDS 文档

DevOps 工程师、迁移工程师、DBA
任务描述所需技能

安装 SSL 扩展。

  1. 以数据库管理员身份启动 psql 或 pgadmin 连接。

  2. 调用 ssl_is_used() 函数以判断是否在使用 SSL。

    select ssl_is_used();

    如果连接使用的是 SSL,则此函数将返回 t;否则返回 f

  3. 安装 SSL 扩展。

    create extension sslinfo; show ssl; select ssl_cipher();

有关更多信息,请参阅 Amazon RDS 文档

DevOps 工程师、迁移工程师、DBA
任务描述所需技能

为 SSL 配置客户端。

通过使用 SSL,您可启动支持使用 TLS 协议的加密连接的 PostgreSQL 服务器。服务器在同一 TCP 端口上侦听标准连接和 SSL 连接,并与任何连接客户端协商是否使用 SSL。默认情况下,这是一个客户端选项。

如果您使用 psql 客户端:

  1. 确保已将 Amazon RDS 证书加载到您的本地计算机。

  2. 通过添加以下内容启动 SSL 客户端连接:

    psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser sslmode=verify-full sslrootcert=rds-ssl-ca-cert.pem select ssl_cipher();

对于其他 PostgreSQL 客户端:

  • 修改相应的应用程序公有密钥参数。在 GUI 工具的连接页上,这可能以选项或连接字符串一部分或属性形式提供。 

查看以下客户页面:

DevOps 工程师、迁移工程师、DBA

故障排除

问题解决方案

无法下载 SSL 证书。

检查您与网站的连接,然后重试将证书下载到您的本地计算机。

相关资源