LDAP ディレクトリへの接続

このページの内容

お困りですか?

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

コミュニティに質問

You can connect Bitbucket Data Center and Server to an existing LDAP user directory, so that your existing users and groups in an enterprise directory can be used in Bitbucket. The LDAP directory is used for both user authentication and account management.

Bitbucket is able to connect to the following LDAP directory servers:

  • Microsoft Active Directory
  • Apache Directory Server (ApacheDS) 1.0.x および 1.5.x
  • Apple Open Directory (読み取り専用)
  • Fedora Directory Server (読み取り専用 Posix Schema)
  • Novell eDirectory サーバ
  • OpenDS
  • OpenLDAP
  • Open LDAP (読み取り専用 Posix Schema)
  • Generic Posix/RFC2307 ディレクトリ (読み取り専用)
  • Sun Directory Server Enterprise Edition (DSEE)
  • 任意の汎用 LDAP ディレクトリ サーバー

このページの内容

Connecting Atlassian Bitbucket to your external directory is not sufficient to allow your users to log in. You must explicitly grant them access to Bitbucket in the global permission screen.

権限を付与する際は、個々のアカウントではなくグループを使用することをおすすめします。

ライセンスの考慮事項

When connecting Bitbucket to an external directory, be careful not to allow access by more users than your Bitbucket license allows. If the license limit is exceeded, your developers will not be able to push commits to repositories, and Bitbucket will display a warning banner. See this FAQ.

Synchronization when Bitbucket is first connected to the LDAP directory

When you first connect Bitbucket to an existing LDAP directory, the Bitbucket internal directory is synchronized with the LDAP directory. User information, including groups and group memberships, is copied across to the Bitbucket directory.

アトラシアンでは、社内のローカル ネットワークで、10,000 ユーザー、1000 グループ、200,000 メンバーシップで構成される Active Directory サーバーとの同期の内部テストを実施しました。その結果、初回の同期は約 5 分かかることを確認しました。後にAD サーバー上で 100 個の変更を行った場合の同期は、数秒で完了しました。以降のオプションを参照してください。

Note that when Bitbucket is connected to an LDAP directory, you cannot update user details in Bitbucket. Updates must be done directly on the LDAP directory, perhaps using a LDAP browser tool such as Apache Directory Studio.

オプション - LDAP フィルターを使用して同期されるユーザーやグループの数を制限する

You can use LDAP filters to restrict the users and groups that are synchronized with the Bitbucket internal directory. You may wish to do this in order to limit the users or groups that can access Bitbucket, or if you are concerned that synchronization performance may be poor. 

たとえば、"bitbucket_user" または "red_team", という名前のグループのみに同期を制限するには、Group Object Filter フィールドに以下を入力します (以降の「グループ スキーマの設定」を参照)。

(&(objectClass=group)(|(cn=bitbucket_user)(cn=red_team)))

フィルターの詳細や例については、「LDAP 検索フィルターの作成方法」を参照してください。これらの例を単純にコピーするのではなく、自身のディレクトリ ツリーにあるさまざまなコンテナ、属性、およびオブジェクト クラスの名前を知っておく必要があります。Apache Directory Studio などのツールを使用してこのようなコンテナ名を見つけることができます。

ユーザーがログインを試みたときの認証

When a user attempts to log in to Bitbucket, once synchronization has completed, Bitbucket confirms that the user exists in it's internal directory and then passes the user's password to the LDAP directory for confirmation. If the password matches that stored for the user, LDAP passes a confirmation back to Bitbucket, and Bitbucket logs in the user. During the user's session, all authorizations (i.e. access to Bitbucket resources such as repositories, pull requests and administration screens) are handled by Bitbucket, based on permissions maintained byBitbucket in its internal directory.

LDAP_external

Connecting Bitbucket

To connect Bitbucket to an LDAP directory:

  1. "管理" 権限を持つユーザーとしてログインします。
  2. In the Bitbucket administration area, click User Directories (under 'Accounts').
  3. [ディレクトリの追加] をクリックし、ディレクトリ タイプとして [Microsoft Active Directory] または [LDAP] を選択します。
  4. 以下の表で説明されているようにディレクトリ設定を構成します。
  5. ディレクトリ設定を保存します。
  6. "ユーザー ディレクトリ" 画面で各ディレクトリの横にある青色の矢印をクリックして、ディレクトリの順序を定義します。ディレクトリ順は次のように影響します。
    • ディレクトリの順序は、ユーザーおよびグループの検索順序です。
    • ユーザーおよびグループへの変更は、アプリケーションが変更権限を持つ最初のディレクトリに対してのみ行われます。

