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 ディレクトリ サーバー
On this page
関連ページ
ユーザーに 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 で処理されます。
Bitbucket Server を接続する
Bitbucket Server を LDAP ディレクトリに接続する方法
- "管理" 権限を持つユーザーとしてログインします。
- Bitbucket Server の管理領域で、[アカウント] 配下の [ユーザー ディレクトリ] をクリックします。
- [ディレクトリの追加] をクリックし、ディレクトリ タイプとして [Microsoft Active Directory] または [LDAP] を選択します。
- 以下の表で説明されているようにディレクトリ設定を構成します。
- ディレクトリ設定を保存します。
- "ユーザー ディレクトリ" 画面で各ディレクトリの横にある青色の矢印をクリックして、ディレクトリの順序を定義します。ディレクトリ順は次のように影響します。
- ディレクトリの順序は、ユーザーおよびグループの検索順序です。
- ユーザーおよびグループへの変更は、アプリケーションが変更権限を持つ最初のディレクトリに対してのみ行われます。
サーバー設定
設定 | 説明 |
---|---|
名前 | LDAP ディレクトリ サーバーを識別するのに役立つわかりやすい名前を入力します。例:
|
ディレクトリ タイプ | 接続する LDAP ディレクトリのタイプを選択します。新しい LDAP 接続を追加する場合、ここで選択した値によって、画面の残りのオプションの多くのデフォルト値が決定します。例:
|
ホスト名 | ディレクトリ サーバのホスト名。例:
|
ポート | ディレクトリ サーバーがリスンするポート。例:
|
SSL を使用する | ディレクトリ サーバーへの接続が SSL (Secure Sockets Layer) 接続の場合は、オンにします。この設定を使用するには、SSL 証明書を設定する必要があります。 |
ユーザ名 | ディレクトリ サーバーに接続する際にアプリケーションが使用するユーザーの識別名。例:
デフォルトでは、すべてのユーザーが uSNChanged 属性を読み取ることができます。ただし、管理者または関連する権限を持つユーザーのみが削除済みオブジェクト コンテナにアクセスすることができます。ユーザーが LDAP に接続するのに必要な特定の権限は、「バインド」および「読み取り」(ユーザー情報、グループ情報、グループ メンバーシップ、更新シーケンス番号、削除済みオブジェクト)です。これらは、Active Directory の組み込みの管理者グループのメンバーであるユーザーが取得することができます。 これらの権限を持たないユーザーが Active Directory にアクセスすると、インクリメンタル同期はサイレントに失敗することに注意してください。これは CWD-3093 として報告されています。 |
パスワード | 上記で指定したユーザーのパスワード。 注: LDAP サーバーへの接続では、このアプリケーションがここで設定されたユーザー名とパスワードでサーバーにログインする必要があります。結果として、このパスワードは一方向にハッシュ化することができません。このアプリケーションのコンテキストで回復可能である必要があります。パスワードは現在、難読化されていないプレーン テキストでデータベースに保存されています。セキュリティを保証するには、他のプロセスがこのアプリケーションのデータベースまたは設定ファイルに対する OS レベルの読み取り権限を持っていないことを確認する必要があります。 |
LDAP スキーマ
設定 | 説明 |
---|---|
ベース DN | ディレクトリ サーバーに対してクエリを実行する場合に使用するルート識別名(DN)。例:
|
追加のユーザー DN | この値は、ユーザーの検索および読み込み時に、ベース DN に加えて使用されます。値が提供されない場合、サブツリー検索はベース DN から開始されます。例:
|
追加のグループ DN | この値は、グループの検索および読み込み時に、ベース DN に加えて使用されます。値が提供されない場合、サブツリー検索はベース DN から開始されます。例:
|
追加のユーザー DN または追加のグループ DN に値が指定されていない場合、サブツリー検索がベース DN から始まります。ディレクトリ構造が巨大な場合、ログインおよび実施されるログインに依存する操作について、パフォーマンスの問題が生じる可能性があります。
LDAP 権限
設定 | 説明 |
---|---|
読み取り専用 | LDAP ユーザー、グループ、メンバーシップは、ディレクトリ サーバーから取得され、ディレクトリ サーバーを介してのみ変更することができます。アプリケーション管理画面から LDAP ユーザー、グループ、またはメンバーシップを変更することはできません。 |
ローカル グループでの読み取り専用 | LDAP ユーザー、グループ、メンバーシップは、ディレクトリ サーバーから取得され、ディレクトリ サーバーを介してのみ変更することができます。アプリケーション管理画面から LDAP ユーザー、グループ、またはメンバーシップを変更することはできません。ただし、内部ディレクトリにグループを追加したり、そのグループに LDAP ユーザーを追加することができます。 |
高度な設定
以降に記載されている [Manage User Status Locally] オプションは Bitbucket Server 内で動作しません。このオプションを有効にしないでください。
設定 | 説明 |
---|---|
Enable Nested Groups | 入れ子グループのサポートを有効または無効にします。 いくつかのディレクトリサーバーは、グループを別のグループのメンバーとして定義することを許可します。このような構造のグループは入れ子グループと呼ばれます。入れ子グループは、1 つの親グループからそのサブグループへの権限の継承を許可し、権限をシンプルにします。
|
ユーザー ステータスをローカルで管理する | true の場合、ディレクトリ サーバー内のステータスに関係なく、Crowd でユーザーをアクティブ化/非アクティブ化できます。 |
期限切れのユーザーを除外する | true の場合、ActiveDirectory で期限切れとしてマークされたユーザー アカウントが自動的に削除されます。キャッシュされたディレクトリの場合、ユーザーの削除は、アカウントの有効期限日後の最初の同期中に行われます。 注: これは組み込み Crowd 2.0.0 以上で利用可能であり、2.0.0 m04 リリースでは利用できません。 |
ページングされた結果を使用 | 検索結果をシンプルにページングする LDAP 制御拡張機能の使用を有効または無効にします。ページングが有効になっている場合、検索によって一度にすべての検索結果が取得されるのではなく、データのセットが取得されます。必要なページサイズ、つまり、ページングされた結果が有効である場合、ページごとに返される検索結果の最大数を入力します。既定は 1000 です。 |
照会に従う | ディレクトリ サーバーがリクエストを別のサーバーにリダイレクトすることを許可するかどうかを選択します。このオプションは、ノード照会 (JNDI ルックアップ |
ネイティブ DN マッチング | ディレクトリ サーバーが返す DN の文字列表現が一貫している場合、ネイティブ DN マッチングを有効化できます。ネイティブ DN マッチングはパフォーマンスを大幅に改善させます。そのため、可能な場合は有効化することをお勧めします。
|
Enable Incremental Synchronization | ディレクトリの同期時に、前回の同期が照会されてからの変更のみが必要な場合、インクリメンタル同期を有効化します。
これらの条件の少なくとも1つが満たされない場合、Active Directory に追加された(または削除された)ユーザーは、アプリケーション内でそれぞれ追加(または削除)されずに終わります。 この設定は、ディレクトリのタイプが「Microsoft Active Directory」に設定されている場合に利用できます。 |
グループ メンバーシップをログイン時に更新する | この設定によって、グループ メンバーシップを認証中に更新できるようになります。次のようなオプションを設定できます。
|
Synchronization Interval (minutes) | 同期とは、アプリケーションがユーザー データの内部ストアをディレクトリ サーバ上のデータで更新するプロセスです。アプリケーションは x 分ごとにディレクトリ サーバーにリクエストを送信します。x はここで指定する数値です。既定値は60分です。 |
読み込みタイムアウト(秒) | レスポンスを受信するまでに待機する時間(秒)。指定された時間内にレスポンスがない場合、読み込み試行は中止されます。値を0(ゼロ)にすると、無制限になります。デフォルト値は120秒です。 |
検索タイムアウト(秒) | 検索操作からのレスポンスを受信するまでに待機する時間 (秒)。値を 0 (ゼロ) にすると、無制限になります。既定値は 60 秒です。 |
接続タイムアウト(秒) | この設定は2つの操作に影響します。デフォルト値は10です。
|
ユーザー スキーマ設定
設定 | 説明 |
---|---|
ユーザー オブジェクト クラス | これは LDAP ユーザー オブジェクトに使用されるクラス名です。例:
|
ユーザー オブジェクト フィルタ | ユーザー オブジェクトを検索するときに使用するフィルター。例:
その他の例は、ナレッジベースで確認できます。「LDAP 検索フィルターの作成方法」をご覧ください。 |
ユーザー名属性 | ユーザー名を読み込むときに使用する属性フィールド。例:
備考: Active Directory では、「sAMAccountName」が「ユーザー ログイン名(Windows 2000 以前)」フィールドです。ユーザー ログイン名フィールドは「cn」で参照されます。 |
ユーザー名 RDN 属性 | ユーザー名をロードするときに使用する RDN (相対識別名)。各 LDAP エントリの DN は 2 つの部分 (記録が格納される RDN および LDAP ディレクトリ内の場所) で構成されます。RDN はディレクトリツリー構造と関係ない DN の一部です。例:
|
ユーザの名属性 | ユーザーの名を読み込むときに使用する属性フィールド。例:
|
ユーザーの姓属性 | ユーザーの姓を読み込むときに使用する属性フィールド。例:
|
ユーザーの表示名属性 | ユーザーの氏名を読み込むときに使用する属性フィールド。例:
|
ユーザーのメール属性 | ユーザーのメールアドレスを読み込むときに使用する属性フィールド。例:
|
ユーザーのパスワード属性 | ユーザーのパスワードを読み込むときに使用する属性フィールド。例:
|
ユーザー ユニーク ID 属性 | 属性は、ユーザー オブジェクトに対する一意かつ不変の ID として使用されます。これは、オプションであり、ユーザー名の変更の追跡に使用されます。この属性が設定されていない場合 (または無効な値に設定されている場合)、ユーザー名は検出されません。ユーアーの削除後の新しいユーザーの追加として解釈されます。 これは通常、UUID 値を指している必要があります。標準準拠 LDAP サーバーはこれを「entryUUID」として実装します。これはRFC 4530に従います。一部のサーバーでは異なる名前で知られているため、この設定が存在します(Microsoft Active Directory ではobjectGUID)。 |
グループ スキーマ設定
設定 | 説明 |
---|---|
グループ オブジェクト クラス | これは LDAP グループ オブジェクトに使用されるクラス名です。例:
|
グループ オブジェクト フィルター | グループ オブジェクトを検索するときに使用するフィルター。例:
|
グループ名属性 | グループ名を読み込むときに使用する属性フィールド。例:
|
グループ説明属性 | グループ名を読み込むときに使用する属性フィールド。例:
|
メンバーシップ スキーマ設定
設定 | 説明 |
---|---|
グループ メンバー 属性 | グループのメンバーを読み込むときに使用する属性フィールド。例:
|
ユーザー メンバーシップ属性 | ユーザーのグループを読み込むときに使用する属性フィールド。例:
|
ユーザーのグループ メンバーシップを検索する際に、ユーザー メンバーシップ属性を使用する | ディレクトリ サーバーがユーザーのグループ メンバーシップをサポートしている場合に、このボックスを選択します (既定では、これが "
|
グループのメンバーを検索する際に、ユーザー メンバーシップ属性を使用する | ディレクトリ サーバーがユーザーのグループ メンバーシップをサポートしている場合に、このボックスを選択します (既定では、これが "
|