Password di protezione a rotaie staging ambiente
-
18-09-2019 - |
Domanda
Sto cercando di capire ciò che il modo migliore per garantire il mio ambiente di staging sarebbe. Attualmente sto correndo sia messa in scena e la produzione sullo stesso server.
Le due opzioni che posso pensare sarebbe quello di:
Utilizza rotaie digerire autenticazione
ho potuto mettere qualcosa di simile nel 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
Questo è stato strappato dal blog di Ryan Daigle. Sto correndo sugli ultimi Rails 2.3 quindi dovrei essere libero dal problema di sicurezza che avevano con questo.
Utilizza l'autenticazione del server web
Potrei anche farlo con .htaccess o Apache i permessi, ma rende il mio server provisioning leggermente più complesso (sto usando Chef, e richiederebbe diverse configurazioni di Apache per la stadiazione / produzione).
Per ora ho il primo implementata e funzionante, vedete ay problemi con esso? Ho perso qualcosa di ovvio? Grazie in anticipo!
Soluzione
urtare questo per aiutare gli altri, come me, come ho letto questo prima di optare per una soluzione simile, ma più pulito.
# 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
ho scritto un breve post del blog su di esso.
Altri suggerimenti
Se si sta distribuendo con ambienti multi-sosta e in modo da avere ambiente di produzione e ambiente di staging, avete solo bisogno di aggiungere queste righe al config / ambienti / 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
In questo modo, non è necessario configurare Apache.
Sto usando Ruby 2 con Rails 4 e funziona come un fascino!
Vorrei andare con l'autenticazione di base http, non vedo problemi inerenti con esso.