本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SSL搭配使用後資SQL料庫執行個體
Amazon RDS 支援 Postgre SQL 資料庫執行個體的安全通訊端層 (SSL) 加密。使用時SSL,您可以加密應用程式和 Postgre SQL 資料庫執行個體之間的 Postgre SQL 連線。默認情況下,RDS對於 Postgre SQL 使用並期望所有客戶端使用SSL/進行連接TLS,但您也可以要求它。RDS對於波斯特格雷SQL支持傳輸層安全性(TLS)版本 1.1,1.2 和 1.3。
如需有關SSL支援和 Postgre 資SQL料庫的一般資訊,請參閱 Postgre 文SQL件中的SSL支援
SSL支持在所有 AWS 地區的 Postgre SQL。Amazon RDS 會在建立執行個體時為您的 Postgre SQL 資料庫執行個體建立SSL憑證。如果啟用SSL憑證驗證,則SSL憑證會包含資料庫執行個體端點作為SSL憑證的一般名稱 (CN),以防範詐騙攻擊。
透過連線至郵件SQL資料庫執行個體 SSL
若要透過以下方式連線至 Postgre SQL 資料庫執行 SSL
-
下載憑證。
如需有關下載憑證的詳細資訊,請參閱使用SSL/TLS來加密資料庫執行個體或叢集集的連線。
-
透過 Connect 至您的 Postgre SQL 資料庫執行個SSL體。
當您使用連線時SSL,用戶端可以選擇是否要驗證憑證鏈結。如果您的連線參數指定
sslmode=verify-ca
或sslmode=verify-full
,則用戶端要求 RDS CA 憑證位於其信任存放區中或在連線中參照URL。此需求是為了驗證用於簽署資料庫憑證的憑證鏈。當客戶端(例如 psql 或JDBC)配置SSL支持時,客戶端首先嘗試默認連接到數據庫。SSL如果客戶端無法連接SSL,它將恢復為沒有SSL連接。基於 libpq 的客戶端(例如 psql)和之間使用的默認
sslmode
模式不同。JDBC以 libpq 為基礎的用戶端預設為prefer
,且用JDBC戶端預設為。verify-full
使用
sslrootcert
參數來參考憑證,例如sslrootcert=rds-ssl-ca-cert.pem
。
以下是使用憑證驗證連線psql
到 Postgre SQL 資料庫執行個體SSL的範例。
$
psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com
port=5432 dbname=testDB
user=testuser
sslrootcert=rds-ca-rsa2048-g1.pem
sslmode=verify-full"
需要SSL連線至 Postgre SQL 資料庫執行個體
您可以使用SSLrds.force_ssl
參數要求使用 Postgre SQL 資料庫執行個體的連線。對於 Postgre SQL 版本 15 及更新版本,rds.force_ssl
參數預設值RDS為 1 (開啟)。對RDS於 Postgre SQL 主要版本 14 及以上的所有其他版本,此參數的預設值為 0 (關閉)。您可以將rds.force_ssl
參數設定為 1 (on),以便連接到資料庫叢集時需要SSL/TLS。您可以將rds.force_ssl
參數設定為 1 (on),以便連線到資料庫執行個體時需要SSL。
如要變更此參數值,您需要建立自訂資料庫參數群組。然後,您可變更您自訂資料庫參數群組中的 rds.force_ssl
值為 1
,以開啟此功能。如果您在建立 For Postgre 資料庫執行個體之前準備好自訂SQL資料庫參數群組,您可以在建立程序期間選擇它 (而非預設參數群組)。RDS如果您RDS在執行 For Postgre SQL 資料庫執行個體之後執行此動作,您必須重新啟動執行個體,讓執行個體使用自訂參數群組。如需詳細資訊,請參閱 的參數組 RDS。
資料庫執行個體上的rds.force_ssl
功能啟用時,未使用的連線嘗試會SSL遭到拒絕,並顯示下列訊息:
$
psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser
psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off
決定SSL連線狀態
當您連接至資料庫執行個體時,登入橫幅中會顯示連線的加密狀態:
Password for user master:
psql (10.3)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
postgres=>
您還可以加載sslinfo
擴展,然後調用該ssl_is_used()
函數以確定SSL是否正在使用。該函數返回,t
如果連接正在使用SSL,否則返回f
。
postgres=>
CREATE EXTENSION sslinfo;
CREATE EXTENSION
postgres=>
SELECT ssl_is_used();
ssl_is_used --------- t (1 row)
如需更多詳細資訊,您可使用下列查詢,從 pg_settings
取得資訊:
SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%';
Parameter name | value | short_desc ----------------------------------------+-----------------------------------------+------------------------------------------------------- ssl | on | Enables SSL connections. ssl_ca_file | /rdsdbdata/rds-metadata/ca-cert.pem | Location of the SSL certificate authority file. ssl_cert_file | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file. ssl_ciphers | HIGH:!aNULL:!3DES | Sets the list of allowed SSL ciphers. ssl_crl_file | | Location of the SSL certificate revocation list file. ssl_dh_params_file | | Location of the SSL DH parameters file. ssl_ecdh_curve | prime256v1 | Sets the curve to use for ECDH. ssl_key_file | /rdsdbdata/rds-metadata/server-key.pem | Location of the SSL server private key file. ssl_library | OpenSSL | Name of the SSL library. ssl_max_protocol_version | | Sets the maximum SSL/TLS protocol version to use. ssl_min_protocol_version | TLSv1.2 | Sets the minimum SSL/TLS protocol version to use. ssl_passphrase_command | | Command to obtain passphrases for SSL. ssl_passphrase_command_supports_reload | off | Also use ssl_passphrase_command during server reload. ssl_prefer_server_ciphers | on | Give priority to server ciphersuite order. (14 rows)
您RDS還可以使用以下查詢,按流程,客戶端和應用程序收集有關 Postgre SQL DB 實例使用SSL情況的所有信息:
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type FROM pg_stat_ssl JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid ORDER BY ssl;
Database name | User name | ssl | client_addr | application_name | backend_type ---------------+-----------+-----+----------------+------------------------+------------------------------ | | f | | | autovacuum launcher | rdsadmin | f | | | logical replication launcher | | f | | | background writer | | f | | | checkpointer | | f | | | walwriter rdsadmin | rdsadmin | t | 127.0.0.1 | | client backend rdsadmin | rdsadmin | t | 127.0.0.1 | PostgreSQL JDBC Driver | client backend postgres | postgres | t | 204.246.162.36 | psql | client backend (8 rows)
要識別用於SSL連接的密碼,您可以按如下方式進行查詢:
postgres=>
SELECT ssl_cipher();
ssl_cipher -------------------- DHE-RSA-AES256-SHA (1 row)
若要進一步了解sslmode
此選項,請參閱 Postgre SQL 文件中的資料庫連線控制功能
SSL波斯特格雷RDS的密碼套件 SQL
Postgre SQL 配置參數 ssl_密碼指定連接允許的密碼套
波斯特雷SQL引擎版本 | 密碼套件 |
---|---|
16 | HIGH:!aNULL:!3DES |
15 | HIGH:!aNULL:!3DES |
14 | HIGH:!aNULL:!3DES |
13 | HIGH:!aNULL:!3DES |
12 | HIGH:!aNULL:!3DES |
11.4 及更高次要版本 | HIGH:MEDIUM:+3DES:!aNULL:!RC4 |
11.1、11.2 | HIGH:MEDIUM:+3DES:!aNULL |
10.9 及更高次要版本 | HIGH:MEDIUM:+3DES:!aNULL:!RC4 |
10.7 及較低次要版本 | HIGH:MEDIUM:+3DES:!aNULL |