使SCRAM用後SQL密碼加密 - Amazon Aurora

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

使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 驅動程式文件中的 Postgre SQL JDBC 驅動程式。如需其他 Postgre SQL 驅動程式和SCRAM支援的清單,請參閱 Postgre 文SQL件中的驅動程式清單。

注意

根據預設,針對新的資料庫叢集,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 秒內無法使用。若要避免發生此問題,請執行下列其中一項:

  • 確定資料庫同時允許 SCRAMMD5 身分驗證。

  • 若只要使用 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 下支援。

獲得資料庫使用者 (角色) 與密碼加密方法清單
  1. 用,如下所示。SQL

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. 安裝 rds_tools 擴充功能。

    postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
  3. 取得角色和加密清單。

    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 中建立資料庫叢集參數群組

您可以使用資料庫執行個體與自訂參數群組建立關聯。

建立自訂資料庫叢集參數群組
  1. 使用create-db-cluster-parameter-groupCLI指令建立叢集的自訂參數群組。以下範例使用 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"

    現在您可以將自訂參數群組與叢集建立關聯。

  2. 使用命modify-db-clusterCLI令將此自訂參數群組套用至您的 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允許的值為未設定、md5scram-sha-256。默認值取決於 Postgre SQL RDS SQL 版本的 Aurora 波斯特,如下所示:

  • Aurora 後 SQL 14 — 默認值是 scram-sha-256

  • Aurora 後 SQL 13 — 默認值是 md5

將自訂資料庫叢集參數群組連接至 Aurora Postgre SQL 資料庫叢集後,RDS您可以修改密碼加密參數的值。

接下來,RDS控制台顯示了 Aurora Postgre password_encryption 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=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
  1. 以管理員使用者身分 (預設使用者名稱 postgres) 登入,如下所示。

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. 使用下列命令檢查 Postgre SQL 資料庫執行個體上的password_encryption參數設定。RDS

    postgres=> SHOW password_encryption; password_encryption --------------------- md5 (1 row)
  3. 將此參數的值變更為 scram-sha-256。這是動態參數,因此您在進行此變更之後不需要重新啟動執行個體。再次檢查該值以確定它現在已設定為 scram-sha-256,如下所示。

    postgres=> SHOW password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
  4. 通知所有資料庫使用者變更自己的密碼。務必亦為帳戶 postgres (具有 rds_superuser 權限的資料庫使用者) 變更您自己的密碼。

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. Aurora Postgre SQL 資料庫叢集上的所有資料庫重複此程序。

將參數變更為需要 SCRAM

這是程序中的最後一個步驟。在下列程序中進行變更後,仍使用密碼md5加密的任何使用者帳戶 (角色) 都無法登入 Aurora Postgre SQL 資料庫叢集

rds.accepted_password_auth_method指定 Postgre 資料庫個體的 Aurora Postgre SQL 資料庫叢集RDS在登入程序期間接受使用者密碼的加密方法。SQL預設值為 md5+scram,這意味著任何一種方法都接受。在下圖中,您可以找到此參數的預設設定。

顯示rds.accepted_password_auth_method參數預設值和允許值的RDS主控台。

此參數的允許值為 md5+scram 或僅 scram。將此參數值變更為 scram 會使此成為一個需求。

若要將參數值變更為要求密碼SCRAM驗證
  1. 確認適用於 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)
  2. Aurora Postgre SQL 資料庫叢集中的所有資料庫執行個體重複查詢。

    如果所有密碼都使用 scram-sha-256,您可以繼續進行。

  3. 將接受的密碼身分驗證值變更為 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"