RDS for SQL Server での SQL Server ログインのパスワードポリシーの使用
Amazon RDS では、Microsoft SQL Server を実行している Amazon RDS DB インスタンスのパスワードポリシーを設定できます。これを使用して、SQL Server 認証を使用して DB インスタンスに認証するログインの複雑さ、長さ、およびロックアウト要件を設定します。
重要な用語
- 「ログイン」
-
SQL Server では、データベースインスタンスに認証できるサーバーレベルのプリンシパルをログインと呼びます。他のデータベースエンジンは、このプリンシパルをユーザーと呼ぶ場合があります。RDS for SQL Server では、ログインは SQL Server 認証または Windows 認証を使用して認証できます。
- SQL Server ログイン
-
SQL Server 認証を使用して認証するためにユーザー名とパスワードを使用するログインは、SQL Server ログインです。DB パラメータを使用して設定するパスワードポリシーは、SQL Server ログインにのみ適用されます。
- Windows ログイン
-
Windows プリンシパルに基づき、Windows 認証を使用して認証するログインは Windows ログインです。Active Directory で Windows ログインのパスワードポリシーを設定できます。詳細については、「RDS for SQL Server による Active Directory の操作」を参照してください。
各ログインのポリシーの有効化と無効化
各 SQL Server ログインには、CHECK_POLICY
および CHECK_EXPIRATION
のフラグがあります。デフォルトでは、新しいログインは、CHECK_POLICY
を ON
に設定し、CHECK_EXPIRATION
を OFF
に設定して作成されます。
CHECK_POLICY
がログインについて有効な場合、RDS for SQL Server は複雑さと最小長の要件に照らしてパスワードを検証します。ロックアウトポリシーも適用されます。CHECK_POLICY
と CHECK_EXPIRATION
を有効にする T-SQL ステートメントの例:
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
CHECK_EXPIRATION
が有効になっている場合、パスワードはパスワード有効期間ポリシーの対象です。CHECK_POLICY
と CHECK_EXPIRATION
が設定されているかどうかを確認する T-SQL ステートメント:
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
パスワードポリシーパラメータ
すべてのパスワードポリシーパラメータは動的であり、有効にするために DB を再起動する必要はありません。次の表に、SQL Server ログインのパスワードポリシーを変更するために設定できる DB パラメータを示します。
DB パラメータ | 説明 | 許可された値 | デフォルト値 |
---|---|---|---|
rds.password_complexity_enabled | SQL Server ログインのパスワードを作成または変更するときは、パスワードの複雑さに関する要件を満たす必要があります。次の制約を満たす必要があります。
|
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 パスワードポリシーの詳細については、「パスワードポリシー
パスワードの複雑さと最小長ポリシーは、含まれているデータベースの DB ユーザーにも適用されます。詳細については、「含まれているデータベース
パスワードポリシーパラメータには、次の制約が適用されます。
-
rds.password_max_age
が 0 に設定されていない限り、rds.password_min_age
パラメータはrds.password_max_age parameter
より小さい必要があります。 -
rds.password_lockout_reset_counter_after
パラメータは、rds.password_lockout_duration
パラメータ以下である必要があります。 -
rds.password_lockout_threshold
が 0 に設定されている場合、rds.password_lockout_duration
とrds.password_lockout_reset_counter_after
は適用されません。
既存のログインに関する考慮事項
インスタンスのパスワードポリシーを変更した後、ログイン用の既存のパスワードは、新しいパスワードの複雑さと長さの要件に対して遡及的に評価されません。新しいパスワードのみが新しいポリシーに対して検証されます。
SQL Server は、既存のパスワードの有効期間要件を評価します。
パスワードポリシーが変更されると、パスワードがすぐに期限切れになる可能性があります。例えば、ログインの CHECK_EXPIRATION
が有効であり、パスワードが 100 日前に変更され、rds.password_max_age
パラメータを 5 日に設定した場合、パスワードは直ちに期限切れになり、次回のログイン時にパスワードを変更する必要があります。
注記
RDS for SQL Server は、パスワード履歴ポリシーをサポートしていません。履歴ポリシーは、以前に使用されたパスワードを再利用したログインを禁止します。
マルチ AZ 配置に関する考慮事項
マルチ AZ インスタンスの失敗したログイン試行カウンターとロックアウト状態は、ノード間でレプリケートされません。マルチ AZ インスタンスがフェイルオーバーしたときにログインがロックアウトされていた場合、新しいノードでログインがすでにロック解除されている可能性があります。