使用 PostgreSQL 設定 Oracle Cloud Infrastructure Database 中的安全通訊端層
簡介
Oracle Cloud Infrastructure Database with PostgreSQL (OCI Database with PostgreSQL) 僅支援資料庫執行處理的安全通訊端層 (SSL) 加密。透過使用 SSL,您可以加密應用程式與 PostgreSQL 資料庫執行處理之間的連線。
若要使用 PostgreSQL 執行處理保護與 OCI 資料庫的從屬端連線,必須使用 SSL 加密,以確保傳輸期間的資料安全。透過設定 hostssl
連線類型並使用 sslmode
參數,您可以控制 SSL 驗證層次以增加安全性。依照預設,從屬端和伺服器連線都會啟用 TLSv1.2
,符合業界標準的做法。對於完全安全且合規的 PostgreSQL 環境,利用這些 SSL 設定是很重要的。
若為安全從屬端連線,OCI 資料庫若為 PostgreSQL,只允許 pg_hba.conf
檔案中的 hostssl
連線類型。hostssl
項目可確保使用 SSL 加密 TCP/IP 連線,要求用戶端使用 SSL 進行認證。您也可以透過 sslmode
參數指定 SSL 驗證層次,其中包括 require
、verify-ca
和 verify-full
等選項。
目前,OCI Database 中已設定 ssl_max_protocol_version
和 ssl_min_protocol_version
參數與 PostgreSQL,以便在從屬端和伺服器連線使用 TLSv1.2
。不過,請注意,使用 PostgreSQL 的 OCI 資料庫無法強制執行特定的 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 保護 | 敘述句 |
---|---|---|---|
disable | 編號 | 編號 | 我不關心安全性,也不想支付加密的開銷。 |
allow - 允許 | 或許 | 編號 | 我不關心安全性,但是如果伺服器堅持加密,我會負擔其負擔。 |
偏好 | 或許 | 編號 | 我不關心加密,但是如果伺服器支援加密,我希望支付加密的負擔。 |
需要 | 是 | 編號 | 我希望我的資料經過加密,我接受這些額外負荷。我信任網路會確保我一直連線到我想要的伺服器。 |
verify-ca | 是 | 依據 CA 原則 | 我希望我的資料經過加密,我接受這些額外負荷。我要確定我連線的是我信任的伺服器。 |
驗證完整 | 是 | 是 | 我希望我的資料經過加密,我接受這些額外負荷。我想要確定連線到我信任的伺服器,而且這是我指定的伺服器。 |
如需各種 sslmodes
的詳細資訊,請參閱 Table 31-1 SSL MODE DESCRIPTIONS 。
在使用 PostgreSQL 的 OCI 資料庫中,sslmode
必須設為 require
或更新版本 (verify-ca
或 verify-full
),因為法規與規範需求不支援非 SSL 連線。必須要有 SSL 連線,才能確保依照 OCI 的合規性標準加密所有傳輸中連線。
OCI 資料庫中搭配 PostgreSQL 資料庫節點使用的憑證是由透過 OCI Certificates 服務管理的專用憑證授權機構 (CA) 所發出,此憑證遵循標準化的 OCI 核准組態。此方法與傳統的自行簽署憑證不同,通常會使用以 OpenSSL 之類工具產生的非標準設定值。
使用各種 SSL 模式建立 OCI 資料庫與 PostgreSQL 的連線
使用 PostgreSQL 且沒有 SSL 的 OCI 資料庫連線嘗試被拒絕,訊息如下。
no pg_hba.conf entry for host "yy.yy.yy.yy", user "xxxxx", database "zzzzzz", no encryption
每當出現上述錯誤訊息時,建議您檢查 SSL 模式值,並將 sslmode
參數設為 require
或更高,以解決此問題。
-
設定
require
SSL 模式。此模式會強制連線使用 SSL,但不會驗證伺服器的憑證。
psql "sslmode=require host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
-
使用
verify-ca
SSL 模式驗證憑證授權機構。此模式會強制 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
SSL 模式驗證完整。此模式會強制 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
擷取資訊。
您可以使用下列查詢,依處理、從屬端和應用程式,以 PostgreSQL 執行處理的 SSL 使用狀況收集 OCI 資料庫的詳細資訊。
您可以使用系統檢視 pg_stat_ssl
來查看所有連線的 SSL 狀態。如需詳細資訊,請參閱表格 27.8. pg_stat_ssl
檢視。
在不同的 GUI 工具中設定 SSL 模式
以下是一些可用於連線至 OCI PostgreSQL 資料庫的開放原始碼 GUI 工具。此工作示範如何在這些工具中將 sslmode
設定為 require
或更新版本,以避免在連線至 OCI PostgreSQL 資料庫時發生連線問題。
-
pgAdmin
-
在 pgAdmin 中,瀏覽至伺服器、註冊、伺服器,然後輸入必要的資料庫連線詳細資訊。
-
按一下參數,移至 SSL 區段,您可以在此設定 SSL 模式設定。
-
請確定從可用的下拉式功能表中將
sslmode
設為require
或更高層次 (例如verify-ca
或verify-full
),以符合安全連線需求。
-
-
DBeaver
-
在 DBeaver 中,導覽至建立,然後按一下連線。
-
從資料庫類型清單中選取 PostgreSQL ,然後按下一步繼續。
-
在連線設定值中,選取連線設定值內的 SSL 區段,以設定 SSL 參數。
-
將 SSL 模式設為
require
。
-
確認
- 作者 - Kaviya Selvaraj (資深會員技術人員)
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Configure Secure Socket Layer in OCI Database with PostgreSQL
G39569-01
Copyright ©2025, Oracle and/or its affiliates.