/sidekiq ルートをパスワードで保護するにはどうすればよいですか (つまり、Sidekiq::Web ツールの認証を要求します)。
概要
Railsアプリケーションでsidekiqを使用しています。 デフォルトでは、URL の後に「/sidekiq」を追加することで誰でも Sidekiq にアクセスできます。 Sidekiq部分のみパスワード保護・認証したい。どうやってやるの?
解決策
以下をsidekiqイニシャライザに入れます
require 'sidekiq'
require 'sidekiq/web'
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
# Protect against timing attacks:
# - See https://codahale.com/a-lesson-in-timing-attacks/
# - See https://thisdata.com/blog/timing-attacks-against-string-comparison/
# - Use & (do not use &&) so that it doesn't short circuit.
# - Use digests to stop length information leaking
Rack::Utils.secure_compare(::Digest::SHA256.hexdigest(user), ::Digest::SHA256.hexdigest(ENV["SIDEKIQ_USER"])) &
Rack::Utils.secure_compare(::Digest::SHA256.hexdigest(password), ::Digest::SHA256.hexdigest(ENV["SIDEKIQ_PASSWORD"]))
end
そしてルートファイルでは次のようになります。
mount Sidekiq::Web => '/sidekiq'