選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 SCRAM 進行 PostgreSQL 密碼加密 - Amazon Aurora

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

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

使用 SCRAM 進行 PostgreSQL 密碼加密

Salted Challenge Response Authentication Mechanism (SCRAM) 是 PostgreSQL 預設訊息摘要 (MD5) 演算法的替代選項,用於加密密碼。SCRAM 身分驗證機制被認為比 MD5 更安全。若要進一步了解這兩種不同的密碼保護方法,請參閱 PostgreSQL 文件中的 Password Authentication (密碼身分驗證)。

建議您使用 SCRAM 作為 Aurora PostgreSQL 資料庫叢集的密碼加密配置,而不是使用 MD5。Aurora PostgreSQL 第 10 版和所有較高的主要和次要版本都支援 SCRAM。這是一種加密的挑戰回應機制,使用 scram-sha-256 演算法進行密碼身分驗證和加密。

您可能需要更新程式庫,用戶端應用程式才會支援 SCRAM。例如,42.2.0 之前的 JDBC 版本不支援 SCRAM。如需詳細資訊,請參閱 PostgreSQL JDBC 驅動程式文件中的 PostgreSQL JDBC Driver (PostgreSQL JDBC 驅動程式)。如需其他 PostgreSQL 驅動程式和 SCRAM 支援的清單,請參閱 PostgreSQL 文件中的 List of drivers (驅動程式清單)。

Aurora PostgreSQL 14 版和更新版本預設支援 scram-sha-256 用於新資料庫叢集的密碼加密。對於這些版本,預設資料庫叢集參數群組 (default.aurora-postgresql14) password_encryption的值設定為 scram-sha-256。不支援 SCRAMAurora Serverless v1。

設定 Aurora PostgreSQL 資料庫叢集為需要 SCRAM

對於 Aurora PostgreSQL 14.3 和更新版本,您可以要求 Aurora PostgreSQL 資料庫叢集僅接受使用 scram-sha-256 演算法的密碼。

重要

對於 PostgreSQL 資料庫的現有 RDS 代理,如果您將資料庫驗證修改為僅使用 SCRAM,則該代理會變成無法使用,最多持續 60 秒。若要避免發生此問題,請執行下列其中一項:

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

  • 若只要使用 SCRAM 身分驗證,請建立新代理、將應用程式流量遷移至新代理,然後刪除先前與資料庫相關聯的代理。

在對系統進行變更之前,請確保您了解完整過程,如下所示:

  • 獲得所有資料庫使用者的所有角色與密碼加密相關資訊。

  • 針對控制密碼加密的參數,再次檢查 Aurora PostgreSQL 資料庫叢集的參數設定。

  • 如果您的 Aurora PostgreSQL 資料庫叢集使用預設參數群組,則需要建立自訂資料庫叢集參數群組,並將其套用到 Aurora PostgreSQL 資料庫叢集,讓您可以在需要時修改參數。如果您的 Aurora PostgreSQL 資料庫叢集使用自訂參數群組,則您稍後可以視需要在過程中修改必要參數。

  • 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 加密密碼的使用者 (角色) 將無法連線。

讓您的 Aurora PostgreSQL 資料庫叢集準備好需要 SCRAM

Aurora PostgreSQL 資料庫叢集進行任何變更之前,請檢查所有現有的資料庫使用者帳戶。另外,請檢查用於密碼的加密類型。您可以使用 rds_tools 擴充功能執行這些任務。若要查看哪些 PostgreSQL 版本支援 rds_tools,請參閱 Amazon RDS for PostgreSQL 的延伸版本

獲得資料庫使用者 (角色) 與密碼加密方法清單
  1. 使用 psql 連線至 Aurora PostgreSQL 資料庫叢集上的主要執行個體 ,如下所示。

    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)

建立自訂資料庫叢集參數群組

注意

如果您的 Aurora PostgreSQL 資料庫叢集已使用自訂參數群組,則不需要建立新的群組。

如需 Aurora 的參數群組概觀,請參閱 在 Amazon Aurora 中建立資料庫叢集參數群組

用於密碼的密碼加密類型是在某一個參數 (亦即 password_encryption) 中設定的。Aurora PostgreSQL 資料庫叢集允許的加密則是在另一個參數 (亦即 rds.accepted_password_auth_method) 中設定的。若要從這些預設值變更,則需要您建立自訂資料庫叢集參數群組,並套用到您的叢集。

您也可以使用 AWS Management Console 或 RDS API 來建立自訂資料庫叢集參數群組。如需詳細資訊,請參閱 在 Amazon Aurora 中建立資料庫叢集參數群組

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

建立自訂資料庫叢集參數群組
  1. 使用 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"

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

  2. 使用 modify-db-cluster CLI 命令將此自訂參數群組套用至您的 Aurora PostgreSQL 資料庫叢集。

    對於 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 PostgreSQL 資料庫叢集與自訂資料庫叢集參數群組,以及 ,請重新啟動叢集的主要與所有其他執行個體。

設定密碼加密以使用 SCRAM

Aurora PostgreSQL 資料庫叢集使用的密碼加密機制是在資料庫叢集參數群組password_encryption 參數中設定的。允許的值為未設定、md5scram-sha-256。預設值視 Aurora PostgreSQL 版本而定,如下所示:

  • Aurora PostgreSQL 14 – 預設值為 scram-sha-256

  • Aurora PostgreSQL 13 – 預設值為 md5

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

接著,RDS 主控台顯示 Aurora PostgreSQL 其 password_encryption 參數的預設值。
將密碼加密設定變更為 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. 使用下列命令檢查 RDS for PostgreSQL 資料庫執行個體上 password_encryption 參數的設定。

    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 PostgreSQL 資料庫叢集上所有的資料庫重複此程序。

變更參數為需要 SCRAM

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

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

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

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

將參數值變更為需要對密碼進行 SCRAM 身分驗證
  1. 確認 Aurora PostgreSQL 資料庫叢集上所有資料庫的所有資料庫使用者密碼使用 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 PostgreSQL 資料庫叢集中所有的資料庫執行個體重複此查詢。

    如果所有密碼都使用 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"
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。