次のような構造があるとします。
A と B2 を除外するにはどうすればよいですか?
_users
|__A
|__B
|__B1
|__B2
|__B3
|__C
|__D
ou=ユーザー、dc=ドメイン、dc=co、dc=uk;
次のような構造があるとします。
A と B2 を除外するにはどうすればよいですか?
_users
|__A
|__B
|__B1
|__B2
|__B3
|__C
|__D
ou=ユーザー、dc=ドメイン、dc=co、dc=uk;
LDAP 検索は、次の 4 つの要素で構成されます。
(objectClass=user)
)Active Directory には、OU を再帰検索から除外する「自然な」方法はありません。
LDAP に関しては、理論的な観点から、ExtensibleMatchが存在し、やりたいことを可能にしますが、Active Directoryではサポートされていません。
ディレクトリサーバーは非準拠であるため(JPが指摘しているように、ADは拡張可能な一致フィルターをサポートしていないため非準拠です)、エントリをA
およびに属するものとして識別する値を持つ属性がある場合B2
は、検索フィルターを持つ属性を除外します。たとえば、 with値をA
持つように従属するエントリの場合、フィルタは、ベースオブジェクト、スコープ、フィルタ、および必要な属性のリストで構成される検索を持つエントリを除外できます。同様のフィルターを作成して、エントリーを同時に除外することもできます。objectClass
in-A
ou=users, dc=domain, dc=co, dc=uk
whole subtree
(!(objectClass=in-A))
A
B2
検索および検索フィルターの詳細については、「LDAP:検索フィルターのマスター」を参照してください。
唯一の方法は、必要な OU または不要な OU にのみ特別な属性を設定することです。これらはほとんど使用されず、通常、この種の問題を管理するために「悪用」される可能性があるため、ユーザーのpager
属性、またはコンピューターの physicalLocationObject を使用できます (実際に使用されていないかどうかを確認することを忘れないでください!! )。次に、これらの属性をフィルタリングして検索を実行し、次のようにそれらの OU を除外できます。(&(objectclass=user)(!(pager=*)))
もちろん、これは非効率的であり、正しい解決策は、必要なものに合わせて LDAP/AD 構造を並べ替えることです。
私はこれを単純化しすぎているかもしれませんが、クエリから除外したい OU へのリスト/読み取りアクセスを拒否することもできませんか? 特定のサービス アカウントを使用してルックアップを実行していると仮定すると、これは機能するはずです。