ドメイン コントローラーに対して LDAP クエリを実行すると、部分的な属性リストが取得されます

この記事では、ドメイン コントローラーに対して LDAP クエリを実行するときに、部分的な属性リストを取得するときの問題の回避策について説明します。

適用対象: Windows Server 2012 R2
元の KB 番号: 976063

現象

Windows Server 2008 ベースのドメイン コントローラーに対してライトウェイト ディレクトリ アクセス プロトコル (LDAP) 要求を実行すると、部分的な属性リストが取得されます。 ただし、Windows Server 2003 ベースのドメイン コントローラーに対して同じ LDAP クエリを実行すると、応答で完全な属性リストが取得されます。

注:

このクエリは、ドメイン コントローラーから、または Windows Vista または Windows Server 2008 を実行しているクライアント コンピューターから実行できます。

LDAP クエリの実行に使用するユーザー アカウントには、次のプロパティがあります。

  • アカウントは、組み込みの Administrators グループのメンバーです。
  • アカウントは組み込みの管理者アカウントではありません。
  • アカウントは Domain Admins グループのメンバーです。
  • ユーザー オブジェクトの随意アクセス制御リスト (DACL) には、Administrators グループの完全な制御アクセス許可が含まれています。
  • クエリを実行するオブジェクトの有効なアクセス許可は、ユーザーがフル コントロール権限を持っていることを示しています。

原因

この問題は、Windows Vista および Windows Server 2008 のユーザー アカウントで管理承認モード (AAM) 機能が有効になっているために発生します。 "ユーザー アカウント制御" (UAC) とも呼ばれます。 ローカル リソース アクセスの場合、セキュリティ システムにはループバック コードがあるため、LDAP セッションの対話型ログオン セッションからのアクティブなアクセス トークンと、LDAP クエリ処理中のアクセス チェックが使用されます。

AAM 機能の詳細については、次の Microsoft TechNet Web サイトを参照してください。 https://technet.microsoft.com/library/cc772207(WS.10).aspx

回避策

この問題を回避するには、以下のいずれかの方法を使用します。

方法 1

  1. [管理者として実行] オプションを使用して、コマンド プロンプト ウィンドウを開きます。
  2. コマンド プロンプト ウィンドウで LDAP クエリを実行します。

方法 2

次のセキュリティ設定の [プロンプトなし] の値を指定します。
ユーザー アカウント制御: 管理承認モードでの管理者の昇格プロンプトの動作
このセキュリティ設定の値を指定する方法の詳細については、次の Microsoft TechNet Web サイトを参照してください。 https://technet.microsoft.com/library/cc772207(WS.10).aspx

方法 3

  1. ドメインに新しいグループを作成します。
  2. Domain Admins グループをこの新しいグループに追加します。
  3. ドメイン パーティションに対する読み取りアクセス許可をこの新しいグループに付与します。 これを行うには、次の手順を実行します。
    1. [ スタート] をクリックし、[ 実行] をクリックし、「adsiedit.msc」と入力して、[OK] をクリック します
    2. [ADSI 編集] ウィンドウで、DC=Name,DC>=<com を右クリックし、[プロパティ] をクリックします。
    3. [ プロパティ ] ウィンドウで、[ セキュリティ ] タブをクリックします。
    4. [セキュリティ] タブで [追加] をクリックします。
    5. [ 選択するオブジェクト名を入力します] で、新しいグループの名前を入力し、[OK] をクリック します
    6. [グループ 名またはユーザー名] でグループが選択されていることを確認し、[読み取り] アクセス許可の [許可 ] をクリックして選択し、[OK] をクリック します
    7. [ADSI 編集] ウィンドウを閉じます。
  4. LDAP クエリをもう一度実行します。

状態

この動作は仕様です。

詳細

既定では、Windows Vista および Windows Server 2008 の組み込み管理者アカウントでは、AAM 機能が無効になっています。 さらに、AAM 機能は、組み込みの Administrators グループのメンバーである他のアカウントに対して有効になっています。

これを確認するには、コマンド プロンプト ウィンドウで次のコマンドを実行します。

whoami /all

AAM 機能がユーザー アカウントに対して有効になっている場合、出力は次のようになります。

USER INFORMATION
----------------

User Name SID 
============== ==============================================
MyDomain\MyUser S-1-5-21-2146773085-903363285-719344707-326360

GROUP INFORMATION
-----------------

Group Name Type SID Attributes 
============================================= ================ ================================================= ===============================================================
Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group 
BUILTIN\Administrators Alias S-1-5-32-544 Group used for deny only

組み込みの Administrators グループには、次の属性があります。

Group used for deny only

"Domain Admins" グループは、whoami /all に "必須グループ、既定で有効、有効なグループ" が含まれる有効なグループとして表示されますが、実際には [ALLOW ACE] では無効になっています。 これは、Windows Server 2008 R2 および Windows Server 2012の既知の問題です。

この出力に基づいて、LDAP クエリの実行に使用したユーザー アカウントで AAM 機能が有効になっています。 LDAP クエリを実行する場合は、フル アクセス トークンではなく、フィルター処理されたアクセス トークンを使用します。 Administrators グループのフル コントロール権限がユーザー オブジェクトに付与されている場合でも、完全な制御アクセス許可はありません。 したがって、部分的な属性リストのみを取得します。