在 RDS for SQL Server 上使用密碼政策進行 SQL Server 登入 - Amazon Relational Database Service

在 RDS for SQL Server 上使用密碼政策進行 SQL Server 登入

Amazon RDS 可讓您為執行 Microsoft SQL Server 的 Amazon RDS 資料庫執行個體設定密碼政策。採用此做法,為使用 SQL Server 驗證對您的資料庫執行個體進行身分驗證的登入設定複雜性、長度和鎖定需求。

重要用語

登入

在 SQL Server 中,可以向資料庫執行個體進行身分驗證的伺服器層級主體稱為登入。其他資料庫引擎可能會將此主體稱為使用者。在 RDS for SQL Server 中,登入可以使用 SQL Server 驗證或 Windows 驗證進行身分驗證。

SQL Server 登入

使用 SQL Server 驗證以使用者名稱和密碼進行身分驗證的登入,是 SQL Server 登入。您透過資料庫參數設定的密碼政策,僅適用於 SQL Server 登入。

Windows 登入

以 Windows 主體為基礎,並使用 Windows 驗證進行身分驗證的登入,是 Windows 登入。您可以在 Active Directory 中為 Windows 登入設定密碼政策。如需詳細資訊,請參閱 使用 Active Directory 搭配 RDS for SQL Server

啟用和停用每次登入的政策

每次 SQL Server 登入都會有 CHECK_POLICYCHECK_EXPIRATION 的旗標。依預設會建立新的登入,並將 CHECK_POLICY 設定為 ONCHECK_EXPIRATION 設定為 OFF

如果為登入啟用了 CHECK_POLICY,RDS for SQL Server 將會根據複雜性和長度下限需求驗證密碼。鎖定政策也適用。啟用 CHECK_POLICYCHECK_EXPIRATION 的範例 T-SQL 陳述式:

ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;

如果啟用了 CHECK_EXPIRATION,密碼將會受限於密碼使用期限政策。檢查是否設定了 CHECK_POLICYCHECK_EXPIRATION 的 T-SQL 陳述式:

SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;

密碼政策參數

所有密碼政策參數都是動態的,無須將資料庫重新開機即可生效。下表列出您可以設定哪些資料庫參數來修改 SQL Server 登入的密碼政策:

資料庫參數 描述 允許值 預設值
rds.password_complexity_enabled 建立或變更 SQL Server 登入的密碼時,必須符合密碼複雜性需求。必須符合下列限制條件:
  • 密碼必須包含下列三個類別的字元:

    • 小寫拉丁字母 (a 到 z)

    • 大寫拉丁字母 (A 到 Z)

    • 非英數字元,例如:驚嘆號 (!)、貨幣符號 ($)、數字符號 (#) 或百分比 (%)。

  • 密碼不包含使用者的帳戶名稱。

0,1 0
rds.password_min_length SQL Server 登入的密碼中所需的字元數下限。 0-14 0
rds.password_min_age 使用者在能夠變更 SQL Server 登入密碼之前必須使用密碼的天數下限。設定為 0 時,可立即變更密碼。 0-998 0
rds.password_max_age

使用者在必須變更 SQL Server 登入密碼之前可使用密碼的天數上限。設定為 0 時,密碼永遠不會過期。

0-999 42
rds.password_lockout_threshold 導致 SQL Server 登入遭到鎖定的連續登入失敗嘗試次數。 0-999 0
rds.password_lockout_duration 鎖定的 SQL Server 登入在解除鎖定之前必須等待的分鐘數。 1-60 10
rds.password_lockout_reset_counter_after 在失敗的登入嘗試之後,失敗登入嘗試計數器重設為 0 之前必須經過的分鐘數。 1-60 10
注意

如需 SQL Server 密碼政策的詳細資訊,請參閱密碼政策

密碼複雜性和長度下限政策也適用於自主資料庫中的資料庫使用者。如需詳細資訊,請參閱自主資料庫

下列限制條件適用於密碼政策參數:

  • rds.password_min_age 參數必須小於 rds.password_max_age parameter,除非 rds.password_max_age 設定為 0

  • rds.password_lockout_reset_counter_after 參數必須小於或等於 rds.password_lockout_duration 參數。

  • 如果 rds.password_lockout_threshold 設定為 0,則不適用 rds.password_lockout_durationrds.password_lockout_reset_counter_after

現有登入的考量

在執行個體上修改密碼政策後,不會根據新的密碼複雜性和長度需求回溯評估現有的登入密碼。只有新密碼會根據新政策進行驗證。

SQL Server 評估現有密碼的使用期限需求。

修改密碼政策後,密碼可能會立即過期。例如,如果登入已啟用 CHECK_EXPIRATION,且其密碼上次變更是在 100 天前,而您將 rds.password_max_age 參數設定為 5 天,則密碼會立即過期,登入必須在下次嘗試登入時變更密碼。

注意

RDS for SQL Server 不支援密碼歷史記錄政策。歷史記錄政策可防止登入重複使用先前使用的密碼。

多可用區域部署考量

多可用區域執行個體的失敗登入嘗試計數器和鎖定狀態不會在節點間複寫。若登入在多可用區執行個體容錯移轉時遭到鎖定,該登入在新節點上有可能已解除鎖定。