關於密碼政策
如果應用程式的資料庫使用者使用內建的密碼驗證方法向 AlloyDB Omni 驗證身分,您可以強制要求使用高強度密碼,提高驗證安全性。您可以設定 AlloyDB Omni 密碼政策,定義及啟用密碼強制執行功能。
密碼政策限制
AlloyDB Omni 密碼政策有下列限制:
密碼政策只會套用至設定政策後建立的密碼。變更密碼政策不會影響現有的使用者密碼。
密碼政策僅適用於以純文字輸入的密碼。密碼政策不適用於以加密字串形式輸入的密碼。
設定 AlloyDB Omni 密碼政策
如要設定密碼政策,請更新 postgresql.conf 設定檔中的 Grand Unified Configuration (GUC) 密碼參數。如要瞭解如何設定 GUC 參數,請參閱「設定 AlloyDB Omni 資料庫旗標」。
AlloyDB Omni 的密碼政策可包含下列選項:
禁止使用使用者名稱:禁止在密碼中使用使用者名稱。
密碼複雜度:檢查密碼是否包含允許數量的小寫、大寫、數字和非英數字元。此外,請確認密碼長度是否有效。
密碼到期:確保定期輪替密碼。
如要查看 AlloyDB Omni 支援的密碼政策旗標清單,請參閱「密碼政策旗標」。
為符合安全標準並遵循安全性建議工具的指引,您必須將主要強制執行旗標設為 ON,同時啟用這三個選項:
password.enforce_password_does_not_contain_usernamepassword.enforce_complexitypassword.enforce_expiration
如果將這三個旗標中的任一個設為 OFF 或省略,安全性建議工具就會將執行個體標示為未啟用密碼政策。
預先載入密碼驗證程式庫
如要在 AlloyDB Omni 中啟用密碼政策,必須載入 alloydb_password_validation 程式庫。如要載入這個程式庫,請按照下列步驟操作:
找出 AlloyDB Omni 安裝作業的
postgresql.conf設定檔,並在文字編輯器中開啟。找出
shared_preload_libraries行,並檢查是否包含alloydb_password_validation。如果沒有,請新增。完成後,shared_preload_libraries行會類似如下:shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
強制執行密碼複雜度
如要強制執行密碼複雜度政策,請按照下列步驟操作:
確認
postgresql.conf檔案預先載入密碼驗證程式庫。將
password.enforce_complexity旗標設為ON。使用密碼政策旗標定義密碼政策。
舉例來說,如要強制執行密碼政策,規定密碼必須包含至少一個大寫字母、一個數字,且長度至少為 10 個字元,請在 postgresql.conf 檔案中設定下列內容:
password.enforce_complexity = ONpassword.min_uppercase_letters = 1password.min_numerical_chars = 1password.min_pass_length = 10
設定這些旗標後,如果嘗試設定不符合這項密碼政策的資料庫使用者密碼,就會失敗。舉例來說,如果使用這組政策,下列 psql 用戶端指令就會失敗,因為密碼 foo 少於 10 個字元,且不含數字或大寫字元。
CREATE USER USERNAME WITH PASSWORD foo;
強制設定密碼到期時間
如要強制執行密碼到期政策,請按照下列步驟操作:
確認
postgresql.conf檔案預先載入密碼驗證程式庫。將
password.enforce_expiration旗標設為ON。將
password.expiration_in_days旗標設為密碼到期前天數。將
password.notify_expiration_in_days旗標設為密碼到期前天數,使用者就會開始收到密碼到期通知。
舉例來說,如要強制執行密碼政策,規定密碼會在 30 天後過期,且系統會在密碼過期前 15 天通知使用者,您必須在 postgresql.conf 檔案中設定下列項目:
password.enforce_expiration = ONpassword.expiration_in_days = 30password.notify_expiration_in_days = 15
如果使用者的密碼過期,就無法連線至 AlloyDB Omni。如要重設使用者密碼,請按照下列步驟操作:
使用
psql連線至 AlloyDB Omni。舉例來說,如果您使用 Docker 安裝 AlloyDB Omni,請執行下列指令:sh /usr/lib/postgresql/18/bin/psql -h localhost -U postgres在
postgres=#提示字元中執行下列指令:ALTER USER USERNAME WITH 'NEW-PASSWORD';
如要進一步瞭解如何變更使用者密碼,請參閱 PostgreSQL 文件中的ALTER ROLE。
禁止在密碼中加入使用者名稱
如要強制執行密碼不得包含使用者名稱的政策,請按照下列步驟操作:
確認
postgresql.conf檔案預先載入密碼驗證程式庫。將
password.enforce_password_does_not_contain_username設為ON。
舉例來說,如要確保密碼不含使用者名稱做為子字串,請在 postgresql.conf 檔案中設定以下內容:
password.enforce_password_does_not_contain_username = ON
如果設定這個旗標,則下列作業會失敗,因為密碼 alex-secret 包含使用者名稱 alex:
CREATE USER alex WITH PASSWORD 'alex-secret';