Help us understand the problem. What is going on with this article?

Redmineに2段階認証プラグインを導入する

概要

  • Redmineのセキュリティを高める為にプラグインを導入しました
    https://www.redmine.org/plugins/redmine_out_of_band_auth
    • アウトオブバンド認証(Gmail経由でユーザのメールアドレスにワンタイムパスワードを送る)
  • プラグインの導入手順とかをまとめています

実行環境

  • EC2(AmazonLinux)
  • Redmine 4.1.0
  • ruby 2.7.0
  • Rails 5.2.4.1
  • gem 3.1.2
  • mysql 5.7.29

実施したこと

  1. プラグインのインストール
  2. 送信元Gmailアカウントの設定
  3. Redmineサーバの設定
  4. Redmine利用ユーザの設定

手順

1. プラグインのインストール

一般的なRedmineプラグインインストールの手順です
Railsのバージョンによりつまずきます

cd /path/to/redmine/plugin
git clone https://github.com/matsukei/redmine_out_of_band_auth.git
cd /path/to/redmine
bundle install
bundle exec rake redmine:plugins:migrate NAME=redmine_out_of_band_auth RAILS_ENV=production

ここでエラー。

StandardError: An error has occurred, all later migrations canceled:
Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

  class CreateAuthSourceOutOfBands < ActiveRecord::Migration[4.2]

~~略~~

以下の記事によるとRails4で作られたmigrationファイルをRails5で実行すると発生するらしい。

https://qiita.com/tackeyy/items/1a6599d9d565cd89cdbc

プラグイン内のファイルを編集。

vim /path/to/redmine/plugins/redmine_out_of_band_auth/db/migrate/001_create_auth_source_out_of_bands.rb

前: class CreateAuthSourceOutOfBands < ActiveRecord::Migration
後: class CreateAuthSourceOutOfBands < ActiveRecord::Migration[4.2]

もう一度実行して解消。

bundle exec rake redmine:plugins:migrate NAME=redmine_out_of_band_auth RAILS_ENV=production
2. メール送信用Googleアカウントの設定
  • ワンタイムパスワードをユーザに送るためのGoogleアカウントを作成(既存で持っているものでもOKです)
  • 他のアプリからGoogleのサービスを利用する場合、アカウントのパスワードではなくアプリ用のパスワードを作成して利用する必要があります

Googleでアカウント作成後、「アカウント管理」→「セキュリティ」から2段階認証設定をする
アプリパスワードから、Redmineメール送信用のアプリパスワードを作成する(名前は適当でOK)
:bomb: 16桁のパスワードは作成時しか確認できないためどこかにメモること

3. Redmineサーバの設定

configファイルに記載してRedmineを再起動します

vim /path/to/redmine/config/configuration.yml

以下を記載します

default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "作成したGoogleアカウントのメールアドレス"
      password: "作成したアプリパスワード"

Redmineを再起動します

service httpd restart

Redmineが問題なくアクセスできればOKです

4. Redmine利用ユーザの設定
  • メール通知を設定し、そもそもRedmineでメール通知ができるかを確認します
  • ユーザのメール認証を有効にします

Redmineに管理者ユーザでログイン
「管理」→「設定」→「メール通知」から、送信元メールアドレスにメール送信用Googleアカウントのアドレスを記載
スクリーンショット 2020-02-21 12.16.32.png
右下の「テストメール送信」からログインしたユーザのアドレスにテストメールが送信されれば、メール通知の設定はOK
「534-5.7.14 ~~~~」のようなエラーが出たら、アプリパスワードの設定ミスを疑ってください

「管理」→「ユーザ」→「メール通知」から、利用ユーザのアドレスとアウトオブバンド認証を有効にする
スクリーンショット 2020-02-21 12.25.12.png
実際にログインし、以下の画面が出てログインできれば設定完了です。
スクリーンショット 2020-02-21 12.36.03.png
スクリーンショット 2020-02-21 12.37.19.png

おわりに

  • Redmineのインストール手順は今後できたらまとめます
  • Rubyの知識なしにとりあえず入れてみたのでbundle?gem?な状態です。少し勉強します

ありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした