コラム・事例

RedmineのSSO設定をAWSで行う

やってみた
#業務効率化
#ITコンサルティング
#DX

はじめに

こんにちは、株式会社SMSデータテックの社員Mです。
前回の記事ではECSでRedmineを構築する方法について解説しました。
ECSでRedmineを構築することで、サーバーの管理・運用業務を効率化することができました。
本記事では、次のステップとして、AWS SSOの設定をやってみたいと思います。

本記事対象の方

AWSでRedmineを構築しており、シングルサインオン(SSO)設定をしたいという方を対象としております。
※現在、omniauth samlのpluginsに脆弱性が発見されております。
導入する際は気を付けて下さい。

SSO設定をするメリット

AWSコンソールにログインすることができれば、ワンクリックでRedmineにアクセスすることができます。
また、初アクセスの際にアカウントが作成されるため、アカウント作成も必要ありません。

使用技術について

SSOとは

SSOとは、Single Sign-Onとして知られる認証の仕組みのことです。SSOを使用すると、ユーザーは1度の認証で複数の関連システムやアプリケーションにアクセスできます。これは、ユーザーが複数のアカウントやアプリケーションに対して別々にログインする必要がなくなるため、利便性が向上し、セキュリティが向上します。

IAM Identity Centerとは

AWS IAM アイデンティティセンターは、AWS アプリケーションもしくは複数の AWS アカウントに対するワークフォースのアクセスを管理するために推奨されるサービスです。

RedmineにSSO設定を導入する方法

手順は以下の通りになります。

  1. IAM Identity Centerでアプリケーションの設定
  2. omniauth samlファイルインストール
  3. samlファイルを編集

それぞれ説明していきます。

新規CTA

IAM Identity Center

IAM Identity Centerのアプリケーションから、アプリケーションの追加を行います。

アプリケーションの追加

写真

こちらの情報は、後述するsamlファイルに記述するので、メモしておいてください。

アプリケーションメタデータ

「メタデータ値をマニュアルで入力する」を選択

入力項目は下記内容を記述
アプリケーションACS URL:URL/auth/saml/callback
アプリケーションSAML対象者:IAM Identity Center SAML 発行者 URL

属性マッピングの編集

属性マッピングについては、AWS公式ドキュメントを参照しています。

下記表の通り記述

アプリケーションのユーザー属性ユーザー属性マッピング形式
Subject${user:AD_GUID}Persistent
name${user:subject}basic
firstname${user:givenName}basic
email${user:email}basic
lastname${user:familyName}basic

omniauth samlファイル編集

omniauth saml

AWSからSSOログインが可能になるpluginです。

Start画面からワンクリックでredmineにアクセスできるようになります。

※version5.1.1でも導入できますが、脆弱性が検知されているため、注意が必要です。

インストール方法

dockerfileが存在するディレクトリにpluginsというディレクトリを作成します。
そのディレクトリに移動し、下記コマンドを実行します。

git clone https://github.com/chrodriguez/redmine_omniauth_saml.git

2saml.rbの編集

samlファイルを編集します。
sample-saml-initializers.rbをコピーし、編集していきます。

assertion_consumer_service_url => ”URL/auth/saml/callback”
issue                                           => ”URL/”
idp_sso_target_url                      => “IAM Identity Center SAML 発行者 URL”
idp_cert                                       => “IAM Identity Center証明書”
name_identifier_format               => “urn:oasis:names:tc:SAML:2.0:nameid-format:persistent”
idp_slo_target_url                       => “URL”
login                                            => ‘extra.raw_info.name’,
mail                                             => ‘extra.raw_info.email’,
firstname                                     => ‘extra.raw_info.firstname’,
lastname                                     => ‘extra.raw_info.lastname’

※Redmineのversion4以下だとこのままで良いのですが、version5以上になるとエラーが発生してしまいます。
そのため、version5以降は下記設定が必須となります。

Redmine version5以降の追加設定

このsamlファイルの一行目に

require File.expand_path(‘../../../plugins/redmine_omniauth_saml/lib/redmine_omniauth_saml’, __FILE__)

と入力します。(自身が設定しているディレクトリから/redmine_omniauth_saml/lib/redmine_omniauth_samlを見に行ってください。デフォルトのディレクトリはusr/src/redmineです。)
このディレクトリにはSSOログインに関係するファイルがあります。

以上で設定完了です。

AWSコンソール画面のアプリケーションから、直接Redmineにアクセスできるようになります。

写真追加

おわり

今回は、ECSで構築したRedmineにシングルサインオン(SSO)設定を導入してみました。AWS SSOを活用してRedmineに接続する方法についての情報が少なく、設定にはかなり苦労しました。特に、SAMLファイルの編集やIAM Identity Centerの登録に関する部分が難しかったです。
しかし、設定後は面倒なアカウント作成が不要になり、ワンクリックで接続できるようになったため、非常に便利になりました。ただ、一部の脆弱性がまだ解消されておらず、その点が気がかりです。
試行錯誤の末に作り上げたAWS SSO認証が、他の方々のお役に立てることを願っています。

筆者イメージ

筆者:R・M(20代)

所属:ハイブリット・マルチクラウド部

まったくの未経験でこの業界に飛び込んできた若手。
パッと見はビジュアル系?
でもプレゼンしだすと、少し胡散臭さもあわせもったセールスように華麗なプレゼンを見せる。
読者と一緒にAWSのプロになりたい、そんな20代。

新規CTA
まずはお気軽にご相談ください
お問い合わせフォーム

その他のイベント・セミナー 一覧へ