OneLogin と AWS SSO を統合させる(SCIMによる自動プロビジョニング編)

OneLogin と AWS SSO を統合させて、超簡単にAWSへのアクセス権限を柔軟に制御し、OneLoginでユーザーの一元管理を実現する
2021.09.21

ちゃだいん(@chazuke4649)です。

OneLogin と AWS SSO の統合できるようになり、AWSへのアクセス権限も簡単かつ柔軟に一元管理できるようになっています。

AWS Single Sign-On で OneLogin ユーザーの AWS へのアクセスを一元管理

新しい! AWSSSOとの統合| OneLoginブログ

どういうこと?

まず、AWS におけるシングルサインオンの検討には以下Blackbeltが分かりやすいのでご参考ください。

【AWS Black Belt Online Seminar】AWSアカウント シングルサインオンの設計と運用 - YouTube

20200722_AWSBlackbelt_シングルサインオンの設計と運用.pdf

※ただし、現在では情報が更新されている箇所があり、今回関係する部分だと、「アイデンティティストアの選択」で「外部IDプロバイダー」は、資料時点では Azure AD と Okta だけでしたが、現在は OneLogin も追加になってます。今回まさにその構成を試します。

どういうことかというと、シングルサインオンの構成には以下3つの要素があります。(図はBlackbeltより引用)

通常の AWS SSO 利用の場合、以下のようになります。

今回は、このアイデンティティストア部分に OneLogin を使います。

何が嬉しいの?

AWS側が Organizationsが利用可能で、比較的中・大規模なマルチアカウント管理を行う場合、メリットが際立ってきます。

  • ユーザー管理を Onelogin だけで一元管理できる (AWS SSO へは SCIM により ID を自動的に同期してくれる)
  • OneLogin を使いながら、AWS SSO の恩恵(簡単かつ柔軟なマルチアカウントへのアクセス管理)を基本無料で享受できる
  • OneLogin ユーザーは使い慣れた OneLogin 画面から利用できる

逆にこれを AWS SSO を利用せずに行おうとすると、

  • 複数AWSアカウントへ役割分だけ IAMロールを作成する必要がある
  • そのIAMロールのユーザーポリシーを変更したい場合、大変(仕組み化してない場合は、基本個別で対応必要)

など一手間です。

この辺は以下ブログがわかりやすいです。

OneLogin で複数 AWS アカウントへのシングルサインオン環境をつくる | DevelopersIO

やってみる

それでは早速やっていきます。

構成図は以下の通りです。

前提条件

  • OneLogin Unlimited Edition 管理者レベルのユーザー
  • AWS SSOが利用できる(AWS Organizationsのマスターアカウントの)環境、AWS SSOの有効化

※今回ご紹介する方法は、 OneLogin と AWS SSO のSCIMによるユーザーの自動プロビジョニングです。これを利用するには、ユーザープロビジョニングが利用可能な OneLogin の Unlimited Edition というプランを選択する必要があります。(試用版で試せるかは不明です)

OneLoginのプランの詳細は以下をご覧ください。

OneLogin 価格|クラウド型シングルサインオン・アクセスコントロール(IDaaS) OneLogin - サイバネット

手順

基本的には以下公式ブログの手順に従い、実際にやってみたいと思います。

作業は以下のような流れになります。

  • 1.Onelogin側: AWS SSOをアプリケーションに追加する
  • 2.AWS側: AWS SSO にて外部IdP、SAMLの設定を行う
  • 3.OneLogin側: 設定を完了させる
  • 4.(オプション)OneLogin側: ユーザー・ロールを作成・設定する
  • 5.動作確認

1.Onelogin側: AWS SSOをアプリケーションに追加する

まずはOneLoginの管理者レベルのユーザーでOneLoginにログインし、管理画面を開きます。 (デフォルトではOneLoginのロゴ部分を企業ロゴに変更しています。下部にPowered by OneLoginと記載あり)

管理画面にてアプリケーションタブを開き、 右側の Add App から検索し、新しいアプリケーションとして AWS Single Sign-on を追加します。

対象アプリケーションのInfoタブが開かれるので、右上 More Actions から SAML Metadata をダウンロードし、Save を押します。 これにて、アプリケーション一覧の中に AWS Single Sign-on が追加されました。

2.AWS側: AWS SSO にて外部IdP、SAMLの設定を行う

AWSのマスターアカウントのAWS SSO画面を開きます。

設定にて、IDソースの変更を行います。

IDソースで「外部IDプロバイダー」を選択し、IDプロバイダーのメタデータ箇所で、先ほどダウンロードした OneLogin のメタデータをアップロードします。

IDソース変更の最終確認画面で ACCEPT と入力し実行します。

数秒後に、IDソースを AWS SSO から外部IDプロバイダーに変更されたことが確認できます。
続いて、IDのプロビジョニングを手動から自動へ変更します。

すると、SCIMエンドポイントとアクセストークンが表示されるので、これを2つともコピーして手元に残しておきます。

次に、「認証 SAML2.0」の詳細を表示から、以下の画面で AWS SSO 発行者 URL と AWS SSO ACS URL を2つとも同じくコピーし手元に残しておきます。

以下4つの情報をこの後の OneLogin 側で使用します。

  1. SCIMエンドポイント
  2. アクセストークン(SCIMベアラートークン)
  3. AWS SSO ACS URL
  4. AWS SSO 発行者 URL

