LDAP のインクリメンタル同期によってユーザーが削除される

複数製品に共通のナレッジ

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

問題

 手動同期後の任意の時点でアプリケーションでユーザーが不足している。

診断

LDAP クエリの詳細を追加でログ出力する」の手順に従い、追加のロギングを有効化します。

なお、可能な限りの情報を得られるよう、com.atlassian.crowd.directory.SpringLDAPConnector ではなく com.atlassian.crowd にログオンするようにします。これが有効化されたら、ユーザーが削除されるのを待ちます。日次ログに次のようなエントリが記録されます。

2016-05-18 08:54:07,921 INFO  [clusterScheduler_Worker-3]  c.a.c.d.DbCachingRemoteDirectory INCREMENTAL synchronisation for directory [ 229377 ] starting

2016-05-18 08:54:07,935 DEBUG [clusterScheduler_Worker-3]  c.a.c.d.MicrosoftActiveDirectory Performing polling search: baseDN = DC=com - filter = (&(&(objectCategory=Person)(sAMAccountName=*)(memberOf=CN=Users,OU=Groups)(uSNChanged>=678449785))2016-05-18 08:54:07,939 INFO  [clusterScheduler_Worker-3]  c.a.c.d.l.c.UsnChangedCacheRefresher scanned and compared [ 397 ] users to delete, [ 0 ] users to add, [ 0 ] users to update in DB cache in [ 14ms ]

原因

原因 #1: インクリメンタル同期中にコネクタが AD にバインドする際に、権限のない資格情報を使っている。 

CWD-3093 - Getting issue details... STATUS

原因 #2: LDAP サーバーで返せる結果の数にハード制限があり、対象のディレクトリについて Bitbucket Server で Paged Results が有効化されていない。たとえば、atlassian-bitbucket.log からの次のログでは、LDAP サーバーによって最初の 15,000 ユーザーのみが返されています。

2016-10-05 10:17:20,400 INFO  [Caesium-1-2]  c.a.c.d.l.SpringLdapTemplateWrapper Timed call for search with dircontext on ou=People,ou=Corporate,o=abc took 14560ms
2016-10-05 10:17:20,401 INFO  [Caesium-1-2]  c.a.c.d.l.c.RemoteDirectoryCacheRefresher found [ 15000 ] remote users in [ 14562 ms ]
...
2016-10-05 10:17:25,718 DEBUG [Caesium-1-2]  c.a.c.d.DbCachingRemoteChangeOperations user [ username ] not found, deleting


原因 #3: "ポートをグローバル カタログ (3268) に変更する" Global Catalog ではデフォルトで accountExpires 属性が保管されないため、失効したユーザーを除外すると、Jira で使用されるフィルターに一致するユーザーが存在しません。Jira は完全同期を行いますが、次のインクリメンタル同期で即座に削除されます。

  • これは、通常のポート (389) から取得されたユーザーの LDIF を生成し、Global Catalog ポート (3268) を使用した別の LDIF を生成して、それぞれで取得できる属性の一覧を比較することで確認できます。Global Catalog にこの属性が保管されていない場合、これが原因です。

JRASERVER-64099 - Getting issue details... STATUS

回避策

原因 #1

  • インクリメンタル同期を無効化します。
    または
  • 同じ設定を持つ、新しい委任 LDAP ユーザー ディレクトリを使用するように切り替えます。

原因 #2

LDAP サーバーを調整し、検索で返される結果の数がセットアップ済みのユーザー フィルターよりも多くなるようにします。

原因 #3

  1. 現在のユーザー ディレクトリ構成を編集し、インクリメンタル同期を利用しないようにします。 
    1. これは、ユーザー ディレクトリ構成の [高度な設定] セクションにある [インクリメンタル同期を有効化] オプションの選択を解除することで行なえます。
  2. [失効したユーザーの除外] を無効化します。
  3. AD サーバーで Global Catalog に "accountExpires" 属性を追加します。これは AD サーバーの管理者が行う必要があります。詳細については以降をご確認ください。
    1. http://www.dell.com/support/article/us/en/19/sln285512/windows-server--how-to-add-attributes-to-the-global-catalog-partial-attribute-set?lang=en

ソリューション

原因 #1: LDAP ユーザーの管理者ユーザーであることを確認します。

原因 2: ユーザー ディレクトリの高度な設定にある [ページ化された結果を使用] オプションを有効化します。これにより、すべてのエントリを一度に読み込もうとするのではなく、結果がページごとに表示されるようになります。




最終更新日: 2020 年 12 月 16 日

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

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