記事のバージョン: Enterprise Server 2.17
LDAPの利用
LDAP を使えば、既存のアカウントに対して GitHub Enterprise Server を認証させることができ、リポジトリへのアクセスを集中管理できます。 LDAPはディレクトリ情報サービスへのアクセスと管理のための広く使われているアプリケーションプロトコルで、大企業のユーザディレクトリとサードパーティのソフトウェアを統合するために使われている最も一般的なプロトコルの1つです。
ユーザをアイデンティティプロバイダに追加せずに認証したいなら、ビルトイン認証を設定できます。 詳細は「使用中のアイデンティティプロバイダ外のユーザのためにビルトイン認証を許可する」を参照してください。
サポートされている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は、アカウントのユーザ名に含まれている非英数字をダッシュに変換します。 たとえばgregory.st.john
というユーザ名は、gregory-st-john
に変換されます。 変換されたユーザ名の先頭及び末尾はダッシュであってはならないことに注意してください。 2つの連続するダッシュを含めることもできません。
メールアドレスから作成されたユーザ名は、@
以前の文字を変換して作成されます。
複数のアカウントが変換後に同じGitHub Enterprise Serverのユーザ名になる場合、最初のユーザアカウントだけが作成されます。 同じユーザ名のそれ以降のユーザは、サインインできません。
以下の表は、ユーザ名がGitHub Enterprise Serverでどのように変換されるかの例を示しています。
ユーザ名 | 変換されたユーザ名 | 結果 |
---|---|---|
Ms.Bubbles | ms-bubbles | このユーザ名の作成は成功します。 |
!Ms.Bubbles | -ms-bubbles | このユーザ名はダッシュで始まるので作成されません。 |
Ms.Bubbles! | ms-bubbles- | このユーザ名はダッシュで終わるので作成されません。 |
Ms!!Bubbles | ms--bubbles | このユーザ名には連続する2つのダッシュが含まれるので作成されません。 |
Ms!Bubbles | ms-bubbles | このユーザ名は作成されません。 変換されたユーザ名は正当ですが、すでに存在しています。 |
Ms.Bubbles@example.com | ms-bubbles | このユーザ名は作成されません。 変換されたユーザ名は正当ですが、すでに存在しています。 |
2 要素認証
LDAPもしくはビルトイン認証を使っている場合、2要素認証がサポートされます。 Organizationの管理者は、メンバーに対して2要素認証の有効化を必須とすることができます。
GitHub Enterprise Server インスタンスとのLDAPの設定
LDAPを設定した後、ユーザは自分のLDAPクレデンシャルでインスタンスにサインインできるようになります。 ユーザが初めてサインインするときに、ディレクトリ内のLDAP属性を使ってプロフィール名、メールアドレス、SSHキーが設定されます。
Management Console経由でユーザのLDAPアクセスを設定した場合、インスタンスにユーザが初めてサインインするまで、ユーザライセンスは使われません。 ただし、サイト管理設定を使ってマニュアルでアカウントを作成した場合、ユーザライセンスはすぐに使われます。
警告:GitHub Enterprise Server インスタンスでLDAPを設定する前に、利用するLDAPサービスがページ化された結果をサポートしていることを確認してください。
- 任意のページの右上で をクリックします。
- 左のサイドバーでManagement Consoleをクリックしてください。
- 左のサイドバーでAuthentication(認証)をクリックしてください。
- "Authentication(認証)"の下でLDAPを選択してください。
- あるいは、ユーザがGitHub Enterprise Server インスタンスのアイデンティティプロバイダに属していないなら、Allow built-in authentication(ビルトイン認証の許可)を選択して、ビルトイン認証を使うように招待することもできます。
- 設定を追加してください。
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が有効化されていなければ、ユーザは自分のプロフィール名を変更できます。 |
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 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 を使うと、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(サスペンドされたユーザを再アクティベート] が有効化されているなら、ユーザのサスペンドを解除します。
- 対応する 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
とされている場合のみです。
同期ジョブは、LDAP グループにマップされなかった各 Team に対して以下の操作を行うためにも、指定された間隔で動作します。
- Team に対応する LDAP グループが削除された場合、すべてのメンバーを Team から削除します。
- LDAP グループから LDAP のメンバーエントリが削除された場合、対応するユーザを Team から削除します。 その結果、ユーザがリポジトリへのアクセスを失った場合、それらのリポジトリでユーザが持っていたプライベートなフォークを削除します。
- LDAP グループに LDAP のメンバーエントリが追加された場合、対応するユーザを Team に追加します。 その結果がユーザがリポジトリへのアクセスを再度得ることになった場合、過去 90 日以内にユーザがアクセスを失ったために削除されたリポジトリのプライベートフォークがリストアされます。
LDAP同期は、最適化設定の一部として、入れ子チームの構造を転送しません。 親子Teamの関係を作りたい場合は、入れ子チームの構造を手動で再作成し、対応するLDAPグループに同期させなければなりません。 詳しい情報については「Teamの作成」を参照してください。
セキュリティの警告:
LDAP Sync が有効化されると、サイト管理者と Organization のオーナーは Team をマップするグループを LDAP のディレクトリで検索できます。
これは、以下を含む組織に関する機密情報を契約者やその他の権限を持たないユーザに開示してしまう可能性があります。
- ドメイン検索ユーザに特定の LDAP グループの存在が見えてしまう。
- GitHub Enterprise Server のユーザアカウントを持つ LDAP グループのメンバーが、その LDAP グループと同期する Team を作ったときに開示されてしまう。
こういった情報が開示されることを望まないなら、企業あるいは組織は管理コンソールで設定されたドメイン検索ユーザの権限を制限しなければなりません。 そういった制限ができない場合は、GitHub Enterprise Support または GitHub Premium Support に連絡してください。
サポートされるLDAPグループのオブジェクトクラス
GitHub Enterprise Server は、以下の LDAP グループオブジェクトクラスをサポートします。 グループは入れ子にできます。
group
groupOfNames
groupOfUniqueNames
posixGroup
LDAPユーザの表示と作成
インスタンスにアクセスできる LDAP ユーザの完全なリストを表示し、新しいユーザをプロビジョニングできます。
http(s)://HOSTNAME/login
でGitHub Enterprise Server インスタンスにサインインしてください。- 任意のページの右上で をクリックします。
- 左のサイドバーで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 インスタンスにサインインしてください。- 任意のページの右上で をクリックします。
- 検索フィールドでユーザ名を入力し、Search(検索)をクリックしてください。
- 検索結果で、ユーザ名をクリックしてください。
- ページの右上にあるAdmin(管理) をクリックしてください。
- 左のサイドバーで Admn(管理)をクリックしてください。
- "LDAP"の下でSync now(即時同期)をクリックして、LDAPサーバからのデータでアカウントを手動更新してください。
また、API を使って手動同期を開始することもできます。
GitHub Enterprise Server インスタンスへのアクセスの削除
LDAP Sync が有効化されているなら、ユーザの LDAP のクレデンシャルを削除すれば、次の同期が行われた後にそのユーザのアカウントはサスペンドされます。
LDAP Sync が有効化されていないなら、LDAP のクレデンシャルの削除後に GitHub Enterprise Server アカウントを手動でサスペンドしなければなりません。 詳細は「ユーザのサスペンドとサスペンドの解除」を参照してください。