NetUserGetInfo と同様の API を使用するアプリケーションは、特定の AD オブジェクトへの読み取りアクセスに依存します
この記事では、 NetUserGetInfo
や NetGroupGetInfo
など、NetUser または NetGroup クラスのダウンレベル API を使用するアプリケーションが ACCESS DENIED エラーで失敗する問題について説明します。
元の KB 番号: 2281774
まとめ
NetUserGetInfo
、NetUserSetInfo
、NetUserEnum
、NetGroupGetInfo
、NetGroupSetInfo
、NetGroupEnum
、NetLocalGroupGetInfo
、NetLocalGroupSetInfo
、NetLocalGroupEnum
など、NetUser または NetGroup クラスの下位レベルの API を使用するアプリケーションがあります。 このスキームでは、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 ドメインでは、認証されたユーザー、すべてのユーザー、Windows 2000 互換アクセス前グループなどの汎用グループのメンバーシップに基づいて、これらのオブジェクトへのアクセス許可が付与されます。 問題を引き起こす変更は、ユーザーが最後のグループから削除された (すべてのユーザーと一緒に削除された場合や、リストされているオブジェクトに対するアクセス許可が Active Directory のアクセス許可を強化する移動で削除された可能性があります)。
この問題を解決する方法は、必要な読み取りアクセス許可を付与するか、古い API または ADSI WINNT プロバイダーの代わりに LDAP を使用するようにアプリケーションを変更することです。 LDAP は上記のオブジェクトに触れず、ターゲット オブジェクトに設定した詳細なアクセス許可もサポートします。
過剰な監査
これらのオブジェクトに対して監査を有効にすると、オブジェクトを開く、閉じる、および実際のターゲット オブジェクト アクセスの両方について、上記のオブジェクトに対して最大 3 つの監査レコードが表示されます。 イベントが過剰にログに記録される場合は、監査 ACL のエントリを削除して、これらの汎用アクセスの種類がログに記録されないようにするのが理にかなっています。 問題は、ドメイン ルート オブジェクトと組み込みコンテナーが多数の下位オブジェクトを継承することです。
これを解決するには、組み込みコンテナーでの継承を解除し、継承する ACE を再定義して、このオブジェクトにのみ適用する必要があります。 また、問題の SACEs がドメイン ルート オブジェクトに適用されないように、ドメイン ルート オブジェクトの ACE に触れる必要があります。 正確な手順は、環境内で有効な実際の SACL 設定によって異なります。