LDAP 検索フィルターの作成方法

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

目的

このドキュメントでは、アトラシアン アプリケーションの LDAP 構成でユーザー オブジェクト フィルターおよびグループ オブジェクト フィルター属性のより高度なフィルターを構築する方法について概要を説明します。

フィルターとは

フィルターを使用すると、アプリケーションへのアクセスを許可されるユーザーまたはグループの数を制限できます。つまり、フィルターは、LDAP ツリーのどの部分からアプリケーションが同期するかを制限します。  

フィルターは、ユーザーとグループのメンバーシップの両方に対して作成でき、また作成すべきです。これにより、アプリケーションがアクセスを必要としないユーザーやグループで溢れることがなくなります。

ソリューション

フィルターを作成するときは、アプリケーションへのアクセスを許可したいユーザーのグループに共通の属性を選択するのが最適です。多くの場合、これはグループ メンバーシップを示す属性や、「Person」のようなオブジェクト クラスとなります。

tip/resting Created with Sketch.

グループのメンバーシップを示すために使用される属性は、すべての種類の LDAP に共通しているわけではありません。この属性の例としては、「groupMembership」や「Member」などがあります。


複数の属性を一致させるにはどうすればいいですか

たとえば、ユーザーが 2 つの ObjectClass 属性 (1つは「person」、もう 1 つは「user」) を持っていることで区別される場合、次のようにマッチングします。

(&(objectClass=person)(objectClass=user))

先頭のアンパサンド記号「ampersand symbol '&'」に注意してください。これは、「objectClass=person および objectClass=user を検索する」ことを意味します。

または、次のようになります。

(|(objectClass=person)(objectClass=user))

これは、「objectClass=person または object=user」を検索する」ことを意味します。

パイプ記号「pipe symbol '|'」は「OR」を意味します。これは特別な XML 文字ではないため、エスケープする必要はありません。

ワイルドカード

(&(objectClass=user)(cn=*Marketing*))

これは、「objectClass=user および cn に「Marketing」という単語を含むすべてのエントリーを検索する」ことを意味します。

tip/resting Created with Sketch.

論理演算子の「!」(または NOT) を使用するフィルターでは、ワイルドカードはサポートされません。以降をご確認ください。

(warning)LDAP サービス自体は、LDAPFilter を設定する際に memberOf attribute やその他の識別名のワイルドカードをサポートしていません。

3 つの属性をマッチさせるにはどうすればいいですか

もう 1 つ句を追加してください:

(&(objectClass=user)(objectClass=top)(objectClass=person))

3 つ以上の属性について追加の句を追加することもできます。

識別名の一致する要素 

tip/resting Created with Sketch.

 Microsoft Active Directory は拡張可能なマッチングを実装していないため、次の例は Active Directory ではうまくいきません。


たとえば、サーバーの 2 つのサブツリーでグループを検索する必要があるなど、DN の一部を一致させたいな場合があります。

(&(objectClass=group)(|(ou:dn:=Chicago)(ou:dn:=Miami)))

これは、DN に「Chicago」または「Miami」のいずれかの OU 要素を持つグループを検索します。 

「not」を使用する

ある表現 (expression) に一致するエンティティを除外するには、「!」を使います。

したがって、

(&(objectClass=group)(&(ou:dn:=Chicago)(!(ou:dn:=Wrigleyville))))

は、Wrigleyville の OU 要素を持つグループを除く、すべての Chicago グループを検索します。

追加の括弧に注意してください: (!(<expression>))

 「not」(つまりオブジェクトを除外するために「!」) を使用する場合は、3.4 以前の Confluence を使用しているのであれば、XML ファイルの中でエンティティ「!」として表現しなければならないことに注意してください。

3.4 以前の Confluence の場合、このドキュメントを使用して検索フィルターを作成したら、XML ファイルに追加する前にアンパサンド記号と感嘆符記号をエスケープしなければなりません。そのため、以下の例のようにします。

(&(objectClass=person)(!(objectClass=user)))
(&amp;(objectClass=person)(&#33;(objectClass=user)))

エスケープが必要な他の XML 文字については、 この外部ドキュメントを参照してください

サンプル フィルター

これらのフィルターは Active Directory 用に書かれています。 OpenLDAP などに使用するには、属性を変更する必要があります。

参考:


注意:

  • 以下のフィルターは、Atlassian アプリケーションのユーザー ディレクトリ設定のユーザー オブジェクト フィルターに適用する必要があります。

これは「CaptainPlanet」グループのユーザーだけを同期します。

(&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))

そしてこれは、このグループのメンバーであるユーザーを、直接またはネストによって検索します。

(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))

Active Directory で、CaptainPlanet グループ内のネストされたグループを見つけたい場合は、memberOf:1.2.840.113556.1.4.1941 (数値文字列は置き換えない) を持つことが重要です。

これは、 4 つのグループ (fire、wind、water、heart) の一部またはすべてのメンバーであるユーザーを検索します。

(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=cn=fire,ou=users,dc=company,dc=com)(memberOf=cn=wind,ou=users,dc=company,dc=com)(memberOf=cn=water,ou=users,dc=company,dc=com)(memberOf=cn=heart,ou=users,dc=company,dc=com)))

これは、メールアドレスを持つユーザーを検索します。

(&(objectCategory=Person)(sAMAccountName=*)(mail=*))

これは、メールアドレスを持ち、かつ、以下のフィルターのいずれか、またはすべてのグループのメンバーであるユーザーを検索します。

(&(objectCategory=Person)(sAMAccountName=*)(mail=*)(|(memberOf=cn=fire,OU=Atlassian Groups,dc=xxxx,dc=com)(memberOf=cn=wind,OU=Atlassian Groups,dc=xxxx,dc=com)(memberOf=cn=water,OU=Atlassian Groups,dc=xxxx,dc=com)(memberOf=cn=heart,OU=Atlassian Groups,dc=xxxx,dc=xxxx)))

これは、ユーザー オブジェクト フィルターに追加されると、さまざまな CN からユーザーを検索してインポートします。その結果、「Jira Administrators」、「jira-users」、「confluence-adminministrators」のユーザーが Atlassian アプリケーションに同期されます。

(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=CN=Jira Administrators,CN=Users,DC=test,DC=mydomain,DC=com)(memberOf=CN=jira-users,CN=Users,DC=test,DC=mydomain,DC=com)(memberOf=CN=confluence-administrators,CN=Users,DC=test,DC=mydomain,DC=com)))


関連トピック

Restricting LDAP Scope for User and Group Search

Using Apache Directory Studio for LDAP Configuration

ユーザーディレクトリの設定 - Confluence ドキュメント

ユーザーディレクトリの設定 - Jira ドキュメント


説明 このドキュメントでは、アトラシアン アプリケーションの LDAP 構成でユーザー オブジェクト フィルターおよびグループ オブジェクト フィルター属性のより高度なフィルターを構築する方法について概要を説明します。
製品Jira、Confluence、Bamboo、Bitbucket
プラットフォームServer
最終更新日 2023 年 7 月 20 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.