Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となります: 2023-12-20. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

LDAPの利用

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

GitHub Enterprise Server

の LDAP 認証について

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

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

注: SAML または LDAP のどちらか一方だけを使用でき、両方は使用できません。

外部認証プロバイダーのアカウントを持たない一部のユーザーに対して認証を許可する場合は、お使いの GitHub Enterprise Server インスタンス でローカル アカウントへのフォールバック認証を許可できます。 詳しくは、「Allowing built-in authentication for users outside your provider」を参照してください。

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

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

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

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

GitHub Enterprise Server は、外部認証プロバイダーからの値を正規化し、お使いの GitHub Enterprise Server インスタンス で、新しい個人アカウントごとにユーザー名を決定します。 詳細については、「Username considerations for external authentication」を参照してください。

お使いの GitHub Enterprise Server インスタンスでの LDAP の設定

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

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

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

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
  3. [ サイト管理者] サイドバーで [Management Console] をクリックします。
  4. [設定] サイドバーで [認証] をクリックします。
  5. [認証] で、 [LDAP] を選択します。
  6. 必要に応じて、外部認証システムのアカウントを持たないユーザーがビルトイン認証でサインインできるようにするには、 [Allow built-in authentication](ビルトイン認証を許可する) を選択します。 詳しくは、「Allowing built-in authentication for users outside your provider」を参照してください。
  7. 設定を追加してください。

LDAPの属性

以下の属性を使用して お使いの GitHub Enterprise Server インスタンスの LDAP の構成を完了します。

属性名必須説明
HostLDAP ホスト。たとえば、ldap.example.com または 10.0.0.30。 ホスト名が内部ネットワークからしか利用できな場合は、まず、ホスト名を内部のネームサーバーを使って解決できるように お使いの GitHub Enterprise Server インスタンスの DNS を構成する必要があるかもしれません。
Portホストの LDAP サービスが待ち受けるポート。 例:389及び636(LDAPS用)。
EncryptionLDAP サーバーとの通信をセキュアにするために使われる暗号化の方法。 例: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 認証要求でサーバーが過負荷になることを防ぐために Git アクセスでの personal access token または SSH キーの使用を強制するには、Git 操作に対してパスワード認証を無効にします。

特にポーリングによる大量のリクエストと組み合わさると、レスポンスの遅いLDAPサーバーは頻繁にパフォーマンス問題や障害の原因となるので、この設定をおすすめします。

Git 操作に対してパスワード認証を無効にするには、LDAP 設定で [Git 操作のユーザー名とパスワード認証の無効化] を選びます。

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

LDAPの証明書検証の有効化

LDAP 証明書の検証を有効にすると、TLS で使う LDAP サーバー証明書を検証できます。

LDAP 証明書の検証を有効にするには、LDAP 設定で [LDAP 証明書の検証の有効化] を選びます。

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

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

LDAP Syncの有効化

確立した LDAP グループに対して GitHub Enterprise Server ユーザーと team メンバーシップを同期すると、LDAP サーバーのユーザーを対象としたロールベースのアクセス制御を確立できます。 詳しくは、「Team の作成」を参照してください。

注: メンバーが 1499 人を超えるグループで LDAP 同期を使うと、チーム メンバーシップの同期に失敗することがあります。

特に Active Directory を使っている場合は、Active Directory の MaxValRange 制限により、チームまたは [Management Console] で構成されている LDAP グループのメンバーが 1500 人を超えると、ユーザーの参照とチームの同期に失敗する可能性があります。 回避策として、メンバーが 1500 人未満の Active Directory グループを使うか、Active Directory 管理者と協力してドメイン コントローラーの MaxValRange 値を増やすことができます。 詳しくは、Microsoft Learn の「Ntdsutil.exe を使って Active Directory で LDAP ポリシーを表示および設定する」を参照してください。

MaxValRange を変更することがご自分の Active Directory 環境にとって適切な方法かどうかを判断するのに支援が必要な場合は、Microsoft サポートにお問い合わせください。

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 Sync では、ユーザーがその組織の所有者である場合、組織からユーザーが削除されません。 別の組織の所有者が、代わりにユーザーを手動で削除する必要があります。

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

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

セキュリティの警告:

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

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

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

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

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

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

  • group
  • groupOfNames
  • groupOfUniqueNames
  • posixGroup

LDAPユーザの表示と作成

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

  1. http(s)://HOSTNAME/login で お使いの GitHub Enterprise Server インスタンス にサインインします。
  2. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
  3. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
  4. 左側のサイドバーで、 [LDAP users](LDAP ユーザー) タブをクリックします。
  5. ユーザーを検索するには、ユーザー名の全体または一部を入力し、 Search をクリックします。 検索結果に該当するユーザが表示されます。 ユーザーが存在しない場合は、 Create をクリックして新しいユーザー アカウントをプロビジョニングします。

LDAPアカウントの更新

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

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

  1. http(s)://HOSTNAME/login で お使いの GitHub Enterprise Server インスタンス にサインインします。
  2. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
  3. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
  4. [ユーザー、Organization、チーム、リポジトリ、gist、アプリケーションを検索する] のテキスト フィールドに、ユーザーの名前を入力します。
  5. テキスト フィールドの右側にある [検索] をクリックします。 [サイト管理者] の設定の [検索] ページのスクリーンショット。 ユーザーを検索するための [検索] というラベルのボタンが、オレンジ色の枠線で強調されています。
    • 正確に一致するアカウント名が見つからない場合は、[検索結果 – アカウント] の [あいまい一致] セクションで、管理するユーザーの名前をクリックします。 [サイト管理者] の設定の検索結果のスクリーンショット。 [あいまい一致] セクションのユーザー名の例が、オレンジ色の枠線で強調されています。
  6. サイト管理者ページでユーザーについて詳しく確認し、正しいユーザーを特定したことを確認します。 [サイト管理者アカウントの概要] ページのスクリーンショット。
  7. ページの右上隅にある [管理] をクリックします。ユーザーまたはリポジトリの [サイト管理者] ページのヘッダーのスクリーンショット。 [管理] タブがオレンジ色の枠線で強調表示されています。
  8. [LDAP] の Sync now をクリックして、LDAP サーバーのデータでアカウントを手動で更新します。

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

お使いの GitHub Enterprise Server インスタンスへのアクセスの取り消し

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

LDAP 同期が有効でない場合は、LDAP 資格情報を削除した後で、GitHub Enterprise Server アカウントを手動で一時停止する必要があります。 詳しくは、「ユーザーのサスペンドとサスペンドの解除」をご覧ください。

LDAP のログ記録について

LDAP のログ イベントは、お使いの GitHub Enterprise Server インスタンス の log files に表示されます。 LDAP 操作に関連するイベントは、auth.log のログ、ldap-sync.log および ldap.log にあります。 詳しくは、「システム ログについて」を参照してください。