サーバー設定

設定

説明

名前

LDAP ディレクトリ サーバーを識別するのに役立つわかりやすい名前を入力します。例:

  • Example Company Staff Directory
  • Example Company Corporate LDAP

ディレクトリ タイプ

接続する LDAP ディレクトリのタイプを選択します。新しい LDAP 接続を追加する場合、ここで選択した値によって、画面の残りのオプションの多くのデフォルト値が決定します。例:

  • Microsoft Active Directory
  • OpenDS
  • その他。

ホスト名

ディレクトリ サーバのホスト名。例:

  • ad.example.com
  • ldap.example.com
  • opends.example.com

ポート

ディレクトリ サーバーがリスンするポート。例:

  • 389
  • 10389
  • 636 (例: SSL 用)

SSL を使用する

ディレクトリ サーバーへの接続が SSL (Secure Sockets Layer) 接続の場合は、オンにします。この設定を使用するには、SSL 証明書を設定する必要があります。

ユーザ名

ディレクトリ サーバーに接続する際にアプリケーションが使用するユーザーの識別名。例:

  • cn=administrator,cn=users,dc=ad,dc=example,dc=com
  • cn=user,dc=domain,dc=name
  • user@domain.name

デフォルトでは、すべてのユーザーが uSNChanged 属性を読み取ることができます。ただし、管理者または関連する権限を持つユーザーのみが削除済みオブジェクト コンテナにアクセスすることができます。ユーザーが LDAP に接続するのに必要な特定の権限は、「バインド」および「読み取り」(ユーザー情報、グループ情報、グループ メンバーシップ、更新シーケンス番号、削除済みオブジェクト)です。これらは、Active Directory の組み込みの管理者グループのメンバーであるユーザーが取得することができます。

これらの権限を持たないユーザーが Active Directory にアクセスすると、インクリメンタル同期はサイレントに失敗することに注意してください。これは CWD-3093 として報告されています。

パスワード

上記で指定したユーザーのパスワード。

注: LDAP サーバーへの接続では、このアプリケーションがここで設定されたユーザー名とパスワードでサーバーにログインする必要があります。結果として、このパスワードは一方向にハッシュ化することができません。このアプリケーションのコンテキストで回復可能である必要があります。パスワードは現在、難読化されていないプレーン テキストでデータベースに保存されています。セキュリティを保証するには、他のプロセスがこのアプリケーションのデータベースまたは設定ファイルに対する OS レベルの読み取り権限を持っていないことを確認する必要があります。

LDAP スキーマ

設定

説明

ベース DN

ディレクトリ サーバーに対してクエリを実行する場合に使用するルート識別名(DN)。例:

  • o=example,c=com
  • cn=users,dc=ad,dc=example,dc=com
  • Microsoft Active Directory の場合、ベース DN を dc=domain1,dc=local の形式で指定します。domain1local を自身の設定で置き換える必要があります。Microsoft Server では ldp.exe というツールが提供されています。これは、サーバーの LDAP 構造を検出および設定するのに役立ちます。

追加のユーザー DN

この値は、ユーザーの検索および読み込み時に、ベース DN に加えて使用されます。値が提供されない場合、サブツリー検索はベース DN から開始されます。例:

  • ou=Users

追加のグループ DN

この値は、グループの検索および読み込み時に、ベース DN に加えて使用されます。値が提供されない場合、サブツリー検索はベース DN から開始されます。例:

  • ou=Groups

追加のユーザー DN または追加のグループ DN に値が指定されていない場合、サブツリー検索がベース DN から始まります。ディレクトリ構造が巨大な場合、ログインおよび実施されるログインに依存する操作について、パフォーマンスの問題が生じる可能性があります

LDAP 権限

設定

説明

読み取り専用

LDAP ユーザー、グループ、メンバーシップは、ディレクトリ サーバーから取得され、ディレクトリ サーバーを介してのみ変更することができます。アプリケーション管理画面から LDAP ユーザー、グループ、またはメンバーシップを変更することはできません。

ローカル グループでの読み取り専用

LDAP ユーザー、グループ、メンバーシップは、ディレクトリ サーバーから取得され、ディレクトリ サーバーを介してのみ変更することができます。アプリケーション管理画面から LDAP ユーザー、グループ、またはメンバーシップを変更することはできません。ただし、内部ディレクトリにグループを追加したり、そのグループに LDAP ユーザーを追加することができます。

高度な設定

