Я пытаюсь предоставить удаленный доступ к серверу SVN через Apache. Ситуацию можно проиллюстрировать так:
/root
/public-project
/trunk
/branches
/restricted-project
/trunk
/branches
Существует только один репозиторий, содержащий оба проекта.
Публичные проекты может просматривать любой (только просматривать, никогда не изменять). Ограниченные проекты могут читать/изменять только пользователи, входящие в определенные группы. Конфигурация следующая:
<Location "/root">
DAV svn
SVNPath [...]
SVNIndexXSLT [...]
[...]
<LimitExcept PROPFIND OPTIONS REPORT>
require ldap-group CN=SVN Administrators,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/public-project">
<LimitExcept GET PROPFIND OPTIONS REPORT>
require ldap-group CN=Project1 Contributors,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/restricted-project">
require ldap-group CN=Project2 Contributors,OU=Subversion,DC=example,DC=com
</location>
Достаточно ли он безопасен или есть вероятность, что гость получит доступ к конфиденциальной информации из закрытого проекта?
При обновлении исходного кода публичного проекта через SVN возникает следующая ошибка:
Не разрешено открывать корень операции редактирования
Apache error.log показывает следующие элементы:
Произошел сбой при запуске редактора отчетов об обновлениях [500, #220000]
Нет прав на открытие корня операции редактирования [500, #220000]Что касается access.log, он показывает, что клиент SVN создал ряд
PROPFIND
(ответ: HTTP 207) иOPTIONS
(ответ: HTTP 200), и, наконец:"ОТЧЕТ /root/!svn/vcc/default HTTP/1.1" 500 241
Что мне следует сделать, чтобы решить эту проблему, т. е. разрешить публичный доступ только для чтения к публичному проекту, при этом скрыв ограниченный доступ от неавторизованных пользователей?
Примечание: предоставление привилегии GET /root
позволяет гостю загружать исходный код публичного проекта, но также делает публичное поведение поведением по умолчанию. Я бы предпочел ограничить доступ и предоставить его только на узлах, которые содержат публичные проекты.
решение1
Я создал новую среду с нуля и поигрался с ее конфигурацией, но, похоже,толькоспособ — сделать все общедоступным по умолчанию, а затем явно ограничить доступ к определенным проектам.
Это совершенно глупо с точки зрения безопасности, особенно в контексте, когда создается множество проектов, иногда не полностью автоматизированных, что позволяет легко ошибиться, забыв установить ограничение. При этом это также заставляет продвигать автоматизацию дальше, что может быть только полезно.
Если кто-то захочет поиграться с настройками, могу предоставить текущую используемую конфигурацию.