Решение сервера Git с использованием файловых разрешений

Вопрос или проблема

В моей компании есть множество репозиториев git в папке, доступ к которой контролируется через наш домен Active Directory. До сих пор папка использовалась через smb с использованием аутентификации kerberos, и все наши клиенты настроены на использование файловых URL-адресов.

Это, безусловно, очень плохо. Я пытаюсь настроить нас на полноценный git-сервер либо по http, либо по ssh, но наш сетевой администратор очень ясно дал понять, что любое решение, которое мы будем использовать, должно поддерживать разрешения на основе групп Active Directory (с предпочтением к поддержке разрешений на уровне файлов), и что компания не готова платить за решение. К сожалению, эти требования немного связывают мне руки и не дают возможности использовать мой ранее испытанный и проверенный пакет git для nginx.

Я провел небольшое исследование, но мне действительно трудно собрать все кусочки вместе. Кто-нибудь знает о (или может указать мне правильное направление) решении, которое выполнит:

  • Обслуживание git через стандартный протокол (предпочтительно http/https/ssh), а не через файловый протокол
  • Аутентификация всех пользователей через Active Directory
  • Бесплатное (предпочтительно с открытым исходным кодом)
  • Работает на Windows (наш сетевой администратор некомфортен с unix).
  • В идеале будет принимать билеты kerberos для обеспечения единого входа.
  • В идеале будет аутентифицировать пользователей на основе разрешений папки репозитория, а не на основе отдельной конфигурации разрешений на базе групп (сетевой администратор не хочет больше работы по поддержке этого).

[Правка: добавлено забытое требование относительно ОС]

[Правка спустя более года]

Я оставляю этот вопрос здесь, потому что он получил несколько голосов, так что, похоже, есть и другие люди с похожими потребностями. Любые и все ответы, которые частично соответствуют этому списку, могут быть полезны для будущих читателей. Мои собственные проблемы были решены, когда к нам пришел новый системный администратор, который не боится linux, что дало мне возможность использовать гораздо больше вариантов.

[/Правка]

Я рекомендую RhodeCode Enterprise (https://rhodecode.com), который соответствует всем требованиям, кроме требования о разрешениях на папки. RhodeCode Enterprise 3 бесплатен для до 10 пользователей и учебных заведений, и также поддерживает Mercurial и SVN.

Отказ от ответственности: я сооснователь RhodeCode.

Во-первых, вашему системному администратору нужно понять, что центральный репозиторий — это как база данных, поэтому владение файлами не имеет значения и не должно его иметь. Active Directory следует использовать только для аутентификации для доступа к данным, на самом деле лучше, чтобы данные управлялись демоном, который имеет единственный доступ к безголовому репозиторию в этом центральном месте. Так это делается всеми такими системами, как gitlab, github, stash и т.д. На самом деле, вы можете установить stash или gitlab (что дает длинный список преимуществ, кроме безопасности) и разрешить пользователям аутентифицироваться через AD, либо через LDAP-шлюз, либо напрямую. Atlassian Stash и Gitlab являются фремиум-опциями (как я полагаю), также есть GitHub Enterprise и другие, плюс несколько вариантов FOSS (хотя я не знаю об их опциях интеграции с AD)

Ответ или решение

Вопрос о настройке сервера Git с учетом управляемых прав доступа в вашей организации, где используется Active Directory, имеет множество аспектов. Ниже приведен детализированный ответ на этот вопрос, который может помочь вам найти оптимальное решение с учетом всех требований.

1. Постановка задачи

Ваша организация уже использует репозитории Git, размещенные на сервере с контролем доступа через Active Directory и SMB-соединение, но этот метод имеет свои недостатки. Вам требуется:

  • Обеспечить доступ к репозиториям по стандартным протоколам (HTTP/HTTPS или SSH).
  • Аутентифицировать пользователей с помощью Active Directory.
  • Найти бесплатное или открытое решение.
  • Обеспечить работу на Windows.
  • Предпочтительно использовать Kerberos для единого входа.
  • Сохранить управление доступом на уровне файловой системы, чтобы минимизировать дополнительные усилия адмминистраторов.

2. Решение

В соответствии с вышеизложенными требованиями, ниже приведены несколько вариантов серверных решений для Git, которые стоит рассмотреть.

2.1 Git на Windows с использованием SSH

  1. Git for Windows и OpenSSH: Установите Git for Windows, который включает OpenSSH. Это позволяет создать SSH-сервер для доступа к репозиториям. Настройте OpenSSH так, чтобы он проверял пользователей через Active Directory.

  2. Настройка Kerberos: Используйте Kerberos для обеспечения безопасности. Вам нужно будет следить за правильной установкой конфигураций Kerberos на вашей системе.

  3. Права доступа на уровне файлов: Убедитесь, что права доступа на папки с репозиториями настроены соответствующим образом, чтобы они соответствовали требованиям Active Directory.

2.2 Использование Gitea

Gitea является легковесным и открытым решением для управления репозиториями Git. Хотя оно изначально не поддерживает интеграцию с Active Directory, вы можете использовать сторонние плагины или настроить аутентификацию через LDAP вместо Active Directory.

  1. Установка на Windows: Gitea может быть развернут на Windows с использованием бинарных релизов.
  2. Аутентификация через LDAP: Настройте Gitea для работы с вашим Active Directory, наладив LDAP-авторизацию.
  3. Управление правами: Настройте правила доступа для групп и пользователей в Gitea, что может быть сложнее, чем при работе с файловыми разрешениями.

2.3 RhodeCode

Хотя RhodeCode в основном предназначен для коммерческого использования, вы также можете рассмотреть RhodeCode Community Edition, которая бесплатна для до 10 пользователей. Она поддерживает Active Directory через LDAP, и вы сможете управлять репозиториями с помощью удобного веб-интерфейса. Однако она может не полностью соответствовать требованиям к доступу на уровне файловой системы.

3. Рекомендации

  • Обсудите с вашим сетевым администратором: Прежде чем перейти к реализации, убедитесь, что администратор сети готов поддерживать указанные решения, учитывая их интеграцию с Active Directory.

  • Тестирование на контролируемом окружении: Перед полномасштабным развертыванием протестируйте выбранное решение в контролируемой среде, чтобы убедиться в его работоспособности.

  • Документация и обучение: Обеспечьте доступ к документации и, возможно, проведите обучение для пользователей, чтобы минимизировать трения во внедрении.

Заключение

Управление проектами и репозиториями Git с учетом ограничений Active Directory можно реализовать через несколько доступных способов. Выбор подходящего решения зависит от ваших конкретных требований и ограничения, которые существуют в вашей организации. Рекомендуем обратить внимание на возможности OpenSSH, Git на Windows или легковесные решения, такие как Gitea и RhodeCode.

Оцените материал
Добавить комментарий

Капча загружается...