Маркировка Subversion и безопасность
-
22-08-2019 - |
Вопрос
Я настроил репозиторий SVN с нуля и успешно пометил некоторые из своих выпусков с помощью команды копирования SVN.
Я использовал плагин аутентификации SSPI для Apache, поэтому наши разработчики просто подключались к серверу со своими сетевыми учетными данными, и все работало нормально.
Я создал файл авторизации AuthZ, добавил наших разработчиков в группы в файле и предоставил им доступ на запись в корень.Я также предоставил анонимным пользователям доступ только для чтения к корню.
Затем я заблокировал каталог /svn/ с помощью:Требовать группу «CORP\CKAN0BlahBlah»
Это эффективно ограничивает новых разработчиков в группе безопасности доступом только для чтения, пока им не будет предоставлен доступ через файл конфигурации aAuthZ.
Теперь у меня есть пара вопросов:
Как правильный способ (кроме системы чести), чтобы пользователи не допускали изменений в каких -либо каталогов «тегов»?
Можно ли использовать SSPI для передачи членов групп в Authz, а не перечислять участников индивидуально в файле конфигурации?
Решение 2
Для Вопрос 1, я разработал для этого:
@echo off
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe
SET GREP=D:\SVN\Repo\hooks\grep.exe
SET LOG=D:\SVN\Repo Logs.txt
>>"%LOG%" echo ==== commit %1 %2 ====
>>"%LOG%" "%svnlook%" changed -t %2 %1
("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit to tags.>&2 && exit 1)
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment.>&2 && exit 1)
exit 0
Взял инструмент grep из http://sourceforge.net/projects/unxutils
Для Вопрос 2, ответ НЕТ, вы не можете проверить группы безопасности AD в файле конфигурации AuthZ.
Спасибо за вашу помощь всем.
Другие советы
1. Вы можете использовать перехватчик pre-commit для предотвращения коммитов, см. Перехватчик предварительной фиксации SVN для предотвращения изменений в подкаталогах тегов.
Редактировать: Чтобы сделать это в Windows, попробуйте следующее:
Сохраните это как файл с именем pre-commit.bat в папке хуков вашего репозитория:
@echo off
set REPOSITORY=%1
echo %REPOSITORY% | find /I "tags"
if errorlevel 1 goto done
echo You tried to commit to %REPOSITORY% >&2
echo Committing to tags is not allowed >&2
exit 1
:done
Обратите внимание: это предотвратит фиксацию любого пути к репозиторию, содержащего подстроку теги.Измените в соответствии с вашими потребностями.
Не существует «правильного» способа.Теги — это соглашение, и разработчики должны его изучить и следовать ему.За исключением этого, отказоустойчивость можно реализовать с помощью перехватчиков Subversion.Видеть этот страница с хорошим руководством.
Мне кажется, это вопрос образования и процесса.Если ваши разработчики понимают назначение ваших тегов SVN, вероятность того, что люди (намеренно) будут выполнять фиксацию тега, будет гораздо менее вероятной.Для эффективного информирования об этих процессах я считаю необходимым наличие актуальной письменной документации.Моя команда использует Wiki для хранения документации о наших процессах (в частности, мы используем МедиаВики).Подход Wiki, кажется, делает вещи намного более доступными и их легче поддерживать в актуальном состоянии, чем что-то вроде хранения документов MS Office с версиями в SharePoint.
Как насчет использования файла svn-auth для определения этого?это будет выглядеть так:
[groups]
ADMINS=<your ID>
<rest of groups>=<all other IDs>
[/]
* = r
<rest of groups> = rw
@ADMINS = rw
[/tags]
<rest of groups> = r
Это предоставит администраторам доступ для чтения и записи к каталогу тегов, но никому другому.Я не знаю плагин аутентификации SSPI, поэтому, возможно, мой пример не работает в вашем контексте.