2009-09-26 4 views
10

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

Два варианта я могу думать о том, будет заключаться в следующем:

использования рельсов переваривать аутентификации

я мог бы поставить что-то подобное в 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 

Это был разорван от Ryan Daigle's blog. Я запускаю последнюю версию Rails 2.3, поэтому я должен быть свободен от проблемы безопасности, с которой они столкнулись.

Использовать проверку подлинности веб-сервер

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


На данный момент у меня есть первый реализованный и работающий, вы видите проблемы с ним? Я пропустил что-то очевидное? Заранее спасибо!

ответ

25

натыкается на это, чтобы помочь другим, таким как я, как я прочитал это, прежде чем оседать на подобном, но более чистом решении.

# 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 

Я написал короткий blog post об этом.

+0

Существует также этот вариант, который был добавлен недавно: https://github.com/rails/rails/commit/e2b07ee000439d0bd41f725ff9f7ad53e52a7e9b. Мне нравится ваше решение, хотя, я думаю, это путь. – jonnii

1

Я бы пошел с базовой аутентификацией http, я не вижу никаких неотъемлемых проблем с ним.

+0

Это то, что я закончил делать. Он проработал лечение в течение последних 3 месяцев. – jonnii

8

При развертывании с несколькими постановочной средой и поэтому у вас есть производственная среда и промежуточная среда, вам нужно только добавить эти строки в конфигурации/среды/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 и работает как шарм!