SVN + SSH Security

9

Я использую snv + ssh с аутентификацией на основе ключей. Прямо сейчас, чтобы любой из моих пользователей svn мог получить доступ к хранилищу через Subversion, я должен настроить файлы репо на чтение и запись в файловой системе для этих пользователей.

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

Мысли о том, как я могу это сделать?

Брэд Смит
источник

Ответы:

4

Для доступа к URL-адресу svn + ssh клиент svn запускает экземпляр svnserve с помощью «ssh -q user @ host svnserve -t» и взаимодействует с этим экземпляром через stdin / stdout.

Если вашим пользователям нужен обычный доступ по ssh, вы все равно можете запретить им доступ к хранилищу, ограничив доступ одному пользователю (chown -R svnserve: репозиторий svnserve; chmod -R g-rwx, репозиторий o-rwx) и заменив команду svnserve командой это программа-обертка setuid / setgid svnserve .

Алекс Жасмин
источник
10

В общедоступной пользовательской среде я бы рекомендовал установить настоящий сервер Subversion (либо svnserveчерез Apache). В этой среде отдельным пользователям вообще не нужен доступ к файлам репозитория, поскольку весь доступ к файлам осуществляется под учетной записью пользователя серверного процесса.

В книге Subversion есть раздел « Выбор конфигурации сервера», который может помочь. Из этого раздела (выделение мое):

Если у вас есть существующая инфраструктура, которая в значительной степени основана на учетных записях SSH, и если у ваших пользователей уже есть системные учетные записи на вашем сервере, имеет смысл развернуть решение svnserve-over-SSH. В противном случае мы не рекомендуем эту опцию широкой публике. Обычно считается, что ваши пользователи могут получить доступ к хранилищу через (воображаемые) учетные записи, управляемые svnserve или Apache, а не через полнофункциональные системные учетные записи.

Грег Хьюгилл
источник
4

На этом сайте есть несколько полезных трюков: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Если ничего из этого не работает для вас, может быть, обходной путь может помочь? Вы можете сделать резервную копию хранилища каждый раз, когда кто-то что-то фиксирует, добавив что-то вроде этого в хуки фиксации: sudo rsync -a / my / repo / path / my / closed / path /

Командир Кин
источник
2

Я вижу два возможных направления для решения этой проблемы:

  • обеспечить ограниченный доступ к оболочке, например, пользователи могут использовать svn только со своими учетными записями (может понадобиться другая учетная запись, если доступ к оболочке также необходим для других целей) - я нашел несколько интересных ссылок, которые ищут в svnonly . Примечание: сам не пробовал.
  • перейти на Subversion через https, добавив клиентские сертификаты. Я видел, как люди обсуждали это, но никогда не делал это сам. Недостаток: требуется распространение клиентских сертификатов в дополнение к ключам ssh.
Olaf
источник
1

я согласен с Грегом и Олафом - иди на https. Я пользуюсь такой установкой в ​​течение достаточно долгого времени и не вижу в ней никаких недостатков.

вы получите дополнительное преимущество детального контроля доступа в репозитории - так что вы можете сделать некоторые его части доступными только для чтения, а некоторые - полностью недоступными для выбранных пользователей.

PQD
источник