2009-09-26 2 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로 또는 아파치 권한을 사용하지만 내 서버 프로비저닝이 약간 더 복잡하게 달성 할 수 있으며, 준비에 대해 서로 다른 아파치 CONFIGS을 필요로 /생산).


현재로서는 구현 된 첫 번째 작업이 있습니다. 문제가 있습니까? 나는 명백한 것을 놓쳤는가? 미리 감사드립니다!

답변

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로 썼다. 당신은 멀티 스테이징 환경에 배포하는 등 프로덕션 환경 및 스테이징 환경을 가지고, 당신은 단지 그렇게함으로써 설정/환경/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 

에 다음 줄을 추가해야하는 경우

+0

최근에 추가 된이 옵션도 있습니다 : https://github.com/rails/rails/commit/e2b07ee000439d0bd41f725ff9f7ad53e52a7e9b, 나는 당신의 솔루션을 좋아하지만, 나는 그것이가는 길이라고 생각합니다. – jonnii

1

http 기본 인증과 함께 갈 것입니다. 고유 한 문제가 없습니다.

+0

이것이 결국 내가 한 일입니다. 그것은 지난 3 개월 동안 치료를했습니다. – jonnii

8

, Apache를 구성 할 필요가 없습니다.

저는 Rails 4와 함께 Ruby 2를 사용하고 있으며 매력처럼 작동합니다!

관련 문제