Skip to main content

LDAPの利用

ライトウェイト ディレクトリ アクセス プロトコル (LDAP) を使ってアプリケーション間のアクセスを一元化する場合は、インスタンスの LDAP 認証を構成することで、GitHub Enterprise Server を統合できます。

GitHub Enterprise Server の LDAP 認証について

LDAP はディレクトリ情報サービスへのアクセスと管理のための広く使われているアプリケーション プロトコルで、大企業のユーザー ディレクトリとサードパーティのソフトウェアを統合するための最も一般的なプロトコルの 1 つです。 詳細については、Wikipedia の「Lightweight Directory Access Protocol」を参照してください。

一元化された認証に LDAP ディレクトリを使用する場合は、your GitHub Enterprise Server instance を使用するユーザーに対して LDAP 認証を構成できます。

外部認証プロバイダーのアカウントを持たない一部のユーザーに対して認証を許可する場合は、your GitHub Enterprise Server instance でローカル アカウントへのフォールバック認証を許可できます。 詳しくは、「プロバイダー外のユーザーのためのビルトイン認証の許可」を参照してください。

サポートされているLDAPサービス

GitHub Enterprise Server は、以下の LDAP サービスと統合できます:

  • Active Directory
  • FreeIPA
  • Oracle Directory Server Enterprise Edition
  • OpenLDAP
  • Open Directory
  • 389-ds

LDAPでのユーザ名についての考慮

GitHub Enterprise Server は、外部認証プロバイダー からの値を正規化し、your GitHub Enterprise Server instance で、新しい個人アカウントごとにユーザー名を判断します。 詳細については、「外部認証のユーザー名に関する考慮事項」を参照してください。

your GitHub Enterprise Server instanceでの LDAP の設定

LDAPを設定した後、ユーザは自分のLDAPクレデンシャルでインスタンスにサインインできるようになります。 ユーザが初めてサインインするときに、ディレクトリ内のLDAP属性を使ってプロフィール名、メールアドレス、SSHキーが設定されます。

[Management Console]経由でユーザのLDAPアクセスを設定した場合、インスタンスにユーザが初めてサインインするまで、ユーザライセンスは使われません。 ただし、サイト管理設定を使ってマニュアルでアカウントを作成した場合、ユーザライセンスはすぐに使われます。

警告: LDAP を your GitHub Enterprise Server instanceで構成する前に、ページングされた結果が LDAP サービスでサポートされることを確認します。

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅の をクリックします。

    サイト管理者設定にアクセスするための宇宙船アイコンのスクリーンショット

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。

    [サイト管理者] リンクのスクリーンショット 1. 左側のサイドバーで、 [Management Console] をクリックします。 左側のサイドバーの [[Management Console]] タブ 1. 左サイドバーにある [Authentication](認証) をクリックします。 設定サイドバーの [Authentication](認証) タブ

  3. [認証] で、 [LDAP] を選択します。 LDAP の選択

  4. 必要に応じて、外部認証システムのアカウントを持たないユーザーがビルトイン認証でサインインできるようにするには、 [Allow built-in authentication](ビルトイン認証を許可する) を選択します。 詳しくは、「プロバイダー外のユーザーのためのビルトイン認証の許可」を参照してください。 LDAP のビルトイン認証の選択チェックボックス

  5. 設定を追加してください。

LDAPの属性

以下の属性を使用して your GitHub Enterprise Server instanceの LDAP の構成を完了します。

