Google Workspace(G Suite)とredmine間でのsaml認証によるシングルサインオンの実現手順

情シス担当の内です。
 
総務省やIPAの「企業・組織の情報セキュリティ対策」ページでは以下のように書いてあります
https://www.soumu.go.jp/main_sosiki/joho_tsusin/security_previous/business/admin03.htm
 

複数のサービス間で同じパスワード使い回さないこと、同一のパスワードを長期間使い続けることは避けなければなりません。ユーザーには定期的にパスワードを変更するように指導しましょう。また定期的な変更といっても、2つか3つのパスワードをあらかじめ決めて、使いまわすのも避けるように指導した方が良いでしょう。パスワードをWebブラウザなどのソフトウェアに記憶させないこと

 
IT業界で働く人にとっては百以上のシステムを利用してID/パスワードを管理することは、珍しく無いと思います。パスワードを管理するのってものすごい記憶力を要求されますよね。なのでシングルサインオン大好きです。

社内で使う情報システム全てでシングルサインオン対応目指して奮闘しております。

ということで、今回はGoogle Workspace(G Suite)と自前で構築したredmine間でのsaml認証によるシングルサインオンの実現手順と設定について説明したいと思います。
redmineではデフォルトでldap認証やOpenIDによる登録には対応していますが、SAMLはプラグインをインストールして設定する必要があります。会社でGoogle Workspaceを契約していて、プロジェクト管理システムとしてredmineを利用しているような会社向けの情報となります。Google WorkspaceがIdPで、redmineがSPという位置づけになります。

ギークフィードで業務効率化をアップさせる製品の開発や販売を行っている関係上、自社内でも積極的に効率化を推進しています。
会社で使用するシステムはなるべくシングルサインオンにすることで、入退社時のアカウント、ID・パスワードの発行や削除の管理の手間が減り、セキュリティの向上も図れますし、利用者にとってもID管理が楽になり業務効率もアップします。
自社製品のビジネス音声データ蓄積・活用DXサービス「YouWire」も当然シングルサインオン対応してあります。

前提環境

本番環境用redmineはAlmaLinuxをAWSのec2上で動かしており、その上でpassengerを使ってapacheで動かしております、本番環境のAMIを作成して、saml認証検証用インスタンスを作成して実行します。
本番同様の環境が瞬時につくれるのはクラウドのメリットですね。

弊社では都度バージョンアップをして使っており、対象Redmineのバージョンは4.2.1、2021年10月1日現在での最新版が4.2.2なので、新しめのバージョンです。

redmineを運用するドメインは仮にhttps://redmine.geekdev.tokyo/としておきます。

設定をするためには、Goole Workspaceの特権管理者権限と、redmineの管理者権限が必要です。

SAML認証はredmineのデフォルトの機能では提供されていないため、こちらのプラグインを利用します。
https://github.com/chrodriguez/redmine_omniauth_saml
ありがたいことに、2019年6月時点のコミットでredmineバージョン4対応がされており、今回の環境につかえます。
では早速手順に入っていきましょう。

Google Workspaceの設定

  1. SAMLアプリの追加
    Google管理コンソールにログインし、アプリ->ウェブアプリとモバイルアプリ->アプリを追加->SAMLアプリの追加を選びます。

      

  2. アプリ名とアプリアイコンを好きなもの設定してください。

      

  3. SSOのURLは後で使うのでコピーして控えておき、証明書も後で使うのでダウンロードしておきます。

      

  4. ACSのURL
    redmineのURLプラス、/auth/saml/callback
    を入力してください。
    今回のケースだとhttps://redmine.geekdev.tokyo/auth/saml/callback
    となります。

  5. エンティティID
    redmineのURL
    を入力してください。
    今回のケースだとhttps://redmine.geekdev.tokyo/
    となります。

  6. 名前IDの形式
    EMAILを選択

  7. 名前ID
    Primary emailを選択


      

  8. 属性マッピングを追加
    をクリックしそれぞれ
    First name -> firstname
    Last name -> lastname
    Primary email -> email
    とします。


      

  9. サービスステータスの有効化
    保存後、今作成したアプリにアクセスすると、ユーザーアクセスがオフになっているので、オフのところをクリック

      

    サービスのステータスをオンにして保存します。

      

redmineの設定

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

