Как настроить безопасную систему SemiPublic Revision Control
У меня есть сервер Windows с проектом, настроенным с системой контроля версий. Предположим, это GIT, SVN или.... Предположим, что над этим проектом работают 10 человек по всему миру.
Первое, что приходит на ум, это защитить соединение между этим программистом и сервером с помощью SSH. но моя проблема в том, что хакер может уничтожить сервер, если он получит имя пользователя и пароль пользователя SSH (скажите, если я не прав).
Поэтому мне нужен безопасный способ, позволяющий программистам отправлять свои версии на сервер. Любые идеи будут прекрасны
2 ответа
Во-первых, можно защитить учетную запись SSH (например, только с помощью аутентификации с открытым ключом).
При правильной настройке Mercurial вы можете только выдвигать новые ревизии, но ничего не уничтожать. Но если злоумышленник получит доступ для записи в хранилище, у вас все равно будут другие проблемы. Вы также можете использовать защищенный доступ HTTP, если вы не хотите предоставлять им новую учетную запись.
В настоящее время я использую распределенную систему контроля версий под названием "darcs". Я попробовал оба подхода, описанных ниже, используя этот инструмент и серверы Linux. Я также использовал подход 1 с Subversion и с CVS.
Ваш пробег может отличаться на разных серверах и / или в системах контроля версий. Но основные подходы могут быть осуществимы так или иначе на любых конфигурациях, которые вы выбрали.
1. Используя одну учетную запись пользователя без разглашения пароля, вы аутентифицируете подключения к этой учетной записи через SSH с использованием открытых ключей. Вы ограничиваете привилегии той единственной учетной записи пользователя, чтобы иметь доступ только к хранилищу. Участники вашего репозитория должны сгенерировать пару секретный / открытый ключ и отправить вам открытый ключ, чтобы вы могли добавить его к авторизованным ключам. Если вы удалите его, он потеряет доступ.
2. Требуйте, чтобы ваши авторы патчей подписали и отправили патчи по электронной почте. Вы поддерживаете открытый брелок, в котором хранятся ключи авторизованных участников. все подписи исправлений сверяются с этим брелоком до их применения. Таким образом, применяются только патчи, подписанные авторизованными участниками.