2022年4月27日水曜日

Gitlab で LDAP サーバと連携して LDAP にいるユーザでログインする方法

Gitlab で LDAP サーバと連携して LDAP にいるユーザでログインする方法

概要

Gitlab + LDAP で LDAP に存在するユーザでログインする方法を試してみました

環境

  • Ubuntu 18.04
  • docker 20.10.7
  • osixia/openldap 1.5.0
  • Gitlab-ee 14.7.7

LDAP サーバの構築

今回は docker で構築しました
過去に紹介しているのでそちらを参考に構築してください

gitlab.rb の編集

LDAP 連携の部分だけ記載しています

gitlab_rails['ldap_servers'] = {
  'main' => {
    'label' => 'LDAP',
    'host' =>  '192.168.100.10',
    'port' => 389,
    'uid' => 'uid',
    'encryption' => 'plain',
    'verify_certificates' => false,
    'bind_dn' => 'cn=admin,dc=my-company,dc=com',
    'password' => 'xxx',
    'tls_options' => {
      'ca_file' => '',
      'ssl_version' => '',
      'ciphers' => '',
      'cert' => '',
      'key' => ''
    },
    'timeout' => 10,
    'active_directory' => false,
    'allow_username_or_email_login' => false,
    'block_auto_created_users' => false,
    'base' => 'dc=my-company,dc=com',
    'user_filter' => '',
    'attributes' => {
      'username' => ['uid', 'userid', 'sAMAccountName'],
      'email' => ['mail', 'email', 'userPrincipalName'],
      'name' => 'uid',
    },
    'lowercase_usernames' => false,
  }
}

変更できたら gitlab-ctl reconfigure などで設定を反映しましょう

  • docker-compose up -d

各項目の説明

  • label・・・Gitlabのログイン画面で表示するラベルを設定します
  • host・・・LDAPサーバのIPまたはホスト名を記載します
  • port・・・LDAPサーバの接続ポートを記載します
  • uid・・・sAMAccountName or uid or userPrincipalName のどれかを記載します、LDAP側に存在する属性を記載します
  • encryption・・・start_tls or simple_tls or plain のどれかを記載します、今回は tls は使わないので plain を設定します
  • verify_certificates・・・今回は tls は使わないので false を設定します
  • bind_dn・・・探索する dn を記載します、ldapsearch で使用する -D オプションの値を記載します
  • password・・・admin ユーザのパスワードを記載します
  • tls_options・・・tlsを使う場合に使用します、今回は使用しないのですべて空にしています
  • timeout・・・LDAPにクエリを投げた際のタイムアウトを秒単位で指定します
  • active_directory・・・AD経由のLDAPの場合は true を設定します、今回は OpenLDAP なので false を設定します
  • allow_username_or_email_login・・・ユーザ名またはメールアドレスでのログインを許可します、true にした場合はメールアドレスのアットマーク以降は自動的に省略されます
  • block_auto_created_users・・・ユーザ作成時にブロックユーザとして自動で作成します、面倒なので基本は false にします
  • base・・・探索する base を記載します、ldapsearch で使用する -b オプションの値を記載します
  • user_filter・・・検索する際のフィルタを指定できます、'(employeeType=developer)' こんな感じの指定ができます
  • attributes・・・ログインに成功した際に Gitlab 側に登録するユーザ属性とLDAPのユーザ属性のマッピングを指定します
  • lowercase_usernames・・・自動的にユーザ名を小文字に変換します

その他の項目については参考サイトにある公式のドキュメントを確認してください

動作確認

Gitlab にアクセスして LDAP の項目が増えていることを確認します
あとは LDAP に存在するユーザでログインできるか確認しましょう

注意点

LADP 経由でログインはしていますが一度 Gitlab 側にユーザが作成されると LDAP 側のユーザを削除しても Gitlab 側には残り続けてしまいます (ログインはできなくなります)

もし LDAP とユーザ情報を同期したい場合はこちらを参考に設定してください

billy ユーザについて

パスワードは不明なので自分で ldif ファイルを変更してパスワードを設定してください

参考サイト

0 件のコメント:

コメントを投稿