About LDAP authentication for GitHub Enterprise Server
LDAP is a popular application protocol for access and maintenance of directory information services, and is one of the most common protocols for integration of third-party software with large company user directories. For more information, see "Lightweight Directory Access Protocol" on Wikipedia.
If you use an LDAP directory for centralized authentication, you can configure LDAP authentication for the people who use GitHub Enterprise Serverインスタンス.
If you want to allow authentication for some people who don't have an account on your external authentication provider, you can allow fallback authentication to local accounts on GitHub Enterprise Serverインスタンス. For more information, see "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 normalizes a value from your external authentication provider to determine the username for each new personal account on GitHub Enterprise Serverインスタンス. For more information, see "Username considerations for external authentication."
GitHub Enterprise ServerインスタンスとのLDAPの設定
LDAPを設定した後、ユーザは自分のLDAPクレデンシャルでインスタンスにサインインできるようになります。 ユーザが初めてサインインするときに、ディレクトリ内のLDAP属性を使ってプロフィール名、メールアドレス、SSHキーが設定されます。
Management Console経由でユーザのLDAPアクセスを設定した� �合、インスタンスにユーザが初めてサインインするまで、ユーザライセンスは使われません。 た� し、サイト管理設定を使ってマニュアルでアカウントを作成した� �合、ユーザライセンスはすぐに使われます。
警告:GitHub Enterprise ServerインスタンスでLDAPを設定する前に、利用するLDAPサービスがページ化された結果をサポートしていることを確認してく� さい。
-
From an administrative account on GitHub Enterprise Server, in the upper-right corner of any page, click .
-
If you're not already on the "Site admin" page, in the upper-left corner, click Site admin.
-
左のサイドバーでManagement Consoleをクリックしてく� さい。
-
左のサイドバーでAuthentication(認証)をクリックしてく� さい。
-
"Authentication(認証)"の下でLDAPを選択してく� さい。
-
Optionally, to allow people without an account on your external authentication system to sign in with built-in authentication, select Allow built-in authentication. For more information, see "Allowing built-in authentication for users outside your provider."
-
設定を追� してく� さい。
LDAPの属性
GitHub Enterprise ServerインスタンスのlDAPの設定を完了させるために、以下の属性を使ってく� さい。
属性名 | 種類 | 説明 |
---|---|---|
Host | 必� � | LDAP のホスト。例: ldap.example.com あるいは 10.0.0.30 。 ホスト名が内部ネットワークからしか利用できないなら、まずGitHub Enterprise ServerインスタンスのDNSを設定してホスト名を内部のネー� サーバを使って解決できるようにする必要があるかもしれません。 |
ポート | 必� � | ホストの 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 にすべきですが、OpenLDAPなどの他のLDAPソリューションではuid になることがあります。 デフォルト値はuid です。 |
Profile name | 任意 | ユーザの GitHub Enterprise Server プロフィールページに表示される名前。 LDAP Syncが有効化されていなければ、ユーザは自分のプロフィール名を変更できます。 |
メール | 任意 | ユーザの 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 Sync がオンになります。 |
Gitの操作のパスワード認証の無効化
LDAP 設定中の [Disable username and password authentication for Git operations(Git の操作でのユーザ名およびパスワード認証の無効化)] を選択し、Git アクセスでの個人アクセストークンあるいは SSH キーの使用を強制してく� さい。そうすれば、サーバーが LDAP 認証のリクエストで過� 荷になるのを防ぐのに役に立ちます。 特にポーリングによる大量のリクエストと組み合わさると、レスポンスの遅い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の証明書検証の有効化)を選択してく� さい。
このオプションが選択されると、以下のことを確実にするために証明書が検証されます:
- 証明書にAlternative Name (SAN) が少なくとも1つ含まれている� �合には、SANの1つがLDAPホスト名に一致し、 そうでない� �合はコモンネー� (CN) がLDAPホスト名に一致すること。
- 証明書の期限が切れていないこと。
- 証明書が信� �されている認証局 (CA) によって署名されていること。
LDAP Syncの有効化
注釈: LDAP Sync を使用する Team は、最大 1499 人のメンバーに制限されています。
LDAP Sync を使うと、GitHub Enterprise Server のユーザおよび Team のメンバーシップを、確立された LDAP グループに対して同期できます。 そうすることで、GitHub Enterprise Server 内で手作業で行う代わりに、LDAP サーバからユーザのロールベースのアクセス制御を確立できます。 詳細は「チー� を作成する」を参照してく� さい。
LDAP Sync を有効化するには、[Synchronize Emails]、[Synchronize SSH Keys]、または [Synchronize GPG Keys] を選択します。
LDAP Sync を有効化すると、同期のジョブが指定された間隔で動作し、各ユーザアカウントに対して以下の操作を行います:
- アイデンティティプロバイダ外のユーザに対してビルトイン認証を許可し、ユーザがビルトイン認証を使っているなら、次のユーザに進みます。
- ユーザに LDAP のマッピングが存在しないなら、ユーザをディレクトリ中の LDAP エントリにマップしようとします。 ユーザが LDAP のエントリにマップできなかった� �合、ユーザをサスペンドして次のユーザに進みます。
- LDAP マッピングが存在し、ディレクトリ中の対応する LDAP のエントリが� けている� �合、そのユーザをサスペンドして次のユーザに進みます。
- 対応する LDAP のエントリが無効としてマークされており、ユーザがま� サスペンドされていないなら、そのユーザをサスペンドして次のユーザに進みます。
- 対応する LDAP のエントリが無効としてマークされておらず、そのユーザがサスペンドされており、Admin center で [Reactivate suspended users(サスペンドされたユーザを再アクティベート] が有効化されているなら、ユーザのサスペンドを解除します。
- If one or more restricted user groups are configured on the instance and the corresponding LDAP entry is not in one of these groups, suspend the user.
- If one or more restricted user groups are configured on the instance, the corresponding LDAP entry is in one of these groups, and Reactivate suspended users is enabled in the Admin Center, unsuspend the user.
- 対応する 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
とされている� �合のみです。 Some variations of Active Directory, such as AD LDS and ADAM, don't support the userAccountControl
attribute.
同期ジョブは、LDAP グループにマップされなかった各 Team に対して以下の操作を行うためにも、指定された間隔で動作します。
- Team に対応する LDAP グループが削除された� �合、すべてのメンバーを Team から削除します。
- LDAP グループから LDAP のメンバーエントリが削除された� �合、対応するユーザを Team から削除します。 If the user is no longer a member of any team in the organization, remove the user from the organization. その結果、ユーザがリポジトリへのアクセスを失った� �合、それらのリポジトリでユーザが持っていたプライベートなフォークを削除します。
- LDAP グループに LDAP のメンバーエントリが追� された� �合、対応するユーザを Team に追� します。 その結果、ユーザがリポジトリへのアクセスを再度得ることになった� �合、過去 90 日以内にユーザがアクセスを失ったために削除されたリポジトリのプライベートフォークがリストアされます。
LDAP同期は、最適化設定の一部として、入れ子チー� の構� を転送しません。 親子Teamの関係を作りたい� �合は、入れ子チー� の構� を手動で再作成し、対応するLDAPグループに同期させなければなりません。 詳しい情� �については「Teamの作成」を参照してく� さい。
セキュリティの警告:
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 ユーザの完全なリストを表示し、新しいユーザをプロビジョニングできます。
-
http(s)://HOSTNAME/login
でGitHub Enterprise Serverインスタンスにサインインしてく� さい。 -
From an administrative account on GitHub Enterprise Server, in the upper-right corner of any page, click .
-
If you're not already on the "Site admin" page, in the upper-left corner, click Site admin.
-
左のサイドバーでLDAP users(LDAPユーザ)をクリックしてく� さい。
-
ユーザを検索するには、完全なユーザ名もしくはユーザ名の一部を入力し、Search(検索)をクリックしてく� さい。 検索結果に該当するユーザが表示されます。 該当するユーザがいなければ、Create(作成)をクリックして新しいユーザアカウントをプロビジョニングできます。
LDAPアカウントの更新
LDAP Sync が有効化されていない限り、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インスタンスにサインインしてく� さい。 -
From an administrative account on GitHub Enterprise Server, in the upper-right corner of any page, click .
-
If you're not already on the "Site admin" page, in the upper-left corner, click Site admin.
-
検索フィールドでユーザ名を入力し、Search(検索)をクリックしてく� さい。
-
検索結果で、ユーザ名をクリックしてく� さい。
-
ページの右上から Admin(管理)をクリックしてく� さい。
-
左のサイドバーで Admn(管理)をクリックしてく� さい。
-
"LDAP"の下でSync now(即時同期)をクリックして、LDAPサーバからのデータでアカウントを手動更新してく� さい。
API を使用して手動同期をトリガーすることもできます。
GitHub Enterprise Serverインスタンスへのアクセスの削除
LDAP Sync が有効化されているなら、ユーザの LDAP のクレデンシャルを削除すれば、次の同期が行われた後にそのユーザのアカウントはサスペンドされます。
LDAP Sync が有効化されていないなら、LDAP のクレデンシャルの削除後に GitHub Enterprise Server アカウントを手動でサスペンドしなければなりません。 詳しい情� �についてはユーザのサスペンドとサスペンドの解除を参照してく� さい。