Amazon Aurora Postgre 的安全性SQL - Amazon Aurora

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

Amazon Aurora Postgre 的安全性SQL

如需有關 Aurora 安全性的一般概觀,請參閱 Aurora 的安全。您可以在幾個不同層級管理 Amazon Aurora PostgreSQL 的安全性:

  • 若要控制誰可以在 Aurora PostgreSQL 資料庫叢集和資料庫執行個體上執行 Amazon RDS管理動作,請使用 AWS Identity and Access Management (IAM)。IAM 會在使用者存取服務之前處理使用者身分的身分驗證。其還會處理授權,亦即,是否允許使用者去做其想做的事情。IAM 資料庫身分驗證是您在建立 Aurora PostgreSQL 資料庫叢集時可以選擇的其他身分驗證方法。如需詳細資訊,請參閱Aurora 的身份和訪問管理

    如果您IAM使用 Aurora PostgreSQL 資料庫叢集,請先使用IAM憑證登入 AWS Management Console ,然後再開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  • 請務必根據 Amazon VPC服務在虛擬私有雲端 (VPC) 中建立 Aurora 資料庫叢集。若要控制哪些裝置和 Amazon EC2執行個體可以開啟 中 Aurora 資料庫叢集之資料庫執行個體端點和連接埠的連線VPC,請使用VPC安全群組。您可以使用 Secure Sockets Layer () 建立這些端點和連接埠連線SSL。此外,貴公司的防火牆規則可控管在公司內執行的裝置是否可開啟與資料庫執行個體的連線。如需 的詳細資訊VPCs,請參閱 Amazon VPC 和 極光

    支援的VPC租用取決於 Aurora PostgreSQL 資料庫叢集所使用的資料庫執行個體類別。default VPC 租用時,資料庫叢集會在共用硬體上執行。dedicated VPC 租用時,資料庫叢集會在專用硬體執行個體上執行。爆量效能資料庫執行個體類別僅支援預設VPC租用。爆量效能資料庫執行個體類別包括 db.t3 和 db.t4g 資料庫執行個體類別。所有其他 Aurora PostgreSQL 資料庫執行個體類別都支援預設和專用VPC租用。

    如需執行個體類別的詳細資訊,請參閱Amazon Aurora 數據庫實例類。如需 defaultdedicated VPC 租用的詳細資訊,請參閱 Amazon Elastic Compute Cloud 使用者指南中的專用執行個體

  • 若要授予許可給在 Amazon Aurora 資料庫叢集上執行的 PostgreSQL 資料庫,您可以採取與 Postgre 獨立執行個體相同的一般方法SQL。CREATE ROLEALTER ROLEGRANTREVOKE 等命令的運作方式與內部部署資料庫所使用的命令相同,會直接修改資料庫、結構描述,和資料表。

    PostgreSQL 使用角色 管理權限。此rds_superuser角色是 Aurora PostgreSQL 資料庫叢集上最特權的角色。此角色會自動建立,並授予建立資料庫叢集的使用者 (主要使用者帳户,依預設為 postgres)。如需進一步了解,請參閱 了解職員SQL角色和權限

所有可用的 Aurora PostgreSQL 版本,包括版本 10、11、12、13、14 和更新版本,都支援密碼的 Salted Challenge Response Authentication Mechanism (SCRAM) 作為訊息摘要 () 的替代方案MD5。我們建議您使用 ,SCRAM因為它比 更安全MD5。如需詳細資訊,包括如何將資料庫使用者密碼從 遷移MD5至 SCRAM,請參閱 使SCRAM用後SQL密碼加密

使用 SSL/ 保護 Aurora PostgreSQL 資料TLS

Amazon RDS支援 Aurora PostgreSQL 資料庫叢集的安全通訊端層 (SSL) 和傳輸層安全 (TLS) 加密。您可以使用 SSL/TLS,加密應用程式與 Aurora PostgreSQL 資料庫叢集之間的連線。您也可以強制 Aurora PostgreSQL 資料庫叢集的所有連線使用 SSL/TLS。Amazon Aurora PostgreSQL 支援 Transport Layer Security (TLS) 1.1 和 1.2 版。建議使用 TLS 1.2 進行加密連線。我們已從下列 Aurora Postgre 版本新增對 TLSv1.3 的支援SQL:

  • 15.3 版和所有更新版本

  • 14.8 版和更新的 14 版本

  • 13.11 版和更新的 13 版本

  • 12.15 版和更新的 12 版

  • 11.20 版和更新的 11 版本

如需 SSL/TLS 支援和 PostgreSQL 資料庫的一般資訊,請參閱 PostgreSQL 文件中的SSL支援。如需透過 使用 SSL/TLS 連線的相關資訊JDBC,請參閱 PostgreSQL 文件中的設定用戶端