基本的にプラグインのreadmeに記載の手順に従って実行するだけとなります。

  1. サーバーにログインしてプラグインディレクトリに移動

  2. プラグインのclone

  3. 環境に応じて適切な権限に変更してください。

  4. redmineのHOMEディレクトリに移動

  5. bundlerで依存関係のインスト-ル

  6. assetsのコピーを実行

  7. apacheの再起動

プラグインの設定ファイル設定

  1. sha1フィンガープリントの生成
    GoogleWorkspaceの設定時にダウンロードしておいた証明書をredmine上サーバーに置いて、
    以下コマンドでsha1のフィンガープリントを生成します。

    今度は出力結果のフィンガープリントをコピーしておきます。

  2. SAMLプラグインのサンプル設定ファイルをコピーして編集します。

    設定のポイントは以下のコメントに記載します。

  3. 設定を読み込ませるためにまた再起動

redmineの管理画面からプラグイン設定

redmineにログインし、
管理->プラグイン->Redmine Omniauth SAML pluginの設定に行きます。

  1. Enable SAML authentication
    チェックを入れます。これを有効化するとログインページにsaml認証リンクが表示されます。

  2. Login page text
    saml認証リンクのテキストになります/、何も設定しないと「Login with SAML」と表示されます。

  3. Replace Redmine login page
    今回はチェックを入れません。チェックを入れると、redmineのURLにアクセスするといきなり
    googleのsaml認証ページに飛ばされます。saml以外の認証でログインができなくなります。
    ログインをsamlに限定したい場合にはチェックを入れます。

  4. Create users automatically?
    チェックを入れます。
    チェックを入れると、redmine側で同メールアドレスのユーザーがいなくても、
    saml認証の初回ログイン時に自動的にユーザーが作成されます。
    また、samlを導入する前に既にユーザーがいる場合は、メールアドレスでユーザーが紐付いて、
    既存ユーザーとしてsamlログインが可能になります。

実運用を想定した追加設定

既存ユーザーをsamlログインのみに限定する

これまでの設定だけだと、既存ユーザーはID/パスワードでもsamlでもログインできる状態になります。
これはセキュリティ的によろしくないので、samlに限定するには、DBにログインして以下2つの手順を実行します。

パスワードログインできないようにパスワードhashをリセット

ただ、これだけだとsamlでログインした後にパスワード変更画面からパスワード変更をすると、
ログインできてしまうので、samlログイン時のパスワード変更画面自体を無効化します。

パスワード変更を無効化

samlで自動的に作成されたユーザーの場合はもともとこの値が1になってます。

これでsamlを使用しない、顧客用のアカウントは既存のID/パスワード認証で、
従業員はsamlに限定するといった運用が可能になります。

ID/パスワード運用ユーザーの個人設定画面
パスワード変更が可能。

  

SAMLユーザーの管理画面
パスワード変更が不可能

  

逆にGoogle Workspaceの障害でSAMLログイン自体ができない発生したときは、hashed_passwordを一時的に生成して上記カラムをupdateすれば障害回避して一時的にID/パスワード運用に戻して業務の続行が可能となります。

ID/パスワードログインユーザーのセキュリティ設定

redmine4.2から二要素認証に対応してますので、バージョンが古く、ID/パスワード運用をしている方は4.2以上にアップグレードすることをお勧めします。
またパスワードポリシーの設定もありますのできっちり設定致しましょう。

Google Workspaceとredmineのsaml認証まとめ

  • IDパスワードは使い回さない、定期的に変えて、記憶力を鍛えましょう。
  • 記憶力に限界が来たらシングルサインオンだ。
  • redmineはプラグインを使えばsaml認証に対応してます。
  • プラグインの各設定項目を詳しくご紹介しました。
  • 実運用では既存社内ユーザー、IDパスワード運用の社外ユーザーのことも検討が必要です。
  • ID/パスワード運用の場合は二要素認証を必須にするなど、よりセキュリティを意識しましょう。

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
内信史
内信史
代表取締役
意識高い系IT企業経営者、エンジニア、コンサルタントだがMacは使いこなせない。 ギークフィードファウンダー、代表取締役、中小企業診断士、 オープンソースコンサルタント、コンタクトセンターシステムコンサルタント、データサイエンティスト エンジニアとして今でもよく触るものはElasitcSearch/Amazon OpenSearch、AWS、Linux、c++ 中小企業診断士としては、会社地元台東区の中小企業向けにホームページやSNSを利用したマーケティングプロモーション支援を実施。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