3.OneLogin側: 設定を完了させる

OneLoginの画面に戻ります。

AWS Single Sign-on画面のConfigurationタブにて、先ほどの4つの情報をペーストし、 API Connectionを Enable に変更し、Save します。

その際、公式ブログに記載がありますが、以下ご注意ください。

  • SCIMベースURL(SCIMエンドポイント)–末尾にスラッシュ '/'がある場合は、必ず削除してください

次に、Provisioningタブにて、Enable provisioning にチェックをつけて、Save します。

すでに OneLogin 側にてユーザー・ロール周りの作成・設定が完了している場合、Usersタブ に表示されているユーザーのステータスを Pending から Provisioned になるよう変更し、右上から、Sync Logins と Reapply entitlement mappings を実行し、AWS SSO 側にユーザー情報(グループを含む)を送ります。 (完了していない場合、次の手順4を先に行ってください)

4.(オプション)OneLogin側: ユーザー・ロールを作成・設定する

まだ、ユーザー・ロール周りの設定が完了していない場合、こちらを準備します。(手順詳細は割愛します)

  • Users
    • Admin Taro(管理者ユーザーのサンプルとして)
    • Dev Jiro(開発者ユーザーのサンプルとして)
  • Role1
    • Name: AWSSSO-AdminGroup
    • Role Apps: AWS Single-sign on
    • Admin Taroを登録
  • Role2
    • Name: AWSSSO-DevGroup
    • Role Apps: AWS Single-sign on
    • Dev Jiroを登録

ユーザー画面

ロール画面

グループについて

前提として、公式のトラブルシュートに以下とあります。

  • OneLoginの「Groups」は自動ではプロビジョニングされない
  • プロビジョニングされたGroupは、OneLogin側で設定を削除してもAWS側では削除されない(不要な場合、AWS側で削除する必要がある)

グループの設定方法として以下を実施します。

今回グループは、OneLoginの「Groups」ではなく「Roles」を利用し、AWS側にグループを作成します。

  • Applications/Parameters で Groups を加える
  • Applications/Rules で Rule を作成する
  • 再度、Provisioning,Resync,Remapを実行する

まずは、以下の通り ApplicationsからAWS SSOを選択し、ParametersタブからGroupsを選びます。

そして、Include in User Provisioning にチェックをつけて Save します。

次にRulesについては、Rulesタブを開き、新しくルールを作成します。

AdminGroupの場合、Actionsで Set Groups in AWS Single sign-on を選択、Map from Onelogin がデフォルトで選ばれているのを確認し、
For each role with value that matches (AdminGroup) という文章になるようにします。

そうすると「role で AdminGroup という文字列にマッチするユーザー(今回の場合、AWSSSO-AdminGroupに所属するAdmin Taro)に、AdminGroup という グループ名をつける」という形になります。
※ DevGroup の場合は matches の後を (DevGroup) にすれば、AWSSSO-DevGroup が対象となり、Dev Jiro に DevGroup というグループ名がつけられます。

あとは、ユーザープロビジョニング時に行った Provisioning,Resync,Remap を実行すれば、AWS SSO側にプロビジョニングされるはずです。

5.動作確認

AWS SSO側を確認します。

ユーザータブを開くと、OneLogin側で作成したユーザー2名が登録されていることが確認できます。

ちなみにマッピングされた情報は以下となります。

  • ユーザー名: OneLoginのメールアドレス ←デフォルトの設定では、OneLoginのUsernameではない点に注意
  • プライマリEメールアドレス:OneLoginのメールアドレス
  • 名: OneLoginの名
  • 姓: OneLoginの姓
  • 表示名: OneLoginの姓名

また、グループも作成され、それぞれ1名ずつユーザーがマッピングされていました。

こちらのユーザー・グループに、事前に作成しておいたアクセス権限セット、1つのAWSアカウントと紐付けを行います。(ここも手順は割愛します)

それでは、実際に Admin Taro として、OneLogin からログインしてみます。

OneLogin のログイン画面で ID/PW を入力すると、AWS SSO が表示されています。

こちらを開くと、新しいタブで AWS SSO 画面が立ち上がりました。

先ほど登録したAWSアカウントで、登録したアクセス権限セット(今回は NewPowerUser2)のハイパーリンクが表示されました。

無事、マネジメントコンソールにログインすることができました。

検証は以上です。

 おまけ)OneLoginと統合後の既存AWS SSO ユーザーはどうなる?

  まずAWS SSOコンソールのユーザー詳細を見てみると以下の通り、ステータスは「有効」になっています。ユーザーの無効化も可能です。ちなみにこのユーザーがOneLogin経由で作成されたユーザーでないとわかる点として、作成者・更新者が「手動」になっています。OneLogin との SCIM 連携の場合、ここが「SCIM」と表示されます。

AWS SSOのユーザーポータルURLを開いてみました。OneLogin統合前は AWS SSOのログイン画面が表示されていましたが、現在では OneLoginログイン画面へリダイレクトされました。

結論としては、OneLogin統合後、既存SSOユーザーは有効化ではあるものの、SSOログイン画面がOneLogin側へ遷移するようになり認証できない状態になります。また、ステータスも無効化できるので当面使用しないのあれば無効化しておけば良さそうです。

参考情報

What is AWS Single Sign-On? - AWS Single Sign-On

OneLogin - AWS Single Sign-On

Customer Service Portal - OneLogin