在 Amazon RDS 中為 PostgreSQL 資料庫執行個體啟用加密連線 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon RDS 中為 PostgreSQL 資料庫執行個體啟用加密連線

創建者:羅希特·卡普爾 (AWS)

環境:PoC 或試點

技術:資料庫;網路;安全性、身分識別、合規性

工作負載:開源

AWS 服務:Amazon RDS; Amazon Aurora

Summary

Amazon Relational Database Service 服務 (Amazon RDS) 支援 PostgreSQL 資料庫執行個體使用 SSL 加密。您可以使用 SSL 加密應用程式和 Amazon RDS 適用於 PostgreSQL 資料庫執行個體之間的 PostgreSQL 連線。根據預設,亞馬遜 RDS 版使用 SSL/TLS,並預期所有用戶端都能使用 SSL/TLS 加密進行連線。Amazon RDS for PostgreSQL TLS 版本 1.1 和 1.2 版。

此模式說明如何為 Amazon RDS for PostgreSQL 資料庫執行個體啟用加密連線。您可以使用相同的程序為 Amazon Aurora PostgreSQL 相容版本啟用加密連線。

先決條件和限制

架構

在 Amazon RDS 中為 PostgreSQL 資料庫執行個體啟用加密連線

工具

  • pgAdmin 是一個開放原始碼的管理和開發平 PostgreSQL。您可以在 Linux、Unix、macOS 和視窗上使用 PgAdmin pgAdmin 來管理您在 PostgreSQL 10 及更新版本中的資料庫物件。

  • PostgreSQL 編輯器提供更易於使用的介面,可協助您建立、開發和執行查詢,以及根據您的需求編輯程式碼。

最佳實務

  • 監視不安全的資料庫連線。

  • 稽核資料庫存取權限。

  • 確保備份和快照在靜態時加密。

  • 監控資料庫存取。

  • 避免不受限制的存取群組。

  • 使用 Amazon 增強您的通知 GuardDuty。

  • 定期監控政策遵守情況。

史诗

任務描述所需技能

將受信任的憑證載入您的電腦。

若要將憑證新增至您電腦的受信任的根憑證授權單位存放區,請依照下列步驟執行。(這些說明使用窗口服務器作為一個例子。)

  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. 在導覽窗格中,選擇 Parameter groups (參數群組)。

  3. 選擇「建立參數群組」,然後設定下列值: 

    • 選擇「參數群組族群」做為「參數群組」14

    • 針對群組名稱,請輸入 pgsql-SSL <database_instance>。

    • 在「描述」中,輸入要新增之參數群組的任意格式描述。

    • 選擇建立

  4. 選擇您建立的參數群組。

  5. Parameter group actions (參數群組動作),選擇 Edit (編輯)

  6. 尋找並將其設定變更為 1。

    注意:變更此參數之前,請先進行用戶端測試。

  7. 選擇儲存變更

若要將參數群組與 PostgreSQL 資料庫執行個體建立關聯,請執行

  1. 在 Amazon RDS 主控台的導覽窗格中,選擇「資料庫」,然後選擇 PostgreSQL 資料庫執行個體。

  2. 選擇 Modify (修改)。

  3. 在「其他規劃」下,選擇新參數群組,然後選擇「繼續」。

  4. 排程修改下,選擇立即套用

  5. 選擇 Modify DB instance (修改資料庫執行個體)

如需詳細資訊,請參閱 Amazon RDS 文件

DevOps 工程師,移民工程師,DBA

強制 SSL 連線。

Connect 至 Amazon RDS for PostgreSQL 的資料庫執行個體。不使用 SSL 的連線嘗試會遭到拒絕,並顯示錯誤訊息。如需詳細資訊,請參閱 Amazon RDS 文件

DevOps 工程師,移民工程師,DBA
任務描述所需技能

安裝 SSL 擴充功能。

  1. 啟動一個 psql 或 pgAdmin 連接作為 DBA。

  2. 呼叫 ssl_is_use () 函數來判斷是否正在使用 SSL。

    select ssl_is_used();

    該函數返回,t如果連接使用 SSL; 否則返回f

  3. 安裝 SSL 擴充功能。

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

如需詳細資訊,請參閱 Amazon RDS 文件

DevOps 工程師,移民工程師,DBA
任務描述所需技能

設定 SSL 的用戶端。

透過使用 SSL,您可以啟動 PostgreSQL 伺服器,並支援使用 TLS 通訊協定的加密連線。伺服器會監聽同一個 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();

對於其他用戶端:

  • 修改相應的應用程式公開金鑰參數。這可能是作為一個選項,作為連接字符串的一部分,或者作為 GUI 工具連接頁面上的屬性。 

檢閱這些用戶端的下列頁面:

DevOps 工程師,移民工程師,DBA

故障診斷

問題解決方案

無法下載 SSL 憑證。

請檢查您與網站的連線,然後重試將憑證下載到您的本機電腦。

相關資源