NetUserGetInfo と同様の API を使用するアプリケーションは、特定の AD オブジェクトへの読み取りアクセスに依存します

この記事では、NetUser クラスまたは NetGroup クラスのダウンレベル API を使用するアプリケーションが ACCESS DENIED エラーと同様 NetUserGetInfo または NetGroupGetInfo 失敗する問題について説明します。

元の KB 番号: 2281774

概要

NetUser クラスまたは NetGroup クラスの下位レベルの API (、NetUserSetInfoNetGroupSetInfoNetLocalGroupEnumNetUserEnumNetLocalGroupSetInfoNetGroupGetInfoNetLocalGroupGetInfoNetGroupEnumなどNetUserGetInfo) を使用するアプリケーションがあります。 このスキームでは、NetUser クラス API を使用してコンピューター アカウントを管理することもできます。

ADSI WINNT プロバイダーを呼び出すときにも、同じ API が使用されます。

呼び出し元アカウントにはターゲット アカウントに対する十分なアクセス許可がありますが、これらの API は ACCESS DENIED で失敗する可能性があります。 その理由は、クライアント側 API の実装に、セキュリティ アカウント マネージャー (SAM) RPC API との 1 対 1 の関係がないためです。 クライアント側は、Active Directory で追加のアクセス許可を必要とするこれらの呼び出しに対して追加のチェックと準備を実行します。

これらの API を使用するアプリケーションの 1 つはクラスター サービスであり、クラスター サービス ログには次の情報が表示されます。

00000a78.000021b8::2010/06/15-00:00:47.911 WARN [RES] ネットワーク名 <cluster-resource1: コンピューター アカウント cluster-resource1> が既に無効になっているかどうかを判断できませんでした。 状態 5

この影響のもう 1 つの症状は、これらの API 呼び出しに対する DC のセキュリティ イベント ログ内の監査レコードが過剰であり、呼び出し元アカウントのアクセスの監査が成功または失敗した場合に、以下に引用するオブジェクトである可能性があります。

詳細

API の実装では、ドメイン コントローラーに送信される複数の RPC 呼び出しを使用して、セッションを設定し、ドメインを確認します。 読み取りアクセス権を持つ次のオブジェクトにアクセスします。

  • ドメイン ルート オブジェクト: ドメイン コントローラーのプライマリ ドメインを検索し、読み取り用にドメインを開きます。これにより、DC=contoso、dc=com などのドメインの AD オブジェクトが開きます。

  • 組み込みコンテナー: これは組み込みドメインのルート オブジェクトです。 呼び出し元がその存在を確認するときに開きます。 したがって、呼び出し元はコンテナー CN=Builtin、DC=contoso、dc=com への読み取りアクセスを必要とします。

  • SAM サーバー オブジェクト: このオブジェクトは、一般的な SAM アカウントのアクセスと列挙に関する一般的なアクセス許可を格納します。 特定の呼び出しでのみ使用されます。 オブジェクト名は cn=server、cn=system、DC=contoso、dc=com です。

ほとんどの Active Directory ドメインでは、認証されたユーザー、Everyone、Windows 2000 以前の互換性のあるアクセス グループなどの汎用グループのメンバーシップに基づいて、これらのオブジェクトへのアクセス許可が付与されます。 問題を引き起こす変更は、ユーザーが最後のグループから削除された (すべてのユーザーと一緒に削除された場合や、リストされているオブジェクトに対するアクセス許可が Active Directory のアクセス許可を強化する移動で削除された可能性があります)。

この問題を解決する方法は、必要な読み取りアクセス許可を付与するか、古い API または ADSI WINNT プロバイダーの代わりに LDAP を使用するようにアプリケーションを変更することです。 LDAP は上記のオブジェクトに触れず、ターゲット オブジェクトに対して設定した詳細なアクセス許可もサポートします。

過剰な監査

これらのオブジェクトに対して監査を有効にすると、オブジェクトを開く、閉じる、および実際のターゲット オブジェクトへのアクセスの両方について、上記のオブジェクトに対して最大 3 つの監査レコードが表示されます。 イベントが過度にログに記録される場合は、監査 ACL のエントリを削除して、これらの汎用アクセスの種類がログに記録されないようにするのが理にかなっています。 問題は、Domain Root オブジェクトと組み込みコンテナーが多数の下位オブジェクトに継承することです。

これを解決するには、組み込みコンテナーでの継承を解除し、継承する ACE を再定義して、このオブジェクトにのみ適用する必要があります。 また、問題の SACEs がドメイン ルート オブジェクトに適用されないように、ドメイン ルート オブジェクトの ACE に触れる必要もあります。 正確な手順は、環境内で有効な実際の SACL 設定によって異なります。