在 Azure Cosmos DB for PostgreSQL 中配置 TLS

适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)

协调器节点要求客户端应用程序与传输层安全性 (TLS) 连接。 通过在数据库服务器与客户端应用程序之间强制执行 TLS,可以在传输过程中保持数据的机密性。 下面描述的额外验证设置也可以防止“中间人”攻击。

强制实施 TLS 连接

应用程序使用“连接字符串”来标识连接的目标数据库和设置。 不同的客户端需要不同的设置。 若要查看常见客户端使用的连接字符串的列表,请参阅 Azure 门户中群集的“连接字符串”部分。

TLS 参数 sslsslmode 因连接器的功能而异(例如 ssl=truesslmode=requiresslmode=required)。

确保应用程序或框架支持 TLS 连接

某些应用程序框架没有为 PostgreSQL 连接默认启用 TLS。 但是,如果没有安全连接,应用程序将无法连接到协调器节点。 请查阅应用程序文档,了解如何启用 TLS 连接。

需要证书验证才可启用 TLS 连接性的应用程序

在某些情况下,应用程序需要具备从受信任的证书颁发机构 (CA) 证书文件 (.cer) 生成的本地证书文件才能实现安全连接。 用于连接到 Azure Cosmos DB for PostgreSQL 的证书位于 https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem。 下载证书文件并将其保存到首选位置。

注意

若要检查证书的真伪,可以使用 OpenSSL 命令行工具来验证其 SHA-256 指纹:

openssl x509 -in DigiCertGlobalRootG2.crt.pem -noout -sha256 -fingerprint

# should output:
# CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F

使用 psql 进行连接

下面的示例展示了如何使用 psql 命令行实用工具来连接到协调器节点。 使用 sslmode=verify-full 连接字符串设置来强制执行 TLS 证书验证。 将本地证书文件路径传递给 sslrootcert 参数。

下面是 psql 连接字符串示例:

psql "sslmode=verify-full sslrootcert=DigiCertGlobalRootG2.crt.pem host=c-mydemocluster.12345678901234.postgres.cosmos.chinacloudapi.cn dbname=citus user=citus password=your_pass"

提示

确认传递给 sslrootcert 的值与你保存的证书的文件路径匹配。

后续步骤

使用 Azure Cosmos DB for PostgreSQL 中的防火墙规则进一步提高安全性。