The Manage User Status Locally option, described below, will not work within Bitbucket. Do not enable this option.

BSERV-5129 - Getting issue details... STATUS

設定

説明

Enable Nested Groups

入れ子グループのサポートを有効または無効にします。

いくつかのディレクトリサーバーは、グループを別のグループのメンバーとして定義することを許可します。このような構造のグループは入れ子グループと呼ばれます。入れ子グループは、1 つの親グループからそのサブグループへの権限の継承を許可し、権限をシンプルにします。

ユーザー ステータスをローカルで管理するtrue の場合、ディレクトリ サーバー内のステータスに関係なく、Crowd でユーザーをアクティブ化/非アクティブ化できます。
期限切れのユーザーを除外する

true の場合、ActiveDirectory で期限切れとしてマークされたユーザー アカウントが自動的に削除されます。キャッシュされたディレクトリの場合、ユーザーの削除は、アカウントの有効期限日後の最初の同期中に行われます。

: これは組み込み Crowd 2.0.0 以上で利用可能であり、2.0.0 m04 リリースでは利用できません。

ページングされた結果を使用

検索結果をシンプルにページングする LDAP 制御拡張機能の使用を有効または無効にします。ページングが有効になっている場合、検索によって一度にすべての検索結果が取得されるのではなく、データのセットが取得されます。必要なページサイズ、つまり、ページングされた結果が有効である場合、ページごとに返される検索結果の最大数を入力します。既定は 1000 です。

照会に従う

ディレクトリ サーバーがリクエストを別のサーバーにリダイレクトすることを許可するかどうかを選択します。このオプションは、ノード照会 (JNDI ルックアップ java.naming.referral) 設定を使用します。これは通常、適切な DNS を使用せずに設定した Active Directory サーバーで "javax.naming.PartialResultException: Unprocessed Continuation Reference(s)" エラーを発生させないようにするために必要です。

ネイティブ DN マッチング

ディレクトリ サーバーが返す DN の文字列表現が一貫している場合、ネイティブ DN マッチングを有効化できます。ネイティブ DN マッチングはパフォーマンスを大幅に改善させます。そのため、可能な場合は有効化することをお勧めします。

この設定により、アプリケーションが DN を比較して同じかどうかを判断する方法が決まります。

  • このチェックボックスがオンの場合、アプリケーションは直接、大文字小文字を区別しない文字列比較を実施します。Active Directory はDN の形式を保証するため、これは Active Directory のデフォルトかつ推奨の設定です。
  • このチェックボックスがオフの場合、アプリケーションは DN を解析し、解析されたバージョンを確認します。
Enable Incremental Synchronization

ディレクトリの同期時に、前回の同期が照会されてからの変更のみが必要な場合、インクリメンタル同期を有効化します。

(warning) このオプションを使用する場合、同期するように設定されたユーザーアカウントは以下への読み取り権限を持っている必要があることに注意してください。

  • 同期する必要があるディレクトリ内のすべてのユーザーおよびグループの uSNChanged 属性。
  • Active Directory の削除されたオブジェクト コンテナ内のオブジェクトと属性

これらの条件の少なくとも1つが満たされない場合、Active Directory に追加された(または削除された)ユーザーは、アプリケーション内でそれぞれ追加(または削除)されずに終わります。

この設定は、ディレクトリのタイプが「Microsoft Active Directory」に設定されている場合に利用できます。

Synchronization Interval (minutes)

同期とは、アプリケーションがユーザー データの内部ストアをディレクトリ サーバ上のデータで更新するプロセスです。アプリケーションは x 分ごとにディレクトリ サーバーにリクエストを送信します。x はここで指定する数値です。既定値は60分です。

読み込みタイムアウト(秒)

レスポンスを受信するまでに待機する時間(秒)。指定された時間内にレスポンスがない場合、読み込み試行は中止されます。値を0(ゼロ)にすると、無制限になります。デフォルト値は120秒です。

検索タイムアウト(秒)

検索操作からのレスポンスを受信するまでに待機する時間 (秒)。値を 0 (ゼロ) にすると、無制限になります。既定値は 60 秒です。

接続タイムアウト(秒)

この設定は2つの操作に影響します。デフォルト値は0です。

  • コネクション プールからコネクションを取得する際に待機する時間。値を0(ゼロ)にすると、無制限となり、いつまでも待機します。
  • 新しいサーバー接続を開くまで待つ時間 (秒単位)。値が 0 (ゼロ) の場合は、TCP ネットワーク タイムアウトが使用されることを示しますが、これには数分かかる場合があります。

