使用 PostgreSQL 在 Oracle Cloud Infrastructure Database 中配置安全套接字层
简介
Oracle Cloud Infrastructure Database with PostgreSQL(OCI Database with PostgreSQL) 仅支持对数据库实例进行安全套接字层 (SSL) 加密。通过使用 SSL,可以加密应用程序与 PostgreSQL 数据库实例之间的连接。
SSL 加密对于使用 PostgreSQL 实例保护与 OCI 数据库的客户端连接至关重要,可确保在传输期间提供数据保护。通过配置 hostssl
连接类型并使用 sslmode
参数,可以控制 SSL 验证的级别以提高安全性。缺省情况下,为客户机和服务器连接启用 TLSv1.2
,以符合行业标准做法。对于完全安全且合规的 PostgreSQL 环境,利用这些 SSL 设置至关重要。
对于安全客户端连接,OCI Database with PostgreSQL 仅允许 pg_hba.conf
文件中使用 hostssl
连接类型。hostssl
条目确保使用 SSL 对 TCP/IP 连接进行加密,要求客户机使用 SSL 进行验证。您还可以通过 sslmode
参数指定 SSL 验证级别,该参数包括 require
、verify-ca
和 verify-full
等选项。
Currently, both the ssl_max_protocol_version
and ssl_min_protocol_version
parameters are configured in OCI Database with PostgreSQL to use TLSv1.2
for both client and server connections.但是,需要注意的是,OCI Database with PostgreSQL 无法强制实施特定的 TLS 版本,因为这些参数是只读系统变量。
有关 PostgreSQL 数据库中 SSL 支持的更多信息,请参见 Secure TCP/IP Connections with SSL 。
注:对于 PostgreSQL,所有 OCI 区域都提供 SSL 支持。
目标
- 使用 SSL 加密将 OCI 数据库与 PostgreSQL 连接,以保护数据库实例。它将强调在
pg_hba.conf
文件中配置hostssl
连接类型以确保加密 TCP/IP 连接的重要性,并演示sslmode
参数如何控制 SSL 验证级别。此外,本教程还将说明客户机和服务器连接的 TLS 版本配置。
SSL 模型
下表说明了不同 sslmode
值所解决的风险,以及每个值的安全影响和相关开销。
SSL | 窃听保护 | MITM 保护 | 语句 |
---|---|---|---|
禁用 | 无 | 无 | 我并不关心安全性,也不想支付加密的开销。 |
允许 | 或许 | 无 | 我不在乎安全性,但如果服务器坚持使用加密,我将支付加密开销。 |
喜欢 | 或许 | 无 | 我不在乎加密,但如果服务器支持加密,我希望支付加密的开销。 |
需要 | 是 | 无 | 我希望对我的数据进行加密,并接受开销。我相信网络将确保我始终连接到我想要的服务器。 |
verify-ca | 是 | 取决于 CA 策略 | 我希望对数据进行加密,并接受开销。我想确保我连接到一个我信任的服务器。 |
验证已满 | 是 | 是 | 我希望对数据进行加密,并接受开销。我想确保我连接到我信任的服务器,并且这是我指定的服务器。 |
有关各种 sslmodes
的更多信息,请参见 Table 31-1 SSL MODE DESCRIPTIONS 。
在 OCI Database with PostgreSQL 中,sslmode
必须设置为 require
或更高版本(verify-ca
或 verify-full
),因为由于监管和合规要求,不支持非 SSL 连接。SSL 连接是必需的,以确保所有在途连接都按照 OCI 的合规性标准进行加密。
包含 PostgreSQL 数据库节点的 OCI 数据库中使用的证书由通过 OCI Certificates 服务管理的专用证书颁发机构 (CA) 颁发,该服务遵循 OCI 批准的标准化配置。这种方法与传统的自签名证书不同,后者通常使用使用 OpenSSL 等工具生成的非标准设置。
使用各种 SSL 模式使用 PostgreSQL 建立与 OCI 数据库的连接
与不带 SSL 的 PostgreSQL 的 OCI 数据库的连接尝试将被拒绝,并显示以下消息。
no pg_hba.conf entry for host "yy.yy.yy.yy", user "xxxxx", database "zzzzzz", no encryption
每当出现上述错误消息时,建议检查 SSL 模式值并将 sslmode
参数设置为 require
或更高值以解决该问题。
-
Set
require
SSL Mode 。此模式强制连接使用 SSL,但未验证服务器的证书。
psql "sslmode=require host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
-
Verify Certificate Authority with
verify-ca
SSL Mode.此模式强制使用 SSL,并且服务器证书将针对可信 CA 进行验证。它不会验证服务器证书是否与主机名匹配。
psql "sslmode=verify-ca sslrootcert=<parent_directory>/<dbsystem.pub> host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
sslrootcert
:从数据库系统的连接详细信息部分下载 CA 证书,并将其保存到以下位置:<parent_directory>/<dbsystem.pub>
,此文件包含可信 CA 证书。这可确保服务器证书由有效的 CA 签名。
-
Verify Full with
verify-full
SSL Mode 。此模式强制 SSL,根据可信 CA 验证服务器证书,并检查服务器证书是否与要连接到的主机(连接字符串中的主机名)匹配。
psql "sslmode=verify-full sslrootcert=<parent_directory>/<dbsystem.pub> host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
sslrootcert
:从数据库系统的连接详细信息部分下载 CA 证书,并将其保存到以下位置:<parent_directory>/<dbsystem.pub>
,此文件包含可信 CA 证书。
主机名匹配:这是最安全的选项,因为它可确保服务器证书由通过 OCI Certificates 服务管理的专用 CA 签名,并且证书与预期主机名匹配。
使用 PostgreSQL 确定 OCI 数据库中的 TLS 版本
下图显示了使用 PostgreSQL 实例连接到 OCI 数据库时的连接加密状态。
可以运行以下查询从 pg_settings
检索信息。
您可以使用以下查询,按流程、客户端和应用收集有关 OCI 数据库的详细信息,以及 PostgreSQL 实例的 SSL 使用情况。
可以使用系统视图 pg_stat_ssl
查看所有连接的 SSL 状态。有关详细信息,请参阅表 27.8. pg_stat_ssl
视图。
在不同的 GUI 工具中配置 SSL 模式
以下是一些可用于连接到 OCI PostgreSQL 数据库的开源 GUI 工具。此任务演示如何在这些工具中配置 sslmode
到 require
或更高版本,以防止连接到 OCI PostgreSQL 数据库时出现连接问题。
-
pgAdmin
-
在 pgAdmin 中,导航到服务器、注册和服务器,然后输入所需的数据库连接详细信息。
-
单击 Parameters(参数),转至 SSL 部分,在其中可以配置 SSL 模式设置。
-
确保从可用的下拉菜单中将
sslmode
设置为require
或更高级别(例如verify-ca
或verify-full
),以符合安全连接要求。
-
-
DBeaver
-
在 DBeaver 中,导航到创建并单击连接。
-
从数据库类型列表中选择 PostgreSQL ,然后单击下一步以继续。
-
在连接设置中,选择连接设置中的 SSL 部分以配置 SSL 参数。
-
将 SSL mode 设置为
require
。
-
确认
- 作者 - Kaviya Selvaraj(高级技术人员)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Configure Secure Socket Layer in OCI Database with PostgreSQL
G39568-01
Copyright ©2025, Oracle and/or its affiliates.