属性名説明
Host必須LDAP ホスト。たとえば、ldap.example.com または 10.0.0.30。 ホスト名が内部ネットワークからしか利用できな場合は、まず、ホスト名を内部のネームサーバを使って解決できるように your GitHub Enterprise Server instanceの DNS を構成する必要があるかもしれません。
Port必須ホストの LDAP サービスが待ち受けるポート。 例:389及び636(LDAPS用)。
Encryption必須LDAP サーバーとの通信をセキュアにするために使われる暗号化の方法。 例:plain(暗号化なし)、SSL/LDAPS(最初からの暗号化)、StartTLS(接続後に暗号化通信にアップグレード)。
Domain search userオプション認証を許可するために、サインインする他のユーザを検索する LDAP ユーザ。 これは通常、サードパーティとのインテグレーションのために特に作成されるサービスアカウントです。 cn=Administrator,cn=Users,dc=Example,dc=com のような完全修飾名を使用します。 Active Directory では、ドメイン検索ユーザーに対して [DOMAIN]\[USERNAME] 構文 (WINDOWS\Administrator など) も使用できます。
Domain search passwordオプションドメイン検索ユーザのためのパスワード。
Administrators groupオプションこのグループ内のユーザは、アプライアンスへサインインしたときにサイト管理者に昇格します。 LDAPの管理者グループを設定しなければ、アプライアンスに最初にサインインしたLDAPユーザが自動的にサイト管理者に昇格します。
Domain base必須ユーザーとグループを検索しようとする LDAP サブツリーの完全修飾された Distinguished Name (DN)。 いくつでも追加できるが、それぞれのグループはユーザが属するのと同じドメインベースで定義されなければなりません。 制限されたユーザグループを指定したなら、それらのグループに属するユーザだけがスコープに入ります。 ドメインベースにはLDAPディレクトリツリーの最上位を指定し、制限されたユーザグループでアクセス制御することをおすすめします。
Restricted user groupsオプション指定された場合、このグループ内のユーザだけがログインできます。 指定が必要なのはグループのcommon name(CN)だけで、グループはいくつでも追加できます。 グループが指定されていなければ、指定されたドメイン ベースのスコープ内の "すべての" ユーザーが GitHub Enterprise Server インスタンスにサインインできるようになります。
User ID必須認証を受けようとした LDAP ユーザを特定する LDAP 属性。 マッピングが確立されたら、ユーザは自分の GitHub Enterprise Server ユーザ名を変更できます。 このフィールドは、ほとんどの Active Directory インストールで sAMAccountName にする必要がありますが、他の LDAP ソリューション (OpenLDAP など) では uid にすることもできます。 既定値は uid です。
Profile name省略可能ユーザの GitHub Enterprise Server プロフィールページに表示される名前。 LDAP Syncが有効化されていなければ、ユーザは自分のプロフィール名を変更できます。
Emailsオプションユーザの GitHub Enterprise Server アカウントのメールアドレス。
SSH keysオプションユーザの GitHub Enterprise Server アカウントにアタッチされた公開 SSH キー。 キーはOpenSSH形式でなければなりません。
GPG keysオプションユーザの GitHub Enterprise Server アカウントにアタッチされたGPGキー。
Disable LDAP authentication for Git operationsオプション選択した場合、ユーザーが LDAP パスワードを使用して Git 操作を認証する機能が無効になります。
Enable LDAP certificate verificationオプション選択した場合、LDAP 証明書の検証が有効になります。
Synchronizationオプション選択した場合、LDAP 同期が有効になります。

Gitの操作のパスワード認証の無効化

LDAP 設定の [Disable username and password authentication for Git operations](Git の操作でのユーザ名およびパスワード認証の無効化) を選択し、Git アクセスでの個人アクセス トークンあるいは SSH キーの使用を強制してください。そうすれば、サーバーが LDAP 認証要求で過負荷になるのを防ぐのに役に立ちます。 特にポーリングによる大量のリクエストと組み合わさると、レスポンスの遅いLDAPサーバーは頻繁にパフォーマンス問題や障害の原因となるので、この設定をおすすめします。

GItチェックボックスのためのLDAPパスワード認証の無効化

このオプションを選択したときに、ユーザーがコマンド ラインを使用して Git 操作でパスワードを使用しようとすると、次のようなエラー メッセージが表示されます。Password authentication is not allowed for Git operations. You must use a personal access token.

LDAPの証明書検証の有効化

TLS と共に使う LDAP サーバーの証明書を検証するには、LDAP の設定で [Enable LDAP certificate verification](LDAP の証明書検証の有効化) を選択します。

LDAP証明書の検証ボックス

このオプションが選択されると、以下のことを確実にするために証明書が検証されます:

  • 証明書にAlternative Name (SAN) が少なくとも1つ含まれている場合には、SANの1つがLDAPホスト名に一致し、 そうでない場合はコモンネーム (CN) がLDAPホスト名に一致すること。
  • 証明書の有効期限が切れていない。
  • 証明書が信頼されている認証局 (CA) によって署名されていること。

