LDAPの利用
LDAP を使えば、既存のアカウントに対して GitHub Enterprise Server を認証させることができ、リポジトリへのアクセスを集中管理できます。 LDAPはディレクトリ情報サービスへのアクセスと管理のための広く使われているアプリケーションプロトコルで、大企業のユーザディレクトリとサードパーティのソフトウェアを統合するために使われている最も一般的なプロトコルの1つです。
使用しているアイデンティティプロバイダに追加せずにユーザを認証したい場合、ビルトイン認証を設定できます。詳細は「アイデンティティプロバイダ外のユーザに対するビルトイン認証を許可する」を参照してください。
このガイドの内容は以下のとおりです。
- サポートされているLDAPサービス
- LDAPでのユーザ名についての考慮
- 2 要素認証
- GitHub Enterprise Server インスタンスとのLDAPの設定
- LDAPの属性
- LDAPユーザの表示と作成
- 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 はアカウントのユーザ名内の非英数字文字をダッシュに正規化します。たとえば gregory.st.john
のユーザ名は gregory-st-john
に正規化されます。正規化されたユーザ名の先頭や末尾はダッシュにする事ができません。また、2 つ連続でダッシュを含むこともできません。
メールアドレスから生成されたユーザ名は、@
文字の前の正規化された文字から生成されます。
複数のアカウントが正規化されて同一の GitHub Enterprise Server ユーザ名になる場合、1 つめのユーザアカウントだけが作成されます。同じユーザ名のそれ以降のユーザは、サインインできなくなります。
以下の表は、ユーザ名が 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 lets you synchronize GitHub Enterprise Server users and team membership against your established LDAP groups. This lets you establish role-based access control for users from your LDAP server instead of manually within
GitHub Enterprise Server . For more information, see "Creating teams."
To enable LDAP Sync, in your LDAP settings, select Synchronize Emails, Synchronize SSH Keys, or 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 Sync は入れ子チームの構造を転送しません。子および親チームの関係を作るには、手作業で入れ子チームの構造を再作成し、対応する 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(管理)] をクリックしてください。
-
左サイドバーで [Admin(管理)] をクリックしてください。
-
"LDAP"の下でSync now(即時同期)をクリックして、LDAPサーバからのデータでアカウントを手動更新してください。
また、API を使って手動同期を開始することもできます。
GitHub Enterprise Server インスタンスへのアクセスの削除
LDAP Sync が有効化されているなら、ユーザの LDAP のクレデンシャルを削除すれば、次の同期が行われた後にそのユーザのアカウントはサスペンドされます。
LDAP Sync が有効化されていないなら、LDAP のクレデンシャルの削除後に GitHub Enterprise Server アカウントを手動でサスペンドしなければなりません。 詳細は「ユーザのサスペンドとサスペンドの解除」を参照してください。