- PR -

CSVDEのフィルタ条件について

1
投稿者投稿内容
imada
会議室デビュー日: 2006/09/29
投稿数: 2
投稿日時: 2006-09-29 17:34
はじめまして。いつも拝見させていただいております。
このたびは皆さんのお知恵を拝借させていただきたく思い、
投稿さしあげました。

CSVDEコマンドにて、ActiveDirectoryに登録されている
グループオブジェクトの情報をエクスポートしようと考えているのですが、
その際に「特定のメンバを含むグループのみ」という検索条件を
指定する方法が思い浮かばず困っております。

例)「cn=ABC*」であるユーザをメンバに持つグループを抽出する場合など

よろしくご教授願います。

ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-03 00:43
Group が nest されていないなら memberOf Attribute を使えば一撃でしょう。

問題は group が nest されていて、かつそれを展開する場合で、この場合は CSVDE で一撃というわけにはいきませんので、それを行う script を作成するなり、かなり苦労する必要があるでしょう。
# やったことありますが、件数が多い(数万以上)場合、処理速度が問題となるためかなり苦労します。速度を問題としない場合にはそれほどでも。
imada
会議室デビュー日: 2006/09/29
投稿数: 2
投稿日時: 2006-10-03 18:47
アドバイスありがとうございました。

やはりCSVDEで詳細なフィルタリングをするには
一工夫いるのですね。

今回は、教えていただいた「memberOf」を使って、
ユーザオブジェクトからアプローチする方法で
やってみようと思います。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-03 23:41
引用:
やはりCSVDEで詳細なフィルタリングをするには
一工夫いるのですね。



というよりも、LDAP query と AD の仕様をちゃんと理解する必要があるでしょう。

例えば、前述の "memberOf" ですが、これは AD に配列として保持されているので、filter で指定する場合、配列ではない attribute とは扱いが若干異なります。

attribute が配列で格納される場合、"*" を利用したあいまい検索は利用できませんが、"=" で配列の要素に含まれるという意味を持たせることができます。

ちょっと例を書くと

(memberOf=CN=hoge1*)

というのは NG ですが、

(memberOf=CN=hoge1,OU=hoge2,DC=hoge3,DC=hoge4)

と指定した場合、配列の中に "CN=hoge1,OU=hoge2,DC=hoge3,DC=hoge4" が含まれていれば条件に一致すると解釈されます。

まあ、あと一度に返される要素の数に制限があったりとかするので script で LDAP query を発行する場合には結構気を使わなければならない点がいろいろあるのですが、CSVDE を
利用した場合、隠蔽されていたりするんでね…
1

スキルアップ/キャリアアップ(JOB@IT)