GitHub Enterprise Server の LDAP 認証について
LDAP はディレクトリ情� �サービスへのアクセスと管理のための広く使われているアプリケーション プロトコルで、大企業のユーザー ディレクトリとサードパーティのソフトウェアを統合するための最も一般的なプロトコルの 1 つです。 詳細については、Wikipedia の「Lightweight Directory Access Protocol」を参照してく� さい。
一元化された認証に LDAP ディレクトリを使用する� �合は、your GitHub Enterprise Server instanceを使用するユーザーに対して LDAP 認証を構成できます。
外部認証プロバイダーのアカウントを持たない一部のユーザーに対して認証を許可する� �合は、 でローカル アカウントへのフォールバック認証を許可できます。 詳しくは、「プロバイダー外のユーザーのためのビルトイン認証の許可」を参照してく� さい。
サポートされている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での LDAP の設定
LDAPを設定した後、ユーザは自分のLDAPクレデンシャルでインスタンスにサインインできるようになります。 ユーザが初めてサインインするときに、ディレクトリ内のLDAP属性を使ってプロフィール名、メールアドレス、SSHキーが設定されます。
[Management Console]経由でユーザのLDAPアクセスを設定した� �合、インスタンスにユーザが初めてサインインするまで、ユーザライセンスは使われません。 た� し、サイト管理設定を使ってマニュアルでアカウントを作成した� �合、ユーザライセンスはすぐに使われます。
警告: LDAP を your GitHub Enterprise Server instanceで構成する前に、ページングされた結果が LDAP サービスでサポートされることを確認します。
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅の をクリックします。
-
[サイト管理者] ページにま� 表示されていない� �合は、左上隅の [サイト管理者] をクリックします。
1. 左側のサイドバーで、 [Management Console] をクリックします。 1. 左サイドバーにある [Authentication](認証) をクリックします。
-
[認証] で、 [LDAP] を選択します。
-
必要に応じて、外部認証システ� のアカウントを持たないユーザーがビルトイン認証でサインインできるようにするには、 [Allow built-in authentication](ビルトイン認証を許可する) を選択します。 詳しくは、「プロバイダー外のユーザーのためのビルトイン認証の許可」を参照してく� さい。
-
設定を追� してく� さい。
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 設定の [Git の操作でのユーザー名およびパスワード認証の無効化] を選び、Git アクセスでのpersonal access tokenあるいは 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 同期を使用するチー� のメンバー数の上限は 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 Sync では、ユーザーがその組織の所有者である� �合、組織からユーザーが削除されません。 別の組織の所有者が、代わりにユーザーを手動で削除する必要があります。
-
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 ユーザの完全なリストを表示し、新しいユーザをプロビジョニングできます。
-
http(s)://HOSTNAME/login
で にサインインします。 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
で にサインインします。 1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅の をクリックします。 -
[サイト管理者] ページにま� 表示されていない� �合は、左上隅の [サイト管理者] をクリックします。
1. 検索フィールドにユーザーの名前を入力し、 [検索] をクリックします。 1. 検索結果で、ユーザ名をクリックしてく� さい。 1. ページの右上隅にある [管理者] をクリックします。 1. 左側のサイドバーで、 [管理者] をクリックします。
-
[LDAP] の [Sync now](今すぐ同期) をクリックして、LDAP サーバーのデータでアカウントを手動で更新します。
API を使用して手動同期をトリガーすることもできます。
your GitHub Enterprise Server instanceへのアクセスの取り消し
LDAP 同期が有効な� �合にユーザーの LDAP 資� �情� �を削除すると、次の同期の実行後にそのユーザーのアカウントが一時停止されます。
LDAP 同期が有効 でない � �合は、LDAP 資� �情� �を削除した後で、GitHub Enterprise Server アカウントを手動で一時停止する必要があります。 詳細については、ユーザーの一時停止と一時停止解除に関するページを参照してく� さい。