LDAP Syncの有効化

注: LDAP 同期を使用するチームのメンバー数の上限は 1499 人です。

LDAP Sync を使うと、GitHub Enterprise Server のユーザおよび Team のメンバーシップを、確立された LDAP グループに対して同期できます。 そうすることで、GitHub Enterprise Server 内で手作業で行う代わりに、LDAP サーバからユーザのロールベースのアクセス制御を確立できます。 詳細については、「チームの作成」を参照してください。

LDAP 同期を有効にするには、LDAP 設定で、 [Synchronize Emails](メール アドレスの同期)[Synchronize SSH Keys](SSH キーの同期) 、または [Synchronize GPG Keys](GPG キーの同期) を選択します。

同期チェックボックス

LDAP Sync を有効化すると、同期のジョブが指定された間隔で動作し、各ユーザアカウントに対して以下の操作を行います:

  • アイデンティティプロバイダ外のユーザに対してビルトイン認証を許可し、ユーザがビルトイン認証を使っているなら、次のユーザに進みます。
  • ユーザに LDAP のマッピングが存在しないなら、ユーザをディレクトリ中の LDAP エントリにマップしようとします。 ユーザが LDAP のエントリにマップできなかった場合、ユーザをサスペンドして次のユーザに進みます。
  • LDAP マッピングが存在し、ディレクトリ中の対応する LDAP のエントリが欠けている場合、そのユーザをサスペンドして次のユーザに進みます。
  • 対応する LDAP のエントリが無効としてマークされており、ユーザがまだサスペンドされていないなら、そのユーザをサスペンドして次のユーザに進みます。
  • 対応する LDAP のエントリが無効としてマークされておらず、そのユーザーが一時停止されており、Admin Center で [Reactivate suspended users](一時停止されたユーザを再アクティベート) が有効化されているなら、ユーザーの一時停止を解除します。
  • インスタンスに 1 つ以上の制限付きユーザー グループが構成されていて、対応する LDAP エントリがこれらのグループのいずれにも含まれていない場合は、ユーザーを一時停止します。
  • インスタンスに 1 つ以上の制限付きユーザー グループが構成されていて、対応する LDAP エントリがこれらのグループのいずれかに含まれ、Admin Ceter で [Reactivate suspended users](一時停止されたユーザを再アクティベート) が有効化されているなら、ユーザーの一時停止を解除します。
  • 対応する LDAP エントリが name 属性を含んでいる場合、ユーザーのプロファイル名を更新します。
  • 対応する LDAP エントリが Administrators グループ内にあるなら、そのユーザをサイト管理者に昇格させます。
  • 対応する LDAP エントリが Administrators グループ内にないなら、そのユーザを通常のアカウントに降格させます。
  • LDAP の User フィールドがメール用に定義されているなら、ユーザのメール設定を LDAP のエントリと同期します。 最初の LDAP mail エントリをプライマリ メール アドレスとして設定します。
  • LDAP の User フィールドが公開 SSH キー用に定義されているなら、ユーザの公開 SSH キーを LDAP のエントリと同期します。
  • LDAP の User フィールドが GPG キー用に定義されているなら、ユーザの GPG キーを LDAP のエントリと同期します。

: LDAP エントリを無効としてマークできるのは、Active Directory を使用しており、userAccountControl 属性が存在し、ACCOUNTDISABLE のフラグが設定されている場合のみです。 Active Directory の一部のバリエーション (AD LDS や ADAM など) では userAccountControl 属性はサポートされません。

