GitHub Enterprise Server の LDAP 認証について
LDAP はディレクトリ情報サービスへのアクセスと管理のための広く使われているアプリケーション プロトコルで、大企業のユーザー ディレクトリとサードパーティのソフトウェアを統合するための最も一般的なプロトコルの 1 つです。 詳細については、Wikipedia の「Lightweight Directory Access Protocol」を参照してください。
一元化された認証に LDAP ディレクトリを使用する場合は、お使いの GitHub Enterprise Server インスタンスを使用するユーザーに対して LDAP 認証を構成できます。
注: SAML または LDAP のどちらか一方だけを使用でき、両方は使用できません。
外部認証プロバイダーのアカウントを持たない一部のユーザーに対して認証を許可する場合は、お使いの GitHub Enterprise Server インスタンス でローカル アカウントへのフォールバック認証を許可できます。 詳しくは、「使用しているプロバイダーの外部ユーザーのためのビルトイン認証の許可」を参照してください。
サポートされている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 インスタンス で、新しい個人アカウントごとにユーザー名を決定します。 詳細については、「外部認証のユーザー名に関する考慮事項」を参照してください。
お使いの GitHub Enterprise Server インスタンスでの LDAP の設定
LDAPを設定した後、ユーザは自分のLDAPクレデンシャルでインスタンスにサインインできるようになります。 ユーザが初めてサインインするときに、ディレクトリ内のLDAP属性を使ってプロフィール名、メールアドレス、SSHキーが設定されます。
[Management Console]経由でユーザのLDAPアクセスを設定した場合、インスタンスにユーザが初めてサインインするまで、ユーザライセンスは使われません。 ただし、サイト管理設定を使ってマニュアルでアカウントを作成した場合、ユーザライセンスはすぐに使われます。
警告: LDAP を お使いの GitHub Enterprise Server インスタンスで構成する前に、ページングされた結果が LDAP サービスでサポートされることを確認します。
- GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
- [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。 1. [ サイト管理者] サイドバーで [Management Console] をクリックします。 1. [設定] サイドバーで [認証] をクリックします。
- [認証] で、 [LDAP] を選択します。
- 必要に応じて、外部認証システムのアカウントを持たないユーザーがビルトイン認証でサインインできるようにするには、 [Allow built-in authentication](ビルトイン認証を許可する) を選択します。 詳しくは、「使用しているプロバイダーの外部ユーザーのためのビルトイン認証の許可」を参照してください。
- 設定を追加してください。
LDAPの属性
以下の属性を使用して お使いの GitHub Enterprise Server インスタンスの LDAP の構成を完了します。
属性名 | 必須 | 説明 |
---|---|---|
Host | LDAP ホスト。たとえば、ldap.example.com または 10.0.0.30 。 ホスト名が内部ネットワークからしか利用できな場合は、まず、ホスト名を内部のネームサーバーを使って解決できるように お使いの GitHub Enterprise Server インスタンスの 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 認証要求でサーバーが過負荷になることを防ぐために 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 同期を使用するチームのメンバー数の上限は 1499 人です。
確立した LDAP グループに対して GitHub Enterprise Server ユーザーと team メンバーシップを同期すると、LDAP サーバーのユーザーを対象としたロールベースのアクセス制御を確立できます。 詳しくは、「Team の作成」を参照してください。
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 が有効化されると、サイト管理者と Organization のオーナーは Team をマップするグループを LDAP のディレクトリで検索できます。
これは、以下を含む組織に関する機密情報を契約者やその他の権限を持たないユーザに開示してしまう可能性があります。
- "ドメイン検索ユーザー" に特定の LDAP グループの存在が見えてしまう。
- GitHub Enterprise Server のユーザアカウントを持つ LDAP グループのメンバーが、その LDAP グループと同期する Team を作ったときに開示されてしまう。
こういった情報が開示されることを望まないなら、企業あるいは組織は構成された "ドメイン検索ユーザー" の権限を管理コンソールで制限する必要があります。 そういった制限ができない場合は、GitHub Enterprise サポート に連絡してください。
サポートされるLDAPグループのオブジェクトクラス
GitHub Enterprise Server は、以下の LDAP グループオブジェクトクラスをサポートします。 グループは入れ子にできます。
group
groupOfNames
groupOfUniqueNames
posixGroup
LDAPユーザの表示と作成
インスタンスにアクセスできる LDAP ユーザの完全なリストを表示し、新しいユーザをプロビジョニングできます。
http(s)://HOSTNAME/login
で お使いの GitHub Enterprise Server インスタンス にサインインします。 1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。- [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
- 左側のサイドバーで、 [LDAP users](LDAP ユーザー) タブをクリックします。
- ユーザーを検索するには、ユーザー名の全体または一部を入力し、 Search をクリックします。 検索結果に該当するユーザが表示されます。 ユーザーが存在しない場合は、 Create をクリックして新しいユーザー アカウントをプロビジョニングします。
LDAPアカウントの更新
LDAP 同期が有効でない限り、LDAP アカウントの変更が自動的に GitHub Enterprise Server と同期されることはありません。
- 新しい LDAP 管理者グループを使うには、LDAP 内での変更を反映させるためにユーザを GitHub Enterprise Server 上で手動で昇格および降格させなければなりません。
- LDAP 管理グループに対して LDAP アカウントを追加または削除するには、GitHub Enterprise Server 上でアカウントを昇格または降格します。
- LDAP アカウントを削除するには、GitHub Enterprise Server アカウントを一時停止します。
手動でのLDAPアカウントの同期
http(s)://HOSTNAME/login
で お使いの GitHub Enterprise Server インスタンス にサインインします。 1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。- [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。 1. 検索フィールドにユーザーの名前を入力し、 [検索] をクリックします。
1. サイト管理者ページでユーザーについて詳しく確認し、正しいユーザーを特定したことを確認します。 1. ページの右上隅にある [管理] をクリックします。 - [LDAP] の Sync now をクリックして、LDAP サーバーのデータでアカウントを手動で更新します。
API を使用して手動同期をトリガーすることもできます。
お使いの GitHub Enterprise Server インスタンスへのアクセスの取り消し
LDAP 同期が有効な場合にユーザーの LDAP 資格情報を削除すると、次の同期の実行後にそのユーザーのアカウントが一時停止されます。
LDAP 同期が有効でない場合は、LDAP 資格情報を削除した後で、GitHub Enterprise Server アカウントを手動で一時停止する必要があります。 詳細については、「ユーザーのサスペンドとサスペンドの解除」を参照してください。