本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使SCRAM用後SQL密碼加密
鹽漬挑戰回應驗證機制 (SCRAM) 是 Postgre 用於加密密碼SQL的預設訊息摘要 (MD5) 演算法的替代方法。SCRAM驗證機制被認為比MD5. 若要深入瞭解這兩種不同的密碼保護方法,請參閱 Postgre SQL 文件中的密碼驗證
我們建議您使用SCRAM而非MD5作為 Aurora Postgre SQL 資料庫叢集的密碼加密配置。從 Aurora 波斯特格雷 SQL 14 版開始,SCRAM所有可用的 Aurora 後SQL版本都受到支援,包括版本 10、11、12、13 和 14。這是一種加密的挑戰回應機制,使用 scram-sha-256 演算法進行密碼身分驗證和加密。
您可能需要更新用戶端應用程式的程式庫才能支援SCRAM。例如,42.2.0 之前的JDBC版本不支援SCRAM。如需詳細資訊,請參閱 Postgre SQL JDBC 驅動程式
注意
根據預設,針對新的資料庫叢集,Aurora Postgre SQL 版本 14 及更高版本支援 Scram-sha-256 進行密碼加密。亦即,預設資料庫叢集參數群組 (default.aurora-postgresql14
) 將 password_encryption
值設定為 scram-sha-256。
要求 SCRAM
對於 Aurora Postgre SQL 14.3 及更高版本,您可以要求 Postgre 資料庫叢集僅接受使用刮-SHA-256 演算法的密碼。
重要
對於具有 Postgre SQL 資料庫的現有RDS代理伺服器,如果您將資料庫驗證修改為SCRAM
僅使用,代理伺服器會在 60 秒內無法使用。若要避免發生此問題,請執行下列其中一項:
確定資料庫同時允許
SCRAM
和MD5
身分驗證。若只要使用
SCRAM
身分驗證,請建立新代理、將應用程式流量遷移至新代理,然後刪除先前與資料庫相關聯的代理。
在對系統進行變更之前,請確保您了解完整過程,如下所示:
獲得所有資料庫使用者的所有角色與密碼加密相關資訊。
請仔細檢查 Postgre 資料庫參數設定,以取得控制密碼加密的參數。SQL
如果 Postgre SQL 資料庫叢集RDS使用預設參數群組,則需要建立自訂資料庫叢集參數群組資料數群組,並將其套用至 Postgre 資料庫叢集RDS,以便在需要時修改參數。如果 Postgre SQL 資料庫叢集使用自訂參數群組,您可以在稍後的程序中視需要修改必要的參數。
-
將
password_encryption
參數變更為scram-sha-256
。 -
通知所有資料庫使用者他們必須更新密碼。針對您的
postgres
帳戶進行相同的動作。系統會使用 scram-sha-256 演算法加密與儲存新密碼。 驗證確認使用加密類型將所有密碼加密。
-
如果所有密碼都使用 scram-sha-256,您可以將
rds.accepted_password_auth_method
參數從md5+scram
變更為scram-sha-256
。
警告
在您僅將 rds.accepted_password_auth_method
變更為 scram-sha-256 後,則任何具有 md5
加密密碼的使用者 (角色) 將無法連線。
準備好為 Postgre 資料庫執行個體使SCRAM用 Aurora Po 資料庫叢集 RDS
對 Aurora Postgre 資料庫叢集進行任何變更之前,RDS對於 Postgre SQL 請檢查所有現有的資料庫使用者帳戶。另外,請檢查用於密碼的加密類型。您可以使用 rds_tools
擴充功能執行這些任務。此擴充功能在後 SQL Aurora 下支援。
獲得資料庫使用者 (角色) 與密碼加密方法清單
用,如下所示。SQL
psql --host=
cluster-name-instance-1.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --password安裝
rds_tools
擴充功能。postgres=>
CREATE EXTENSION rds_tools;
CREATE EXTENSION
取得角色和加密清單。
postgres=>
SELECT * FROM rds_tools.role_password_encryption_type();您會看到類似下列的輸出。
rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | md5 user_465 | md5 postgres | md5 (8 rows)
建立自訂資料庫叢集參數群組
注意
如果 Postgre SQL 資料庫叢集已使用自訂參數群組,則不需要建立新的參數群組。
如需 Aurora 的參數群組概觀,請參閱 在 Amazon Aurora 中建立資料庫叢集參數群組。
用於密碼的密碼加密類型是在某一個參數 (亦即 password_encryption
) 中設定的。Postgre 資料庫行個體的 Aurora Postgre SQL 資料庫叢集RDS允許的加密是在另一個參數中設定的。SQL rds.accepted_password_auth_method
若要從這些預設值變更,則需要您建立自訂資料庫叢集參數群組,並套用到您的叢集。
您也可以使用 AWS Management Console 或建立RDSAPI自訂資料庫叢集參數群組 。如需詳細資訊,請參閱在 Amazon Aurora 中建立資料庫叢集參數群組。
您可以使用資料庫執行個體與自訂參數群組建立關聯。
建立自訂資料庫叢集參數群組
使用
create-db-cluster-parameter-group
CLI指令建立叢集的自訂參數群組。以下範例使用aurora-postgresql13
作為此自訂參數群組的來源。用於 Linux, macOS,或 Unix:
aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name '
docs-lab-scram-passwords
' \ --db-parameter-group-family aurora-postgresql13 --description 'Custom DB cluster parameter group for SCRAM
'用於 Windows:
aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "
docs-lab-scram-passwords
" ^ --db-parameter-group-family aurora-postgresql13 --description "Custom DB cluster parameter group for SCRAM
"現在您可以將自訂參數群組與叢集建立關聯。
使用命
modify-db-cluster
CLI令將此自訂參數群組套用至您的 Aurora Postgre SQL 資料庫叢集。用於 Linux, macOS,或 Unix:
aws rds modify-db-cluster --db-cluster-identifier '
your-instance-name
' \ --db-cluster-parameter-group-name "docs-lab-scram-passwords
用於 Windows:
aws rds modify-db-cluster --db-cluster-identifier "
your-instance-name
" ^ --db-cluster-parameter-group-name "docs-lab-scram-passwords
若要將 Aurora Postgre SQL 資料庫叢集與自訂資料庫叢集參數群組重新同步,請重新啟動叢集的主執行個體和所有其他執行個體。
設定要使用的密碼加密 SCRAM
Aurora Postgre SQL 資料庫叢集用於 Postgre 資料庫密碼加密機制是在參數的資料庫叢集參數群組中設定password_encryption
。SQL允許的值為未設定、md5
或 scram-sha-256
。默認值取決於 Postgre SQL RDS SQL 版本的 Aurora 波斯特,如下所示:
Aurora 後 SQL 14 — 默認值是
scram-sha-256
Aurora 後 SQL 13 — 默認值是
md5
將自訂資料庫叢集參數群組連接至 Aurora Postgre SQL 資料庫叢集後,RDS您可以修改密碼加密參數的值。
將密碼加密設定變更為 scram-sha-256
將密碼加密的值變更為 scram-sha-256,如下所示。變更會立即套用,因為參數是動態的,因此不需要重新啟動即可使變更生效。
用於 Linux, macOS,或 Unix:
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name \ 'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'
用於 Windows:
aws rds modify-db-parameter-group --db-parameter-group-name ^ "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"
將使用者角色的密碼移轉至 SCRAM
您可以將使用者角色的密碼移轉至,SCRAM如下所述。
將資料庫使用者 (角色) 密碼從移轉MD5到 SCRAM
以管理員使用者身分 (預設使用者名稱
postgres
) 登入,如下所示。psql --host=
cluster-name-instance-1.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --password使用下列命令檢查 Postgre SQL 資料庫執行個體上的
password_encryption
參數設定。RDSpostgres=>
SHOW password_encryption;
password_encryption --------------------- md5 (1 row)
將此參數的值變更為 scram-sha-256。這是動態參數,因此您在進行此變更之後不需要重新啟動執行個體。再次檢查該值以確定它現在已設定為
scram-sha-256
,如下所示。postgres=>
SHOW password_encryption;
password_encryption --------------------- scram-sha-256 (1 row)
通知所有資料庫使用者變更自己的密碼。務必亦為帳戶
postgres
(具有rds_superuser
權限的資料庫使用者) 變更您自己的密碼。labdb=>
ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me';ALTER ROLE
對 Aurora Postgre SQL 資料庫叢集上的所有資料庫重複此程序。
將參數變更為需要 SCRAM
這是程序中的最後一個步驟。在下列程序中進行變更後,仍使用密碼md5
加密的任何使用者帳戶 (角色) 都無法登入 Aurora Postgre SQL 資料庫叢集。
rds.accepted_password_auth_method
指定 Postgre 資料庫個體的 Aurora Postgre SQL 資料庫叢集RDS在登入程序期間接受使用者密碼的加密方法。SQL預設值為 md5+scram
,這意味著任何一種方法都接受。在下圖中,您可以找到此參數的預設設定。
此參數的允許值為 md5+scram
或僅 scram
。將此參數值變更為 scram
會使此成為一個需求。
若要將參數值變更為要求密碼SCRAM驗證
確認適用於 Postgre 資料庫使用者密碼均用
scram-sha-256
於密碼加密。若要這麼做,請向rds_tools
查詢角色 (使用者) 和加密類型,如下所示。postgres=>
SELECT * FROM rds_tools.role_password_encryption_type();
rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | scram-sha-256 user_465 | scram-sha-256 postgres | scram-sha-256 ( rows)
對 Aurora Postgre SQL 資料庫叢集中的所有資料庫執行個體重複查詢。
如果所有密碼都使用 scram-sha-256,您可以繼續進行。
將接受的密碼身分驗證值變更為 scram-sha-256,如下所示。
用於 Linux, macOS,或 Unix:
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'
用於 Windows:
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"