h-otterの備忘録

インフラを中心にコンピュータ関連をいいかんじにやっていきます

GitLabにLDAPでログインする

GitLabにはLDAP、つまりADの認証を利用してログインすることができます。認証機関を統一できると管理が楽なのでおすすめです。

環境

ADサーバー:

ADにユーザーを作成

セキュリティのために権限を最小限に抑えたアカウントを作りましょう。

  1. 適当に名前を付けます。 f:id:h-otter:20150812192257p:plain

  2. アカウントオプションにはGitLabとの連携が切れないように、"ユーザーはパスワードを変更できない"・"パスワードを無制限にする"にチェックをつけるとよいでしょう。 f:id:h-otter:20150812192259p:plain

  3. LDAPの検索ができればよいのでグループには"Domain Guests"に参加するだけで十分です。 f:id:h-otter:20150812192301p:plain

GitLabでLDAPの設定

LDAPの基本的な知識が必要になりますが、比較的簡単なので頑張りましょう。DNはGet-ADUserを使えば簡単に取得することができます。baseはログインできるアカウントが最小限になるようにOUを作成するとよいでしょう。

約38行目から
/etc/gitlab/gitlab.rb

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
  main: # 'main' is the GitLab 'provider ID' of this LDAP server
    label: 'domain.local'
    host: 'ad.domain.local'
    port: 389
    uid: 'sAMAccountName'
    method: 'plain' # "tls" or "ssl" or "plain"
    bind_dn: 'CN=gitlab,CN=Users,DC=domain,DC=local'
    password: '[password]'
    active_directory: true
    base: 'DC=domain,DC=local'
#     allow_username_or_email_login: true
#     block_auto_created_users: false
#     user_filter: ''
#     ## EE only
#     group_base: ''
#     admin_group: ''
#     sync_ssh_keys: false
EOS

最後に設定を反映させれば終わりです。

$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl restart

無償版の機能の制限

GitLabには無償版(Community Edition: CE)と有償版(Enterprise Edition: EE)によって機能の差があり、LDAPにも無償版には制限がかかっています。具体的には以下の項目になります。

  • セカンダリサーバーの指定
  • グループの取得

EEの意味が分かれば"gitlab.rb"に丁寧な説明が書いてあるのでわかってもらえるかと思います。英語が堪能ではない自分にはセカンダリサーバーの指定ができない理由が全く分からず、ずいぶん長い間悩むことになりました…