##はじめに
僕はRailsで非同期実行の機能を実装するときいつもSidekiqを使っています。
Sidekiqには管理画面があり、routes.rbに以下のコードを記述すると実装できます。
require 'sidekiq/web'
mount Sidekiq::Web, at: "/sidekiq"
http://localhost:3000/sidekiqにアクセスすると、管理画面に飛ぶことができます。
スタイリッシュでおしゃれなデザインですね!
##管理画面にBasic認証を入れる
ただこのままデプロイすると誰でも/sidekiqの管理画面を見ることができてしまいます。
管理画面にはBasic認証がつけられるので、config/initializers/sidekiq_password.rbを作成し、
以下のコードを記述しましょう。
require 'sidekiq'
require 'sidekiq/web'
#Basic認証時のユーザー名とパスワードを設定する
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
[user, password] == [ENV['SIDEKIQ_USER'], ENV['SIDEKIQ_PASSWORD']] #環境変数にて設定
end
ユーザー名とパスワードは環境変数を使って設定するようにしましょう。
/sidekiqへアクセス時、Basic認証を使うよう、routes.rbを以下のように変更します。
require 'sidekiq/web'
authenticate :user do #authenticate
mount Sidekiq::Web => '/sidekiq'
end
認証機能を追加するGemのclearanceを利用して認証することもできるそうです。
https://github.com/mperham/sidekiq/wiki/Monitoring#user-content-clearance
さて、これでhttp://localhost:3000/sidekiqへアクセスすると
(※ローカルサーバーを立ち上げ直すことを忘れないでください。)
しっかりBasic認証の画面が表示されるようになってます!
SidekiqをRailsで利用される際は、セキュリティ対策にもBasic認証を管理画面に入れることをオススメします。