Скажем, у меня есть следующий рабочий процесс для развертывания новой версии моего веб-приложения. Это небольшое приложение, поэтому вся работа по сборке и развертыванию выполняется на одном сервере (example.co
)
git push
который подталкивает новый код к моему серверу (example.co
)post-receive
крюкРепозиторий git управляется специальным git
пользователь на моем сервере. Это сделано для того, чтобы любой разработчик мог добавить удаленный URL-адрес ssh git, например ssh://git@example.co:/some/path.git
и подтолкнуть к нему с помощью SSH
Работа по сборке и развертыванию выполняется deploy
пользователь, поскольку для этого требуется sudo
разрешение.
Как мне получить git
пользователь запускает скрипт как deploy
пользователь? Если у пользователя git есть какой-либо способ сделать это, потому что любой может ssh в машину под git
пользователь правильно?
Есть ли лучший способ сегментировать эти разрешения?
Спасибо!
Вы даете разрешение git
пользователь, чтобы запустить сценарий, который вы хотите запустить как deploy
пользователь:
git ALL=(deploy) NOPASSWD: /usr/local/bin/some-script ""
Должен ли пользователь git иметь какой-либо способ сделать это, потому что кто угодно может подключиться к машине по ssh с правами пользователя git?
Ну, для начала, надеюсь, нет кто угодно могут войти в систему только люди, у которых есть законная потребность в доступе к этой учетной записи. Во-вторых, SSH как git
Пользователь должен запускать принудительную команду, поэтому люди, входящие в систему, не должны иметь возможность произвольно запускать сценарий развертывания. Наконец, вызываемый скрипт должен быть написан таким образом, чтобы он не мог сделать ничего более разрушительного, чем «повторное развертывание заведомо безопасного кода, который уже был развернут ранее», поэтому на самом деле не должно быть никаких недостатков в том, что кто-то может запускать сценарий повторно, за исключением, возможно, исчерпания ресурсов.