適用対象:SQL Server
SQL Server は Windows のパスワード ポリシー メカニズムに対応しています。 パスワード ポリシーは SQL Server 認証を使用するログインに適用され、パスワードを持つ包含データベース ユーザーに適用されます。
SQL Server は、Windows で使用されているのと同じ複雑性と有効期限のポリシーを、SQL Server 内で使用されるパスワードに適用することができます。 この機能は NetValidatePasswordPolicy
API に依存します。
注
Azure SQL Database はパスワードの複雑性を強制します。 パスワードの有効期限とポリシー適用のセクションは、Azure SQL Database には適用されません。
Azure SQL Managed Instance のパスワード ポリシーの詳細については、SQL Managed Instance に関する FAQ を参照してください。
パスワードの複雑性
パスワードの複雑性のポリシーは、使用可能なパスワードの数を増やすことにより、総当り攻撃を防ぐようにデザインされています。 パスワードの複雑性のポリシーが適用される場合、新しいパスワードは次のガイドラインを満たしている必要があります:
パスワードにユーザーのアカウント名が含まれていません。
パスワードは 8 文字以上である。
パスワードは次の 4 つのカテゴリのうちの 3 つのカテゴリの文字を含みます:
ラテン文字の大文字 (A ~ Z)
ラテン文字の小文字 (a ~ z)
10進数(0~9)
感嘆符 (!)、ドル記号 ($)、番号記号 (#)、パーセント記号 (%) などの英数字以外の文字。
パスワードには最大 128 文字まで使用できます。 パスワードはできるだけ長く、複雑にします。
パスワードの有効期限
パスワードの有効期限のポリシーは、パスワードの寿命を管理します。 SQL Server でパスワードの有効期限が適用されている場合、ユーザーは古いパスワードを変更するよう通知され、有効期限が切れたパスワードを持つアカウントは無効になります。
ポリシーの適用
パスワード ポリシーの適用は、SQL Server ログインごとに個別に構成できます。 ALTER LOGIN を使用して、SQL Server ログインのパスワード ポリシー オプションを構成します。 パスワード ポリシーの適用を構成する際に、次の規則が当てはまります:
CHECK_POLICY を ON に変更した場合、次の動作が行われます:
CHECK_EXPIRATIONも、明示的にOFFに設定されない限りONに設定されます。
パスワードの履歴が、現在のパスワード ハッシュの値に初期化されます。
[アカウント ロックアウトの期間]、 [アカウント ロックアウトのしきい値]、および [ロックアウト カウンターのリセット] も有効になります。
CHECK_POLICY を OFF に変更した場合、次の動作が行われます:
CHECK_EXPIRATION も OFF に設定されます。
パスワード履歴は消去されます。
lockout_time
の値がリセットされます。
政策オプションの組み合わせによってはサポートされないものもある。
MUST_CHANGE が指定された場合、CHECK_EXPIRATION および CHECK_POLICY は ON に設定されなければなりません。 ON に設定しない場合、ステートメントは失敗します。
CHECK_POLICYがOFFに設定されている場合、CHECK_EXPIRATIONをONに設定することはできません。 このオプションの組み合わせで ALTER LOGIN ステートメントを実行すると、ステートメントは失敗します。
CHECK_POLICY = ON を設定すると、次のようなパスワードは作成できなくなります:
NULL または空文字列
コンピューター名またはログイン名と同じ文字列
password
、admin
、administrator
、sa
、sysadmin
のいずれか
セキュリティ ポリシーは、Windows で設定する場合も、ドメインから受け取る場合もあります。 コンピューターでパスワード ポリシーを表示するには、ローカル セキュリティ ポリシーの MMC スナップイン (secpol.msc) を使用します。
注
CHECK_POLICY有効になっている SQL Server ログインの場合、 ALTER LOGIN を 実行し、パスワードを変更するコマンドにOLD_PASSWORDを含めない場合、 パスワード履歴の強制 は無視されます。 これは、以前に使用したパスワードに関わらず、パスワードのリセットを許可する仕様の動作です。 長さや複雑性など、CHECK_POLICY に関連するその他のチェックは、OLD_PASSWORD が使用されているかどうかに関係なくチェックされます。
SQL ユーザー パスワード ポリシー情報の確認
次のクエリを使用して、SQL Server の SQL ユーザー パスワード ポリシーと有効期限を確認できます。 次のクエリは Azure SQL データベースでも機能しますが、Azure SQL データベースではパスワードの複雑性のみが適用されます。
SELECT name,
is_policy_checked,
is_expiration_checked,
LOGINPROPERTY(name, 'IsMustChange') AS IsMustChange,
LOGINPROPERTY(name, 'IsLocked') AS IsLocked,
LOGINPROPERTY(name, 'LockoutTime') AS LockoutTime,
LOGINPROPERTY(name, 'PasswordLastSetTime') AS PasswordLastSetTime,
LOGINPROPERTY(name, 'IsExpired') AS IsExpired,
LOGINPROPERTY(name, 'BadPasswordCount') AS BadPasswordCount,
LOGINPROPERTY(name, 'BadPasswordTime') AS BadPasswordTime,
LOGINPROPERTY(name, 'HistoryLength') AS HistoryLength,
modify_date
FROM sys.sql_logins;
関連タスク
ログイン の作成を