同期ジョブは、LDAP グループにマップされなかった各 Team に対して以下の操作を行うためにも、指定された間隔で動作します。

  • Team に対応する LDAP グループが削除された場合、すべてのメンバーを Team から削除します。

  • LDAP グループから LDAP のメンバーエントリが削除された場合、対応するユーザを Team から削除します。 ユーザーが組織内のどのチームのメンバーでもなくなった場合は、そのユーザーを組織から削除します。 その結果、ユーザがリポジトリへのアクセスを失った場合、それらのリポジトリでユーザが持っていたプライベートなフォークを削除します。

  • LDAP グループに LDAP のメンバーエントリが追加された場合、対応するユーザを Team に追加します。 その結果、ユーザがリポジトリへのアクセスを再度得ることになった場合、過去 90 日以内にユーザがアクセスを失ったために削除されたリポジトリのプライベートフォークがリストアされます。

    LDAP 同期は、最適化構成の一部として、入れ子チームの構造を転送しません。 親子Teamの関係を作りたい場合は、入れ子チームの構造を手動で再作成し、対応するLDAPグループに同期させなければなりません。 詳細については、「チームの作成」を参照してください

セキュリティの警告:

LDAP Sync が有効化されると、サイト管理者と Organization のオーナーは Team をマップするグループを LDAP のディレクトリで検索できます。

これは、以下を含む組織に関する機密情報を契約者やその他の権限を持たないユーザに開示してしまう可能性があります。

  • "ドメイン検索ユーザー" に特定の LDAP グループの存在が見えてしまう。
  • GitHub Enterprise Server のユーザアカウントを持つ LDAP グループのメンバーが、その LDAP グループと同期する Team を作ったときに開示されてしまう。

こういった情報が開示されることを望まないなら、企業あるいは組織は構成された "ドメイン検索ユーザー" の権限を管理コンソールで制限する必要があります。 そういった制限ができない場合は、GitHub Enterprise Support に連絡してください。

サポートされるLDAPグループのオブジェクトクラス

GitHub Enterprise Server は、以下の LDAP グループオブジェクトクラスをサポートします。 グループは入れ子にできます。

  • group
  • groupOfNames
  • groupOfUniqueNames
  • posixGroup

LDAPユーザの表示と作成

インスタンスにアクセスできる LDAP ユーザの完全なリストを表示し、新しいユーザをプロビジョニングできます。

  1. http(s)://HOSTNAME/login で your GitHub Enterprise Server instance にサインインします。 1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅の をクリックします。

    サイト管理者設定にアクセスするための宇宙船アイコンのスクリーンショット

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。

    [サイト管理者] リンクのスクリーンショット

  3. 左側のサイドバーで、 [LDAP users](LDAP ユーザー) タブをクリックします。 [LDAP users](LDAP ユーザー) タブ

  4. ユーザーを検索するには、ユーザー名の全体または一部を入力し、 [Search](検索) をクリックします。 検索結果に該当するユーザが表示されます。 ユーザーが存在しない場合は、 [Create](作成) をクリックして新しいユーザー アカウントをプロビジョニングします。 LDAP 検索

LDAPアカウントの更新

LDAP 同期が有効でない限り、LDAP アカウントの変更が自動的に GitHub Enterprise Server と同期されることはありません。

手動でのLDAPアカウントの同期

  1. http(s)://HOSTNAME/login で your GitHub Enterprise Server instance にサインインします。 1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅の をクリックします。

    サイト管理者設定にアクセスするための宇宙船アイコンのスクリーンショット

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。

    [サイト管理者] リンクのスクリーンショット 1. 検索フィールドにユーザーの名前を入力し、 [検索] をクリックします。 サイト管理者設定の検索フィールド 1. 検索結果で、ユーザ名をクリックしてください。 サイト管理者設定の検索オプション 1. ページの右上隅にある [管理者] をクリックします。管理ツール 1. 左側のサイドバーで、 [管理者] をクリックします。管理ツール

  3. [LDAP] の [Sync now](今すぐ同期) をクリックして、LDAP サーバーのデータでアカウントを手動で更新します。 LDAP の [Sync now](今すぐ同期) ボタン

API を使用して手動同期をトリガーすることもできます。

your GitHub Enterprise Server instance へのアクセスの取り消し

LDAP 同期が有効な場合にユーザーの LDAP 資格情報を削除すると、次の同期の実行後にそのユーザーのアカウントが一時停止されます。

LDAP 同期が有効 でない 場合は、LDAP 資格情報を削除した後で、GitHub Enterprise Server アカウントを手動で一時停止する必要があります。 詳細については、ユーザーの一時停止と一時停止解除に関するページを参照してください。