LDAPを使用してすべてのADユーザーグループを検索する

私の職業により、私はしばしばADと統合するサービスに対処しなければなりません。 残念ながら、これらのサービスのほとんどは、 ネストさたグループのような ADの便利な「機能」のサポートを完全に欠いています。
ネストされたすべてのユーザーグループのリストを整理するのは本当に難しいですか?

一見。

一見、この問題を解決するには、少なくとも、ユーザーグループなどを含むグループを取得するために、関数の循環呼び出しを整理する必要があります。 このアプローチでは、グループAがグループBに組み込まれ、グループBがグループAに組み込まれている場合に起こりうる状況を忘れずに処理することが重要です。
また、グループのメンバーシップの検証が頻繁に呼び出される場合、このアプローチにはかなりの計算リソースが必要になる場合があります。

しかし、方法があります。

すばらしいActive Directoryの記事があります:LDAP構文フィルター
ネストされたグループを含むユーザーグループを取得するためのLDAPフィルターの興味深い例を示します。
(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com) 

また、MSDNには、 検索フィルターの構文に関する記事があり、LDAPフィルターでActive Directoryと組み合わせて使用​​できる一致ルールについて説明しています。 この記事では、LDAP_MATCHING_RULE_IN_CHAINルールについて詳しく説明します。
この規則は、distinguishedName型の属性にのみ適用されます。 この特別な一致演算子修飾子を使用すると、ネストされたオブジェクトのツリー全体をバイパスできます。


したがって、グループのネストを処理するタスクは、ADサーバーに簡単に転送されます。

この知識は管理者にとってどのように役立つのでしょうか?

一部のサービスでは、管理者が構成時にユーザーグループを検索するためのLDAPフィルターを設定できます。この場合、管理者はアプリケーションコードを妨げることなく、ネストされたグループに関する動作を変更できます。 十分なフィルター:
 (member=cn=Jim Smith,ou=West,dc=Domain,dc=com) (memberOf=cn=Sales,ou=West,dc=Domain,dc=com) 

に置き換える
 (member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com) (memberOf:1.2.840.113556.1.4.1941:=cn=Sales,ou=West,dc=Domain,dc=com) 


PowerShellで拡張可能な比較ルールを使用する例

Source: https://habr.com/ru/post/J187044/


All Articles