Как я могу переключить существующий набор хранилищ 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, когда я реализовал все это. Но у меня был кто-то другой, настроивший для меня тестовый сервер, поэтому я понятия не имею, какие именно параметры конфигурации.

Другие вопросы по тегам