Теги Subversion и безопасность

Я создал репозиторий SVN с нуля и успешно пометил некоторые из своих выпусков с помощью команды копирования SVN.

Я использовал плагин SSPI auth для apache, поэтому наши разработчики просто отправляют на сервер свои сетевые учетные данные, и все работает нормально.

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

Затем я заблокировал каталог / svn / с помощью: Require-group "CORP \ CKAN0BlahBlah"

Это фактически ограничивает новых разработчиков в группе безопасности доступом только для чтения, пока им не будет предоставлен доступ через файл конфигурации aAuthZ.

Теперь у меня есть пара вопросов:

  1. Как правильно (кроме системы чести) запретить пользователям вносить изменения в любой из каталогов «тегов»?

  2. Можно ли использовать SSPI для передачи членов групп в AuthZ вместо того, чтобы перечислять участников по отдельности в файле конфигурации?


person John Gietzen    schedule 19.05.2009    source источник


Ответы (5)


1 - Вы можете использовать ловушку предварительной фиксации для предотвращения фиксации, см. ловушка предварительной фиксации 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

Обратите внимание: это предотвратит фиксацию к любому пути репозитория, который содержит подстроку tags. Измените в соответствии с вашими потребностями.

person D'Arcy Rittich    schedule 19.05.2009
comment
Есть ли способ сделать это в Windows? - person John Gietzen; 19.05.2009
comment
Хуки находятся на стороне сервера, поэтому это можно сделать с помощью скомпилированного приложения, сценария оболочки, командного файла и т. Д., Которые являются собственными для платформы хоста. - person crashmstr; 19.05.2009
comment
Итак, я искал в Google сценарий предварительной фиксации .bat, и почти все они вызывают сценарий Perl. Я не думаю, что могу получить разрешение на установку Perl на этом сервере, так знаете ли вы чистую версию .bat? - person John Gietzen; 19.05.2009
comment
Отредактировал свой ответ, чтобы включить пример .bat. - person D'Arcy Rittich; 19.05.2009
comment
Я здесь +1, хотя я почти уверен, что ваш сценарий не сработает. В частности, вам нужно использовать утилиту SVNLOOK для обнаружения изменений, а не просто проверять по имени репозитория. Я выложил свой код в качестве ответа. - person John Gietzen; 20.05.2009
comment
Да, вы почти наверняка правы - это непроверенный код из памяти, я не могу сейчас протестировать репо. Используйте svnlook, чтобы получить правильный рабочий путь. Вам нужна помощь с этим? Основная цель моего кода заключалась в том, чтобы показать, как выполнять поиск подстроки и возвращать правильный уровень ошибки. - person D'Arcy Rittich; 20.05.2009
comment
О, я вижу на твоем примере у тебя есть svnlook. - person D'Arcy Rittich; 20.05.2009

Для вопроса №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.

Спасибо за вашу помощь всем.

person John Gietzen    schedule 19.05.2009
comment
это классный скрипт для Windows;) вопрос: в вашем скрипте я могу ДОБАВЛЯТЬ новые файлы в теги .. знаете ли вы, как этого избежать (я ищу такое решение)? - person Peter Parker; 20.05.2009
comment
Да, вы можете скопировать первую строку, содержащую текст (% svnlook%, и изменить ^ U. * на ^ A. * Однако учтите, что вы не сможете добавлять новые файлы ни в какой каталог с именем tags. - person John Gietzen; 20.05.2009

Нет "правильного" пути. Теги - это соглашение, и разработчики должны усвоить его и следовать ему. За исключением этого, отказоустойчивость может быть реализована с помощью перехватчиков Subversion. См. эту страницу для получения хорошего руководства.

person ASk    schedule 19.05.2009

Мне кажется, что это вопрос образования и процесса. Если ваши разработчики понимают назначение ваших тегов SVN, вероятность того, что у вас будут (намеренно) люди, совершающие коммиты на тег, будет гораздо меньше. Для эффективного взаимодействия этих процессов я обнаружил, что актуальная письменная документация является незаменимой. Моя команда использует вики для хранения документации о наших процессах (в частности, мы используем MediaWiki). Подход вики, кажется, делает вещи намного более доступными и более легкими для поддержания актуальности, чем что-то вроде хранения версионных документов MS Office в sharepoint.

person Paul Morie    schedule 19.05.2009
comment
Я один из разработчиков, и я бы предпочел, чтобы это было жестким правилом. - person John Gietzen; 19.05.2009
comment
Справедливо. Могу я спросить, почему? Очевидно, что несчастные случаи случаются, и это тот случай, когда полезно строгое правило. Поэтому ты этого хочешь? - person Paul Morie; 19.05.2009
comment
да. И могут быть некоторые из моих коллег, которым я не доверяю в понимании политики. - person John Gietzen; 19.05.2009
comment
Это грубо. Я считаю, что все, у кого есть доступ к фиксации, находятся в очень надежном положении. Возможно, вам стоит поговорить со своим руководством, если вы не можете доверять кому-то следовать довольно простому процессу. В конце концов, если вы даже не можете доверять им проверять свой код в нужном месте, что это говорит о качестве их работы? - person Paul Morie; 19.05.2009
comment
Так получилось, что вокруг этого много политики. Обычно я соглашусь с вами, но я не хочу быть мучеником. - person John Gietzen; 19.05.2009
comment
Я прекрасно понимаю, о чем вы говорите. Тем не менее, если коммиты этих людей начнут терпеть неудачу, это может дать Им за это очки противостояния. Удачи! - person Paul Morie; 20.05.2009
comment
Спасибо! В любом случае, поскольку это новая установка, я не думаю, что они узнают, что это была модификация, а не часть продукта. - person John Gietzen; 20.05.2009

Как насчет того, чтобы определить это с помощью файла svn-auth? это будет выглядеть так:

[groups]
ADMINS=<your ID>
<rest of groups>=<all other IDs>

[/]
* = r
<rest of groups> = rw
@ADMINS = rw

[/tags]
<rest of groups> = r

Это предоставит ADMINS доступ для чтения и записи к каталогу тегов, но никому другому. Я не знаю плагина аутентификации SSPI, поэтому, возможно, предоставленный мной пример не работает в вашем контексте.

person mliebelt    schedule 14.01.2010