GitLabにLDAPでログインする
GitLabにはLDAP、つまりADの認証を利用してログインすることができます。認証機関を統一できると管理が楽なのでおすすめです。
環境
ADサーバー:
- ホスト名 ad.domain.local
- ドメイン名 domain.local
ADにユーザーを作成
セキュリティのために権限を最小限に抑えたアカウントを作りましょう。
適当に名前を付けます。
アカウントオプションにはGitLabとの連携が切れないように、"ユーザーはパスワードを変更できない"・"パスワードを無制限にする"にチェックをつけるとよいでしょう。
LDAPの検索ができればよいのでグループには"Domain Guests"に参加するだけで十分です。
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"に丁寧な説明が書いてあるのでわかってもらえるかと思います。英語が堪能ではない自分にはセカンダリサーバーの指定ができない理由が全く分からず、ずいぶん長い間悩むことになりました…