複雑さの要件を満たす必要があるパスワードについて
こんにちは。Windows サポート チームの戸室です。
今回はパスワードの複雑さの要件における注意事項について紹介します。
このポリシーを有効化した場合、パスワードの作成時や変更時に複雑さの要件を満たせなければ、パスワードを登録することができません。
既定の状態は以下のようになります。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ドメイン コントローラーの場合: 有効
スタンドアロン サーバーの場合: 無効
** ドメイン内のメンバー コンピューターは、既定で Default Domain Policy に複雑さの要件が有効化されております。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
パスワードの複雑さの要件は、グループ ポリシーやローカル ポリシーで以下のパスを開いて設定することができます。
[コンピューターの構成] - [ポリシー] - [Windows の設定] - [セキュリティの設定]
- [アカウント ポリシー] - [パスワードのポリシー] - [複雑さの要件を満たす必要があるパスワード]
そして、設定箇所内にあるヘルプの文章では以下のように記載されております。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
このポリシーが有効な場合、パスワードは次の最小要件を満たす必要があります。
・ユーザーのアカウント名またはフル ネームに含まれる 3 文字以上連続する文字列を使用しない。
・長さは 6 文字以上にする。
・次の 4 つのカテゴリのうち 3 つから文字を使う。
英大文字 (A ~ Z)
英小文字 (a ~ z)
10 進数の数字 (0 ~ 9)
アルファベット以外の文字 (!、$、#、% など)
複雑さの要件は、パスワードの変更時または作成時に強制的に適用されます。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
今回は上述のヘルプの文章について、一部補足させていただきます。
補足する文章は以下の 2 つで、文章ごとに分けて補足させていただきます。
補足 1: 長さは 6 文字以上にする
補足 2: ユーザーのアカウント名またはフル ネームに含まれる 3 文字以上連続する文字列を使用しない。
==========================================
補足 1: 長さは 6 文字以上にする
==========================================
こちらはポリシーの説明表記と動作に相違がございます。
パスワードの長さが 6 文字未満でも、以下の 4 つのカテゴリの内、3 つのカテゴリを使用してユーザー アカウントを設定できてしまうことです。
・英大文字 (A ~ Z)
・英小文字 (a ~ z)
・10 進数の数字 (0 ~ 9)
・アルファベット以外の文字 (!、$、#、% など)
こちらは最新の OS である Windows Server 2012 R2 でも表記については修正されていない状況です。
そのため、パスワードの長さをポリシーの要件とする場合には、[複雑さの要件を満たす必要があるパスワード] ではなく [パスワードの長さ] を設定いただく必要が御座います。
"複雑さの要件を満たす必要がある" を有効にしてもパスワードの長さを 6 文字以上にする必要が無い
https://support.microsoft.com/kb/2617632/ja
==========================================
補足 2: ユーザーのアカウント名またはフル ネームに含まれる 3 文字以上連続する文字列を使用しない。
==========================================
こちらは、ドメインに参加していないローカル ユーザーの場合と、Active Directory に参加しているドメイン ユーザーの場合、共通している部分に分けてご案内差し上げます。
2-1. ローカル ユーザーの場合
2-2. ドメイン ユーザーの場合
2-3. 共通している部分
--------------------------------------------------
2-1. ローカル ユーザーの場合
--------------------------------------------------
ローカル ユーザーの場合、下記のルールにてパスワードが複雑さの要件を満たしているかのチェックを行います。
パスワードの複雑さのチェックのルール
<ユーザー名>
・ユーザー名の長さが 3 文字未満の場合、ユーザー名に対してはチェックが行われません。
・ユーザー名がそのままパスワードに使われている場合は要件を満たさず、パスワードとして利用する事が出来ませんが、1 文字でも不足している文字列が含まれる場合はパスワードとして利用する事が可能です。
<フル ネーム>
・ユーザーの作成時にフル ネームに入力する値はチェックが行われません。
・フル ネームのパスワード変更時はそのままチェックが行われるわけではなく、スペース、タブ、改行などの空白、またはコンマ (,)、ピリオド (.)、ハイフン (-)、アンダースコア (_)、番号記号 (#) のいずれかの文字を区切りとして扱い「トークン」と呼ばれる単位に分割します。
・分割されたトークンの内、3 文字未満のトークンはチェックの対象から外れ、3 文字以上の長さを持つ各トークンに対してチェックが行われます。
・対象のトークンごとに文字列がパスワード内に存在するかのチェックが行われ、そのままパスワードに使われている場合は要件を満たしませんが、1 文字でも不足している場合はパスワードとして利用する事が可能です。
パスワード チェックの例
ユーザー名、フル ネームの双方で要件を満たさなければ、そのパスワードは設定できません。
<ユーザー名の場合>
ユーザー名に対してチェックを実行するときは、区切り文字はないため、ユーザー名に設定された文字列が対象となります。
例 1: ユーザー名の値が "TESTUSER_24" の場合
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
このユーザーは "TESTUSER_24" が含まれるパスワードを利用することができません。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<フル ネームの場合>
以下の例は、パスワード変更時の動作になります。
例 2: フル ネームの値が " James_24" の場合
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1) " James”、"24" の 2 つのトークンに分割されます。
2) 1 番目のトークンである "James" が含まれるパスワードを利用することができません。
* " Jame" や "ames" が含まれるパスワードは利用できます。
3) このユーザーは "24" は 3 文字未満のため、パスワードに含める事が可能です。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
例 3: フル ネームの値が "Erin M. Hagens" の場合
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1) " Erin"、"M"、"Hagens" の 3 つのトークンに分割されます。
2) 2 番目のトークンである "M" は 3 文字未満のため、除外されます。
3) このユーザーは "Erin" "Hagens" が含まれるパスワードを利用することができません。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
よって、ローカル ポリシーを利用した場合の「複雑さの要件を満たす必要があるパスワード」は以下の説明として解釈いただき、パスワードを設定ください。
<複雑さの要件を満たす必要があるパスワード> ポリシーの説明
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
このポリシーが有効な場合、パスワードは次の最小要件を満たす必要があります。
・「ユーザー名」 を 3 文字以上に設定している場合、その文字列をそのままパスワードに使用しない。
・「フル ネーム」のトークンが 3 文字以上の場合、その文字列をそのままパスワードに使用しない。
・次の 4 つのカテゴリのうち 3 つから文字を使う。
英大文字 (A ~ Z)
英小文字 (a ~ z)
10 進数の数字 (0 ~ 9)
アルファベット以外の文字 (!、$、#、% など)
複雑さの要件は、パスワードの変更時または作成時に強制的に適用されます。
** 「フル ネーム」のパスワード チェックは、パスワード変更時にのみ行われます。
** トークン: 「フル ネーム」内の区切り単位です。
** 区切り単位: 「フル ネーム」の一部を 3 文字以上の英数字として定義し、スペース、タブ、改行などの空白、またはコンマ (,)、ピリオド (.)、ハイフン (-)、アンダースコア (_)、番号記号 (#) のいずれかの文字で前後両方を区切ります。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
続いて、ドメイン ユーザーの場合のパスワード チェックの動作についてご説明致します。
--------------------------------------------------
2-2. ドメイン ユーザーの場合
--------------------------------------------------
"ユーザーのアカウント名またはフル ネーム" を指す属性は以下のとおりです。
ユーザーのアカウント名: sAMAccountName
フル ネーム: DisplayName
パスワードが複雑さの要件を満たしているかは、上記の sAMAccountName、DisplayName を使用してチェックが行われます。
** 上記の属性値は、ADSI エディターを開いて各ユーザーのプロパティから確認することができます。
パスワードの複雑さのチェックのルール
属性によって複雑さをチェックするルールが異なりますので、それぞれ以下のようになります。
<sAMAccountName の場合>
・sAMAccountName の値の長さが 3 文字未満の場合、sAMAccountName に対してはチェックが行われません。
・sAMAccountName がそのまま使われている場合は要件を満たさず、パスワードとして利用する事も出来ませんが、 1 文字でも不足している文字列が含まれる場合はパスワードとして利用する事が可能です。
<DisplayName の場合>
・DisplayName はそのままチェックが行われるわけではなく、スペース、タブ、改行などの空白、またはコンマ (,)、ピリオド (.)、ハイフン (-)、アンダースコア (_)、番号記号 (#) のいずれかの文字を区切りとして扱い「トークン」と呼ばれる単位に分割します。
・分割されたトークンのうち、3文字未満のトークンはチェックの対象から外れ、3 文字以上の長さを持つ各トークンに関してチェックが行われます。
・対象のトークンごとにパスワード内に存在するかのチェックが行われ、そのままパスワードに使われている場合は要件を満たしませんが、1 文字でも不足している場合はパスワードとして利用する事が可能です。
** ユーザー アカウントを新規作成する際に、「フル ネーム」は、「姓」「名」「イニシャル」で入力した値をスペース区切り、最後にピリオド (.) が自動で入力されます。
パスワード チェックの例
sAMAccountName DisplayName 双方で要件を満たさなければ、そのパスワードは設定できません。
<sAMAccountName の場合>
** sAMAccountName 属性に対してチェックを実行するときは、区切り文字はないため、 samAccountName に設定された文字列が対象となります。
例 1: sAMAccountName の値が "James_24" の場合
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
このユーザーは "James_24" が含まれるパスワードを利用することができません。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<DisplayName の場合>
例 1: DisplayName の値が "James_24" の場合
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1) "James”、"24" の 2 つのトークンに分割されます。
2) 1 番目のトークンである "James" が含まれるパスワードを利用することができません。
* "Jame" や "mes" が含まれるパスワードは利用できます。
3) このユーザーは "24" は 3 文字未満のため、パスワード チェックの対象外となります。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
例 2: DislayName の値が "Erin M. Hagens" の場合
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1) " Erin"、"M"、"Hagens" の 3 つのトークンに分割されます。
2) 2 番目のトークンである "M" は 3 文字未満のため、除外されます。
3) このユーザーは "Erin" "Hagens" が含まれるパスワードを利用することができません。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
よって、ドメイン ユーザーにおける「複雑さの要件を満たす必要があるパスワード」は、以下の説明として解釈いただきパスワードを設定くださいますようお願い申し上げます。
<複雑さの要件を満たす必要があるパスワード> ポリシーの説明
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
このポリシーが有効な場合、パスワードは次の最小要件を満たす必要があります。
・「ユーザー ログオン名 (Windows 2000 より前)」 を 3 文字以上に設定している場合、その文字列をそのままパスワードに使用しない。
・「フル ネーム」のトークンが 3 文字以上の場合、その文字列をそのままパスワードに使用しない。
・次の 4 つのカテゴリのうち 3 つから文字を使う。
英大文字 (A ~ Z)
英小文字 (a ~ z)
10 進数の数字 (0 ~ 9)
アルファベット以外の文字 (!、$、#、% など)
複雑さの要件は、パスワードの変更時または作成時に強制的に適用されます。
** トークン: 「フル ネーム」内の区切り単位です。
** 区切り単位: 「フル ネーム」の一部を 3 文字以上の英数字として定義し、スペース、タブ、改行などの空白、またはコンマ (,)、ピリオド (.)、ハイフン (-)、アンダースコア (_)、番号記号 (#) のいずれかの文字で前後両方を区切ります。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-------------------------------
2-3. 共通している部分
-------------------------------
パスワードの複雑さのチェックのユーザー名の比較では、大文字 / 小文字の区別は行われません。
例えば、以下のような場合では「パスワードの複雑さの要件」を満たしていないため、パスワードを設定することができません。
アカウント名: TESTUSER001
パスワード: TestUser001a!
** 大文字 / 小文字を区別しないため、アカウント名がそのままパスワードに組み込まれていることから、複雑さの要件を満たしていないと判断しパスワードが設定できません。
パスワードの複雑さの要件についての補足は以上となります。
また、以下の技術情報も併せてご確認いただき、パスワードを設定くださいますようお願い申し上げます。
パスワードは、複雑さの要件を満たす必要がある
https://msdn.microsoft.com/ja-jp/library/cc786468(v=ws.10).aspx
Passwords must meet complexity requirements
https://technet.microsoft.com/en-us/library/cc786468(WS.10).aspx
「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」