Как я могу переключить существующий набор хранилищ Subversion на использование ActiveDirectory? (Svnserve/ окна)
У меня есть набор частных репозиториев Subversion на Windows Server 2003, к которым разработчики получают доступ через SVNServe по протоколу svn://. В настоящее время мы используем файлы authz и passwd для каждого репозитория для контроля доступа, однако с ростом числа репозиториев и разработчиков я рассматриваю возможность перехода на использование их учетных данных из ActiveDirectory. Мы работаем во всем магазине Microsoft и используем IIS вместо Apache на всех наших веб-серверах, поэтому я предпочел бы продолжать использовать SVNServe, если это возможно.
Помимо того, что это возможно, меня также беспокоит вопрос о том, как перенести наши репозитории, чтобы история существующих пользователей отображалась в правильные учетные записи ActiveDirectory. Помните также, что я не являюсь сетевым администратором и не очень знаком с ActiveDirectory, поэтому мне, возможно, придется пройти через некоторых других людей, чтобы получить изменения, сделанные в ActiveDirectory, если это необходимо.
Какие у меня варианты?
ОБНОВЛЕНИЕ 1: Из документации SVN следует, что с помощью SASL я должен иметь возможность заставить SVNServe проходить аутентификацию с использованием ActiveDirectory. Чтобы уточнить, ответ, который я ищу, заключается в том, как настроить SVNServe (если это возможно) для использования ActiveDirectory для аутентификации, а затем как изменить существующее хранилище, чтобы переназначить существующих пользователей SVN в их учетные записи входа в домен ActiveDirectory.
ОБНОВЛЕНИЕ 2: Похоже, что поддержка SASL в SVNServe основана на модели плагина, а документация приведена только в качестве примера. Глядя на библиотеку Cyrus SASL, кажется, что поддерживается несколько "механизмов" аутентификации, но я не уверен, какой из них следует использовать для поддержки ActiveDirectory, и не могу найти никакой документации по таким вопросам.
ОБНОВЛЕНИЕ 3: Хорошо, похоже, для связи с ActiveDirectory я ищу использовать saslauthd вместо sasldb для свойства auxprop_plugin. К сожалению, похоже, что согласно некоторым сообщениям (возможно, устаревшим и неточным) saslauthd не опирается на Windows, и такие попытки считаются незавершенным.
ОБНОВЛЕНИЕ 4: Последнее сообщение, которое я нашел по этой теме, звучит так, как будто надлежащие исполняемые файлы () доступны через библиотеку MIT Kerberos, но похоже, что у автора этого поста на Nabble.com все еще есть проблемы с работой,
ОБНОВЛЕНИЕ 5: Из обсуждений TortoiseSVN, а также этого поста на svn.haxx.se похоже, что даже если saslgssapi.dll или любые другие необходимые двоичные файлы доступны и настроены на сервере Windows, клиентам также потребуется такая же настройка, чтобы работать с этими репозиториями. Если это так, мы сможем получить поддержку ActiveDirectory от клиента Windows только в том случае, если будут внесены изменения в этих клиентах, таких как TortoiseSVN и сборка клиентских двоичных файлов CollabNet для поддержки таких схем аутентификации. Хотя это то, что предлагают эти посты, это противоречит тому, что я изначально предполагал из другого прочтения, что совместимость с SASL не требует никаких изменений на клиенте, а только то, что сервер настроен для обработки механизма аутентификации. После более внимательного прочтения в документе о Cyrus SASL в разделе 5 Subversion говорится: "1.5+ клиенты с поддержкой Cyrus SASL смогут проходить аутентификацию на 1.5+ серверах с включенным SASL, при условии, что хотя бы один из механизмов, поддерживаемых сервером, также поддерживается клиентом." Очевидно, что поддержка GSSAPI (что, как я понимаю, требуется для Active Directory) должна быть доступна на клиенте и на сервере.
Я должен сказать, что я слишком много узнаю о том, как Subversion обрабатывает аутентификацию, чем я когда-либо хотел. И, к сожалению, я просто искал ответ о том, могу ли я иметь поддержку аутентификации Active Directory при использовании SVNServe на сервере Windows и доступе к нему из клиентов Windows. Согласно официальной документации, это кажется возможным, однако вы можете видеть, что конфигурация нетривиальна, если вообще возможна.
ОБНОВЛЕНИЕ: 6: Поскольку разработка на Subversion 1.7 завершается, кто-нибудь может добавить что-нибудь о том, улучшит ли Subversion 1.7 ситуацию, когда SVNServe будет проходить аутентификацию с использованием Active Directory?
3 ответа
Как уже упоминалось, VisualSVN Server - это инструмент, который вам нужен. Это пакет "все в одном" для Windows, который, как оказалось, использует Apache внутри него - вы никогда не узнаете, если не покопаетесь в dll, который он устанавливает, для всех - это служба Windows, которая имеет оснастку mmc для администрировать это. Вы можете изменить порт, на котором он работает, если у вас уже есть занятый порт 80.
Я понимаю, что поддержка sasl через svnserve сейчас работает.
Я использую apache с svn, работающим на Debian Linux, авторизирующим снова активный сервер каталогов. клиенты подключаются к хранилищу по протоколу http. если эта настройка приемлема для вас - продолжайте чтение.
это также должно работать под Apache для Windows, но я никогда не пробовал. то, что следует, является специфичным для Debian, но должно работать аналогично в windows / других дистрибутивах; вы не потеряете свою историю SVN во время миграции...
установить необходимое программное обеспечение:
apt-get install libapache2-svn subversion apache2
в конфигурации для vhost apache [символические ссылки на них можно найти в / etc / apache2 / sites-enabled]. внутри VirtualHost добавить:
<Location /svn>
DAV svn
#change this to actual path
SVNPath /full/path/to/your/current/svn/directory
AuthType Basic
AuthName "SVN Server"
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
# provide here credentials for existing domain user.
# in my case domain is called domainName and user - user
AuthLDAPBindDN "domainName\user"
AuthLDAPBindPassword usersPassword
# put here ip of the domain controler and full path to OU containing accounts
AuthLDAPURL ldap://10.11.22.33:389/ou=Users,dc=domainName,dc=companyName,dc=whatever?sAMAccountName?sub?(objectClass=*)
Require valid-user
SVNAutoversioning on
AuthzSVNAccessFile /etc/apache2/svn_authz
</Location>
убедитесь, что apache загружает модуль ldap:
cd /etc/apache2/mods-enabled
ln -s ../mods-available/authnz_ldap.load
ln -s ../mods-available/ldap.load
/etc/init.d/apache2 reload
убедитесь, что apache может изменять файлы в хранилище svn:
chown www-data:www-data -R /full/path/to/your/current/svn/directory
Ваш svn_authz должен содержать правила, указывающие, кто и к чему имеет доступ. в моем случае:
[groups]
ops=jack.brown,john.smith
[/]
* = rw
[/priv]
* =
@ops = rw
Вы можете узнать больше о синтаксисе для этого файла здесь.
если вы зашли так далеко - ваши пользователи могут проверить с http://server.address/svn/ используя любой svn-клиент [ tortoise/cmdline/visual svn ], они увидят всю историю и продолжат чтение / запись в нее.
Вы можете использовать saslNTML вместо GSSAPI. DLL-файл saslNTML по умолчанию устанавливается вместе с TSVN, и я думаю, что он также включен в svn-клиент от collab.net.
в вашем конфигурационном файле sasl есть две опции:
ntml_server
и необязательно
ntml_v2
и, конечно, вы должны установить список мехов в вашем конфигурационном файле, чтобы включить NTML.
Я только попробовал это однажды с TSVN, когда я реализовал все это. Но у меня был кто-то другой, настроивший для меня тестовый сервер, поэтому я понятия не имею, какие именно параметры конфигурации.