ユーザー スキーマ設定

設定

説明

ユーザー オブジェクト クラス

これは LDAP ユーザー オブジェクトに使用されるクラス名です。例:

  • user

ユーザー オブジェクト フィルタ

ユーザー オブジェクトを検索するときに使用するフィルター。例:

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

その他の例は、ナレッジベースで確認できます。「LDAP 検索フィルターの作成方法」をご覧ください。

ユーザー名属性

ユーザー名を読み込むときに使用する属性フィールド。例:

  • cn
  • sAMAccountName

備考: Active Directory では、「sAMAccountName」が「ユーザー ログイン名(Windows 2000 以前)」フィールドです。ユーザー ログイン名フィールドは「cn」で参照されます。

ユーザー名 RDN 属性

ユーザー名をロードするときに使用する RDN (相対識別名)。各 LDAP エントリの DN は 2 つの部分 (記録が格納される RDN および LDAP ディレクトリ内の場所) で構成されます。RDN はディレクトリツリー構造と関係ない DN の一部です。例:

  • cn

ユーザの名属性

ユーザーの名を読み込むときに使用する属性フィールド。例:

  • givenName

ユーザーの姓属性

ユーザーの姓を読み込むときに使用する属性フィールド。例:

  • sn

ユーザーの表示名属性

ユーザーの氏名を読み込むときに使用する属性フィールド。例:

  • displayName

ユーザーのメール属性

ユーザーのメールアドレスを読み込むときに使用する属性フィールド。例:

  • mail

ユーザーのパスワード属性

ユーザーのパスワードを読み込むときに使用する属性フィールド。例:

  • unicodePwd
ユーザー ユニーク ID 属性

属性は、ユーザー オブジェクトに対する一意かつ不変の ID として使用されます。これは、オプションであり、ユーザー名の変更の追跡に使用されます。この属性が設定されていない場合 (または無効な値に設定されている場合)、ユーザー名は検出されません。ユーアーの削除後の新しいユーザーの追加として解釈されます。

これは通常、UUID 値を指している必要があります。標準準拠 LDAP サーバーはこれを「entryUUID」として実装します。これはRFC 4530に従います。一部のサーバーでは異なる名前で知られているため、この設定が存在します(Microsoft Active Directory ではobjectGUID)。

 

 

グループ スキーマ設定

設定

説明

グループ オブジェクト クラス

これは LDAP グループ オブジェクトに使用されるクラス名です。例:

  • groupOfUniqueNames
  • group

グループ オブジェクト フィルター

グループ オブジェクトを検索するときに使用するフィルター。例:

  • (&(objectClass=group)(cn=*))

グループ名属性

グループ名を読み込むときに使用する属性フィールド。例:

  • cn

グループ説明属性

グループ名を読み込むときに使用する属性フィールド。例:

  • description

メンバーシップ スキーマ設定

設定

説明

グループ メンバー 属性

グループのメンバーを読み込むときに使用する属性フィールド。例:

  • member

ユーザー メンバーシップ属性

ユーザーのグループを読み込むときに使用する属性フィールド。例:

  • memberOf

ユーザーのグループ メンバーシップを検索する際に、ユーザー メンバーシップ属性を使用する

ディレクトリ サーバーがユーザーのグループ メンバーシップをサポートしている場合に、このボックスを選択します (既定では、これが "memberOf" 属性です)。

  • このチェックボックスがオンの場合、アプリケーションは指定されたユーザーが所属するグループのリストの取得時に、ユーザーのグループ メンバーシップ属性を使用します。これによって、より効率的に取得することができます。
  • このチェックボックスが選択されていない場合、アプリケーションはグループのメンバー属性 (既定では member) を検索に使用します。
  • ネストされたグループを有効化チェックボックスがオンの場合、アプリケーションはユーザー メンバーシップ属性を使用オプションを無視し、グループのメンバー属性を検索に使用します。

グループのメンバーを検索する際に、ユーザー メンバーシップ属性を使用する

ディレクトリ サーバーがユーザーのグループ メンバーシップをサポートしている場合に、このボックスを選択します (既定では、これが "member" 属性です)。

  • このチェックボックスがオンの場合、アプリケーションは指定されたグループのメンバーの取得時に、ユーザーのグループ メンバーシップ属性を使用します。これによって、より効率的に検索することができます。
  • このチェックボックスが選択されていない場合、アプリケーションはグループのメンバー属性 (既定では member) を検索に使用します。


最終更新日 2021 年 7 月 26 日

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

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