Bitbucket Server を既存の LDAP ディレクトリに接続する

お困りですか?

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

コミュニティに質問

Bitbucket Server を既存の LDAP ユーザー ディレクトリに接続することができます。これによって、エンタープライズ ディレクトリ内の既存のユーザーやグループを Bitbucket Server で使用できます。LDAP ディレクトリは、ユーザー認証とアカウント管理の両方に使用できます。

Bitbucket Server は次の LDAP ディレクトリ サービスに接続できます。

  • 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 ディレクトリ サーバー

このページの内容

ユーザーに Bitbucket Server へのログインを許可するには、Atlassian Bitbucket Server を外部ディレクトリにつなぐだけでは不十分です。グローバル権限画面で Bitbucket Server へのアクセスを明示的に付与する必要があります。

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

ライセンスの考慮事項

Bitbucket Server を外部ディレクトリに接続する際には、Bitbucket Server ライセンスで許可されているよりも多くのユーザーに Bitbucket Server へのアクセスを許可しないようにご注意ください。ライセンスの上限を超えると、開発者はコミットをリポジトリにプッシュできなくなり、Bitbucket Server には警告メッセージが表示されます。この FAQ を参照してください。

Bitbucket Server を LDAP ディレクトリに初めて接続したときの同期

Bitbucket Server を既存の LDAP ディレクトリに初めて接続すると、Bitbucket Server の内部ディレクトリが LDAP ディレクトリと同期されます。ユーザー情報 (グループやグループのメンバーシップを含む) は、Bitbucket Server 全体にコピーされます。

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

Bitbucket Server が LDAP ディレクトリに接続されている場合、Bitbucket Server でユーザーの詳細を更新することはできません。更新は、Apache Directory Studio などの LDAP ブラウザ ツールを使用して、LDAP ディレクトリ上で直接実行する必要があります。

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

LDAP フィルターを使用して、Bitbucket Server の内部ディレクトリに同期されるユーザーやグループを制限できます。Bitbucket Server にアクセスできるユーザーやグループを制限したい場合や、同期のパフォーマンスを懸念している場合に推奨されます。 

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

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

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

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

ユーザーが Bitbucket Server へのログインを試み、同期が完了すると、Bitbucket Server はそのユーザーがその内部ディレクトリ内に存在することを確認し、ユーザーのパスワードを確認のために LDAP ディレクトリに渡します。パスワードがユーザー用に保存されているパスワードと一致した場合、LDAP は Bitbucket に確認を返し、Bitbucket Server はユーザーをログインさせます。ユーザーのセッション中、すべての認証 (例: リポジトリ、プル リクエスト、管理画面などの Bitbucket Server リソースへのアクセス) は、内部ディレクトリ内で Bitbucket Server によって管理される権限に基づいて、Bitbucket Server で処理されます。

LDAP_external

Bitbucket Server を接続する

Bitbucket Server を LDAP ディレクトリに接続する方法

  1. Log in as a user with 'Admin' permission.
  2. Bitbucket Server の管理領域で、[アカウント] 配下の [ユーザー ディレクトリ] をクリックします。
  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 ユーザーを追加することができます。

高度な設定

以降に記載されている [Manage User Status Locally] オプションは Bitbucket Server 内で動作しません。このオプションを有効にしないでください。

BSERV-5129 - Getting issue details... STATUS

設定

説明

入れ子グループを有効にする

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

いくつかのディレクトリサーバーは、グループを別のグループのメンバーとして定義することを許可します。このような構造のグループは入れ子グループと呼ばれます。入れ子グループは、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 を解析し、解析されたバージョンを確認します。
インクリメンタル同期を有効にする

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

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

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

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

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

同期間隔(分)

同期とは、アプリケーションがユーザー データの内部ストアを更新し、ディレクトリ サーバ上のデータと一致させるプロセスです。アプリケーションは 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) を検索に使用します。


最終更新日: 2019 年 2 月 11 日

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

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