Пароль, защищающий среду промежуточных рельсов
Я пытаюсь понять, каким будет лучший способ защитить мою промежуточную среду. В настоящее время я запускаю как постановку, так и выпуск на том же сервере.
Два возможных варианта:
Использовать аутентификацию рельсов
Я мог бы добавить что-то подобное в application_controller.rb
# Password protection for staging environment
if RAILS_ENV == 'staging'
before_filter :authenticate_for_staging
end
def authenticate_for_staging
success = authenticate_or_request_with_http_digest("Staging") do |username|
if username == "staging"
"staging_password"
end
end
unless success
request_http_digest_authentication("Admin", "Authentication failed")
end
end
Это было разорвано из блог Райана Дайгла. Я запускаю последнюю версию Rails 2.3, поэтому я должен быть свободен от проблем безопасности, которые у них были с этим.
Использовать аутентификацию веб-сервера
Я мог бы также добиться этого с помощью разрешений .htaccess или apache, однако это немного упрощает настройку моего сервера (я использую Chef и для разных целей требуются разные конфигурации apache).
На данный момент у меня есть первый реализованный и работающий, вы видите проблемы с ним? Я пропустил что-то очевидное? Спасибо заранее!
Ответы
Ответ 1
ударяя это, чтобы помогать другим, как и я, когда я читал это, прежде чем оседать на подобном, но более чистом решении.
# config/environments/staging.rb
MyApp::Application.configure do
config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p|
[u, p] == ['username', 'password']
end
#... other config
end
Я написал короткое сообщение в блоге об этом.
Ответ 2
Если вы развертываете в многоуровневых средах, и поэтому у вас есть производственная среда и промежуточная среда, вам нужно добавить эти строки только в config/environment/staging.rb
MyApp::Application.configure do
# RESTRICTING ACCESS TO THE STAGE ENVIRONMENT
config.middleware.insert_before(::Rack::Runtime, "::Rack::Auth::Basic", "Staging") do |u, p|
u == 'tester' && p == 'secret'
end
...
end
Таким образом, вам не нужно настраивать Apache.
Я использую Ruby 2 с Rails 4, и он работает как шарм!
Ответ 3
Я бы пошел с базовой аутентификацией http, я не вижу никаких неотъемлемых проблем.