Вопрос

Каковы безопасность опасения следующего сценария? (Это одна из тех сумасшедших идей, которые кто-то попробует, и, может быть, это хорошая идея, и, возможно, это ужасная идея ...)

У вас есть приложение Rails на example.com, а действие в https://example.com/admin/update_app

Это действие имеет следующие требования:

  1. Это требует https (и перенаправлять, если не на https)
  2. Это требует доступа администратора
  3. Действие отображает страницу с формой, который говорит «Пароль репозитория: []»
  4. Это поле отфильтровывается из журналов сервера, так же, как аутентификация на сайт отфильтрона, через механизм фильтрации журнала в рельсах (т.е. Этот метод )

    Это действие делает следующее

    1. Вы поместите свой пароль репозитория кода в поле и нажмите «Отправить»
    2. Действие начинает скрипт оболочки, который вытягивает последние обновления из стабильной ветви репозитория вашего кода и применяет их на сайт (если только аутентификация репозитория не удается, в этом случае он останавливает все дальнейшие шаги)
    3. Веб-сервер перезагружен
    4. письмо отправляется администратору, говорящее что-то простое, как, «Обновление приложений завершено»
Это было полезно?

Решение

Не отправляйте пароль.Приложение может быть скомпрометировано и трояна или фильтрация может потерпеть неудачу.Вместо этого предоставьте доступ только для чтения веб-приложения к репозитории через отдельную учетную запись или публичный доступ.

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

Остановите веб-сервер, прежде чем делать обновление.Приложение может быть не защищено или безопасно использовать в качестве смеси файлов из разных версий.

Убедитесь, что веб-сервер не обслуживает какие-либо файлы метаданных, оставленных VCS.

Другие советы

Ну, это все напоминает мне повторно изобретенное capistrano развертываю на сервере через репозиторий git.

Только проблема, которая: 1) Что если это будет конфликты во время слияния (точка 2)? 2) Что если WebServer не перезапустится правильно (точка 3)? 3) Что если ветвь в вашем репозитории не так стабильна (точка 2)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top