SSL/TLS 支援適用於所有 Aurora Postgre AWS 的區域SQL。RDS 建立資料庫叢集時,Amazon 會為您的 Aurora PostgreSQL 資料庫叢集建立 SSL/TLS 憑證。如果您啟用 SSL/TLS 憑證驗證,則 SSL/TLS 憑證會將資料庫叢集端點納入 SSL/TLS 憑證的通用名稱 (CN),以防止詐騙攻擊。

若要透過 SSL/ 連線至 Aurora PostgreSQL 資料庫叢集TLS
  1. 下載憑證。

    如需有關下載憑證的詳細資訊,請參閱使用 SSL/TLS 加密與資料庫叢集的連線

  2. 將憑證匯入作業系統。

  3. 透過 SSL/ 連線至 Aurora PostgreSQL 資料庫叢集TLS。

    當您使用 SSL/ 連線時TLS,用戶端可以選擇是否要驗證憑證鏈。如果您的連線參數指定 sslmode=verify-casslmode=verify-full,則用戶端需要 RDS CA 憑證位於其信任存放區中,或在連線 中參考URL。此需求是為了驗證用於簽署資料庫憑證的憑證鏈。

    當 psql 或 等用戶端JDBC設定為 SSL/TLS Support 時,用戶端會先嘗試使用 SSL/TLS 預設連線到資料庫。如果用戶端無法與 SSL/ 連線TLS,則會還原為沒有 SSL/ 的連線TLS。根據預設, JDBC和 libpq 型用戶端sslmode的選項會設定為 prefer

    使用 sslrootcert 參數來參考憑證,例如 sslrootcert=rds-ssl-ca-cert.pem

以下是使用 psql 連線到 Aurora PostgreSQL 資料庫叢集的範例。

$ psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 \ "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"

需要 SSL/TLS 連線至 Aurora PostgreSQL 資料庫叢集

您可以使用 rds.force_ssl 參數,要求與 Aurora PostgreSQL 資料庫叢集的連線使用 SSL/TLS。依預設,rds.force_ssl 參數會設為 0 (關閉)。您可以將 rds.force_ssl 參數設定為 1 (開啟),以要求 SSL/TLS 用於與資料庫叢集的連線。更新 rds.force_ssl 參數也會將 PostgreSQL ssl 參數設定為 1 (開啟),並修改資料庫叢集pg_hba.conf的檔案以支援新的 SSL/TLS 組態。

您可以更新資料庫叢集的資料庫叢集參數群組,以設定 rds.force_ssl 參數值。如果資料庫叢集參數群組不是預設參數群組,且當您將 ssl 設為 1 時,rds.force_ssl 參數已設為 1,則您不需要重新啟動資料庫叢集。否則,您必須重新啟動資料庫叢集,變更才會生效。如需參數群組的詳細資訊,請參閱Amazon Aurora 的參數組 RDS

當資料庫叢集的 rds.force_ssl 參數設定為 1 時,您會在連線時看到類似下列的輸出,表示現在需要 SSL/TLS:

$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql (9.3.12, server 9.4.4) WARNING: psql major version 9.3, server major version 9.4. Some psql features might not work. SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=>

判斷 SSL/TLS 連線狀態

當您連接至資料庫叢集時,登入橫幅中會顯示連線的加密狀態。

Password for user master: psql (9.3.12) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help.   postgres=>

您也可以載入sslinfo擴充功能,然後呼叫 ssl_is_used()函數,以判斷是否正在使用 SSL/TLS。t 如果連線使用 SSL/,則函數會傳回 TLS,否則會傳回 f

postgres=> create extension sslinfo; CREATE EXTENSION postgres=> select ssl_is_used(); ssl_is_used --------- t (1 row)

您可以使用 select ssl_cipher()命令來判斷 SSL/TLS 密碼:

postgres=> select ssl_cipher(); ssl_cipher -------------------- DHE-RSA-AES256-SHA (1 row)

如果您啟用set rds.force_ssl並重新啟動資料庫叢集,則系統會以下列訊息拒絕非SSL連線:

$ export PGSSLMODE=disable $ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql: FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off $

如需 sslmode選項的相關資訊,請參閱 PostgreSQL 文件中的資料庫連線控制函數

設定用於連線至 Aurora PostgreSQL 資料庫叢集的密碼套件

透過使用可設定的密碼套件,您可以更進一步控制資料庫連線的安全性。您可以指定要允許 加密套件的清單,以保護資料庫的用戶端SSL/TLS連線。您可以使用可設定的密碼套件來控制資料庫伺服器接受的連線加密。這樣做有助於避免使用不安全或已作廢的密碼。

Aurora PostgreSQL 11.8 版及更新版本支援可設定的密碼套件。

