次の方法で共有


パスワード ポリシー

適用対象: SQL Server

SQL Server は Windows のパスワード ポリシー メカニズムに対応しています。 パスワード ポリシーは SQL Server 認証を使用するログインに適用され、パスワードを持つ包含データベース ユーザーに適用されます。

SQL Server は、Windows で使用されているのと同じ複雑性と有効期限のポリシーを、SQL Server 内で使用されるパスワードに適用することができます。 この機能は NetValidatePasswordPolicy API に依存します。

Note

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 ログインごとに個別に構成できます。 SQL Serverログインのパスワードポリシーオプションを構成するには、ALTER LOGIN(Transact-SQL)を使用します。 パスワード ポリシーの適用を構成する際に、次の規則が当てはまります:

  • 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 または空文字列

    • コンピューター名またはログイン名と同じ文字列

    • passwordadminadministratorsasysadmin のいずれか

セキュリティ ポリシーは、Windows で設定する場合も、ドメインから受け取る場合もあります。 コンピューターでパスワード ポリシーを表示するには、ローカル セキュリティ ポリシーの MMC スナップイン (secpol.msc) を使用します。

Note

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;

CREATE LOGIN (Transact-SQL)

ALTER LOGIN (Transact-SQL)

CREATE USER (Transact-SQL)

ALTER USER (Transact-SQL)

ログインの作成

データベース ユーザーの作成