Расширенная настройка GitLab подразумевает конфигурирование множества дополнительных компонентов, среди которых я планирую рассмотреть настройку почтовых уведомлений, интеграцию с LDAP, а также настройку Rack attack.
Если вам интересна тематика Debian и связанных с ним приложений, рекомендую обратиться к тегу Debian на моем блоге.
Содержание
Расширенная настройка GitLab
Ранее я рассматривал установку GitLab с нуля (см. Установка GitLab), теперь же я планирую пролить свет на некоторые дополнительные настройки, о чем ниже.
Настройка почтовых уведомлений
Настройка рассылок по электронной почте крайне желательна, ведь иначе пользователи не смогут получать даже письма для восстановления/сброса пароля.
По умолчанию GitLab использует Postfix в качестве MTA и лично меня это полностью устраивает. Тем не менее, при стандартной установке GitLab 1 из репозиториев Postfix у меня нормально не поставился и выкидывал кучу ошибок при попытке что-либо настроить. В таких ситуациях лучшим вариантом будет переконфигурировать пакет:
1 |
dpkg-reconfigure postfix |
В процессе работы команды вам будут заданы множество вопросов о конфигурации MTA. На все можете отвечать утвердительно, ответа при этом не меняя (итоговая конфигурация все равно будет задана вручную).
После завершения операции мой конфиг выглядел следующим образом (не рекомендую его слепо копировать, в зависимости от версий Postfix и окружения ваши настройки могут сильно отличаться):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no readme_directory = no smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = gitlab alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = localhost.localdomain, localhost, $mydomain relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/23 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only inet_protocols = all |
По умолчанию почта с GitLab на ваши корпоративные серверы доставляться скорее всего не будет, либо начнет попадать в спам. Чтобы избежать этого, добавьте адрес хоста GitLab в белые списки.
С базовой настройкой почты разобрались.
Расширенная настройка почты
Этот вариант настройки интеграции с почтовыми сервисами я рассматривать не планирую, но и не оставить на него ссылку я не могу 3.
Интеграция с LDAP
В GitLab доступна интеграция 4 с LDAP. Имея инфраструктуру Active Directory, вполне логично воспользоваться данным функционалом.
Открываем конфиг:
1 |
nano /etc/gitlab/gitlab.rb |
Вставляем кусок кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
gitlab_rails['ldap_servers'] = YAML.load <<-EOS main: host: '172.16.2.1' port: 389 uid: 'sAMAccountName' method: 'plain' bind_dn: 'username' password: 'Password' timeout: 10 active_directory: true allow_username_or_email_login: true block_auto_created_users: false base: 'DC=corp,DC=bissquit,DC=com' EOS |
Сохраняем изменения и выходим.
Небольшие пояснения по некоторым параметрам секции:
- host: – адрес хоста, то есть контроллера домена. Можно ввести только один адрес, отказоустойчивая конфигурация доступна в платных версиях GitLab;
- port: – стандартный порт LDAP;
- uid: – идентификатор пользователя, по умолчанию sAMAccountName. Это говорит о том, что пользователям нужно будет вводить свой логин AD без конструкций domain\ или @domain.tld. Если вам нужна аутентификация с учетками вида user@domain.tld, то используйте атрибут userPrincipalName;
- bind_dn: – учетная запись, через которую GitLab будет получать данные из AD. Наделять эту учетку лишними правами не нужно;
- password: – пароль от учетки, все просто;
- base: – контейнер для поиска учетных записей. Задайте его в явном виде, если хотите ограничить круг поиска, например определив путь до контейнера с учетными записями отдела разработки ПО. Обратите внимание, что AD чувствителен к регистру букв, путь должен быть в точности как в свойствах контейнера в атрибуте msDS-parentdistname.
Про остальные параметры вы сможете прочитать из официальной документации 7 8, в том числе и других редакций GitLab.
Пересобираем GitLab:
1 |
gitlab-ctl reconfigure |
Если все пройдет успешно, в конце получите сообщение:
1 2 3 4 |
Running handlers: Running handlers complete Chef Client finished, 2/301 resources updated in 05 seconds gitlab Reconfigured! |
При вводе неправильных данных будете получать ошибки на подобии этой:
Остается проверить 9 работает ли интеграция:
1 |
gitlab-rake gitlab:ldap:check |
В идеале вы должны увидеть перечисление всех учетных записей в указанном контейнере AD и в конце:
1 |
Checking LDAP ... Finished |
Если видите что-то другое, разбирайтесь с конфигом.
Rack attack
Этот механизм 10 представляет из себя своеобразную защиту от DDOS-атак (от “надоедливых” клиентов, как это написано в руководстве). Скорее всего большинство админов и не собираются выставлять GitLab наружу, оставив ему судьбу исключительно внутреннего ресурса. Тем не менее, как минимум нужно указать надежные сети, клиентам из которых разрешено мучать GitLab сколько вздумается.
Для этого открываем конфиг:
1 |
nano /etc/gitlab/gitlab.rb |
Редактируем секцию:
1 2 3 4 5 6 7 |
gitlab_rails['rack_attack_git_basic_auth'] = { 'enabled' => true, 'ip_whitelist' => ["127.0.0.1","192.168.0.0/16"], 'maxretry' => 10, 'findtime' => 60, 'bantime' => 3600 } |
Жирным шрифтом выделена подсеть с результирующей маской, добавленная вручную.
Не забываем пересобрать:
1 |
gitlab-ctl reconfigure |
На этом настройка завершена.
Notes:
- Install a GitLab CE Omnibus package on ↩
- Postfix on a null client ↩
- Reply by email ↩
- Setting up LDAP sign-in ↩
- Active Directory Setup – 502 Gitlab is not responding ↩
- LDAP Settings: Could not authenticate user ↩
- GitLab Community Edition documentation – LDAP ↩
- GitLab Enterprise Edition documentation – LDAP ↩
- LDAP Rake Tasks ↩
- Configuring Rack Attack ↩