要指定用於加密連線的許可密碼列表,請修改 ssl_ciphers 叢集參數。使用 AWS Management Console、 AWS CLI或 將 ssl_ciphers 參數設定為叢集參數群組中逗號分隔密碼值的字串RDSAPI。要設定叢集參數,請參閱 在 Amazon Aurora 中修改資料庫叢集參數群組中的參數

下表顯示有效 Aurora PostgreSQL 引擎版本的支援密碼。

Aurora PostgreSQL 引擎版本 受支援的密碼 TLS 1.1 TLS 1.2 TLS 1.3
9.6、10.20 和更低版本,11.15 和更低版本,12.10 和更低版本,13.6 和更低版本

DHE-RSA-AES128-SHA

DHE-RSA-AES128-SHA256

DHE-RSA-AES128-GCM-SHA256

DHE-RSA-AES256-SHA

DHE-RSA-AES256-SHA256

DHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES128-SHA

ECDHE-RSA-AES128-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-RSA-AES256-SHA

ECDHE-RSA-AES256-GCM-SHA384

10.21、11.16、12.11、13.7、14.3 和 14.4

ECDHERSA-AES128-SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITHAES_128_GCM_SHA256

TLS_ECDHE_RSA_WITHAES_256_CBC_SHA

TLS_ECDHE_RSA_WITHAES_256_GCM_SHA384

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA

TLS_ECDHE_RSA_WITHAES_128_GCM_SHA256

TLS_ECDHE_RSA_WITHAES_256_CBC_SHA

TLS_ECDHE_RSA_WITHAES_256_GCM_SHA384

TLS_RSA_WITHAES_256_GCM_SHA384

TLS_RSA_WITHAES_256_CBC_SHA

TLS_RSA_WITHAES_128_GCM_SHA256

TLS_RSA_WITHAES_128_CBC_SHA

TLS_ECDHE_RSAWITH_CHACHA20_POLY1305_SHA256

10.22、11.17、12.12、13.8、14.5 和 15.2

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA256

TLS_ECDHE_RSA_WITHAES_128_GCM_SHA256

TLS_ECDHE_RSA_WITHAES_256_CBC_SHA

TLS_ECDHE_RSA_WITHAES_256_GCM_SHA384

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA256

TLS_ECDHE_RSA_WITHAES_128_GCM_SHA256

TLS_ECDHE_RSA_WITHAES_256_CBC_SHA

TLS_ECDHE_RSA_WITHAES_256_GCM_SHA384

TLS_RSA_WITHAES_256_GCM_SHA384

TLS_RSA_WITHAES_256_CBC_SHA

TLS_RSA_WITHAES_128_GCM_SHA256

TLS_RSA_WITHAES_128_CBC_SHA256

TLS_RSA_WITHAES_128_CBC_SHA

TLS_ECDHE_RSAWITH_CHACHA20_POLY1305_SHA256

11.20、12.15、13.11、14.8、15.3、16.1 及更高版本

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA256

TLS_ECDHE_RSA_WITHAES_128_GCM_SHA256

TLS_ECDHE_RSA_WITHAES_256_CBC_SHA

TLS_ECDHE_RSA_WITHAES_256_GCM_SHA384

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA

TLS_ECDHE_RSA_WITHAES__128_CBC_SHA256

TLS_ECDHE_RSA_WITHAES_128_GCM_SHA256

TLS_ECDHE_RSA_WITHAES_256_CBC_SHA

TLS_ECDHE_RSA_WITHAES_256_GCM_SHA384

TLS_RSA_WITHAES_256_GCM_SHA384

TLS_RSA_WITHAES_256_CBC_SHA

TLS_RSA_WITHAES_128_GCM_SHA256

TLS_RSA_WITHAES_128_CBC_SHA256

TLS_RSA_WITHAES_128_CBC_SHA

TLS_ECDHE_RSAWITH_CHACHA20_POLY1305_SHA256

TLS_AES_128_GCM_SHA256

TLS_AES_256_GCM_SHA384

您也可以使用 describe-engine-default-cluster-parameters CLI命令來判斷特定參數群組系列目前支援哪些密碼套件。下列範例顯示如何取得 Aurora PostgreSQL 11 ssl_cipher叢集參數的允許值。

aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-postgresql11 ...some output truncated... { "ParameterName": "ssl_ciphers", "Description": "Sets the list of allowed TLS ciphers to be used on secure connections.", "Source": "engine-default", "ApplyType": "dynamic", "DataType": "list", "AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384, ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "IsModifiable": true, "MinimumEngineVersion": "11.8", "SupportedEngineModes": [ "provisioned" ] }, ...some output truncated...

ssl_ciphers 參數預設為所有允許的密碼套件。如需密碼的詳細資訊,請參閱 PostgreSQL 文件中的 ssl_ciphers 變數。