第2回:Oktaで他サービスとの連携をやってみた(2)試しにCybozuと連携

試しにサイボウズ社のサービスと、Oktaの検証環境を連携させてみる 

Oktaの画面や操作にも慣れてきたところで、とりあえず何か他サービスと連携させてみようということで、サイボウズ社のSaaSのサービス(Garoonやkintoneなど)との連携を、試してみました。 (Microsoft 365との連携を試そうかなと最初は思ったのですが、同僚からMicrosoft 365でシングルサインオンをやるためには独自ドメインが必要ですよということを聞いていたのを思い出し、それが面倒だったのでサイボウズで試してみることにしました。 )

まずは、以下サイトでサイボウズのサービスの30日間トライアル環境を入手します。 

https://www.cybozu.com/jp/service/com/trial/

次に、Okta側で「Cybozu」の「アプリ統合」(App Integration)を実施します。Oktaでは他サービス/システムとOktaを連携させることを「アプリ統合」と言うようです。 

実際にやってみると、あまりの簡単さに驚きました。 

左のメニューで[Applications]-[Applications]の画面を開き、[Browse App Catalog]をクリックします。そうすると、予めOktaで用意されている外部サービスとの「アプリ統合」のカタログが表示されます。 

事前に用意されたアプリ統合テンプレートのカタログ

検索欄で「Cybozu」を検索すると「Cybozu(cybozu.com)」という「アプリ統合」が見つかるので、それを選択し右上の「Add Integration」をクリック。 

Add Integrationをクリック

「Add Cybozu(cybozu.com)」のダイアログで入力が必要なパラメータは、トライアルで取得したサイボウズの環境のドメイン名のみ。「Done」をクリックすれば、Okta上に「Cybozu(cybozu.com)」のアプリケーションが作成されます。 

Oktaは予め用意された外部サービスとの連携用のコネクタが豊富にあり、連携が簡単と聞いていたのですが、実際にやってみると確かにすごく簡単だということがわかります。 

先ほど、「Cybozu」を検索したカタログの画面では、トップにMicrosoft 365やSalesforce、ServiceNowといったメジャーなSaaSの「アプリ統合」を見ることもできました。カタログのメニューの「全ての統合機能」の横には7000以上の数字があり、7000種類以上の豊富なコネクタが用意されていることがわかります。 

これからやること 「プロビジョニング」と「SSO」 

ここでいったん手を止めて、この後やろうとしていることの整理します。 

OktaとCybozuのアプリ連携でやりたいことを以下の二つのことになります。 

Okta側でCybozuのユーザー管理をできるようにする 

Okta側でCybozuを使用するユーザーを作成すれば自動的にCybozuにもユーザーが作成され、Okta側でCybozuを使用しない設定にしたユーザーはCybozu側でも失効されるようにします 

シングルサインオン 

Cybozuへのログイン認証はOkta側で行い、その代わりにCybozuのログイン認証は不要とします 

前者のIDaaS側で統合管理するユーザーをアプリへ自動的に同期連携することを、業界では「ユーザープロビジョニング」と言うようで、IDaaS関連の文脈の中では「ユーザー」を省略し単に「プロビジョニング」と言われることも多いようです。ちなみに、IDaaSに詳しい私の同僚は「プロビジョニング」をさらに省略して「プロビ」と言っています。 

後者のシングルサインオンは、よく「SSO(エスエスオー)」と記述されます。(口に出して発音してしまうと対して短縮されていませんが。 )

同じIDaaSと他アプリの連携でも、プロビジョニングとSSOは、必ずセットというわけでなく、別物としてそれぞれ考えた方が良さそうです。プロビジョニングはどちらかというとシステム管理者目線の話でユーザーの管理を統合して効率化することが目的、SSOはどちらかというと利用者目線の話でシステムログイン時の利便性向上が目的になります。 

プロビはやるけどSSOはやらない :システム間でユーザーの同期はされているけど、利用者は各システムにそれぞれログインが必要 

SSOはやるけどプロビはやらない :管理者がそれぞれのシステムに手作業でユーザーを作っているが、利用者は一つのシステムにログインすれば他のシステムはログイン認証がスルーされる 

というのが、いずれも論理的には成立します。 

Okta→Cybozuのユーザープロビジョニング 

まずは、Okta→Cybozuのユーザープロビジョニングの設定を試してみました。 

設定は、初めての私でも全然悩まずに行うことができました。 

[Applications]-[Applications]の画面でアプリ「Cybozu(cybozu.com)」を開いた画面で、さてプロビジョニングをやるかと[Provisionig]のタブをクリックすると、目の前に「Cybozu(cybozu.com):構成ガイド」のリンクが! 

親切に構成ガイドが!

「なんという親切!」と思いながらリンクのPDFファイルを参照して作業を行ったら迷わずプロビジョニングの設定を行うことができました。 

ちなみに、参照した構成ガイドPDFファイルのURLは以下となります。 

https://www.okta.com/sites/default/files/2022-03/cybozucom_SCIM_Setting_Guide_JP.pdf

Cybozu側の作業はAPIトークンを発行するだけ。後はOkta側の設定作業になります。プロビジョニングというのは、同期される側は口を開けて待っているだけなんだなと思いました。 

検証では、Okta上で「kintone・Garoon利用グループ」「サイボウズOffice・メールワイズ利用グループ」の二つのグループを作り、その名の通り、前者のグループのメンバーはkintoneとGaroonのみを使用できるように設定、後者のグループのメンバーはサイボウスOfficeとメールワイズのみを使用できるように設定をしてみました。 

実際に試してみてわかったことを以下に箇条書きします。 

  • 上記で、両グループに所属するメンバーはCybozuの4つのサービスを使えるようにはならない、優先順位の高いグループの設定が適用される。そのため、4つのサービスを使えるユーザーを作りたかったら別途「kintone・Garoon・サイボウズOffice・メールワイズ利用グループ」を作ってそこにメンバーを入れる必要がある。 
  • Oktaでグループにメンバーを追加すると、Cybozu側で自動的にユーザーが作成される。グループからメンバーを除外するとCybozu側ではユーザーは削除されず「停止」状態になった。(Cybozuのヘルプによると「停止」されたアカウントはライセンス利用数にカウントされないとのこと) 
  • Okta上でCybozuを利用するグループのメンバーをディアクティベートしても、Cybozu上では「停止」になる。該当ユーザーを再度アクティベートしたところ、今回の検証ではCybozu上でアカウントは自動的に「使用中」に戻った。これは、今回の検証では、Okta上でグループに対してCybouzuアプリをアサインしているためと考えられる。Oktaのマニュアルによるとディアクティベートすると全てのアプリのアサインは削除される。そのため、通常再度アクティベートした際にアプリへのアサインし直しが必要。しかし、Oktaではユーザーをディアクティベートした際グループのメンバシップはそのまま残る仕様であるため、所属グループにアサインされたアプリは、再アクティベートのタイミングで自動的に再アサインされる。Oktaで、ユーザーに使用可能なアプリを紐づける際に、ユーザーに直接アプリをアサインすることも、ユーザーの所属グループにアプリをアサインすることも可能だが、この再アクティベート時の動作はグループにアサインした場合のメリットの一つと考えられる。 
  • 試しに、Cybouzu側で手動でユーザーを作成し、その後Cybozu利用ユーザーとしてOkta側で同名のユーザーを作成したら、「Conflict. Errors reported by remote server: [SLASH_SC03] The specified resource already exists. User resource already exists」ということでプロビジョニングがエラーとなった。この動作については、実務で結構困るのではないかという疑問を感じたので、今後さらに学習が必要な部分になりそう。もし、既存のCybozu環境を、あとからOktaでID統合してプロビジョニングをしたい場合に、Cybozuの既存のアカウントは使用できず作り直しが必要ということになってしまうと、現実的に難しいと思うので。 
  • 試しに、プロビジョニングされたCybozu側のユーザーをCybozu側で削除してみた。何もしなくても差分が再同期されて自動的にCybozuにユーザーが再作成されないかなと期待したのだが、そういった動きはしなかった。一度Okta側で該当ユーザーをCybozuを利用するグループから除外し再度グループに追加するということをしたら、Okta側は再度該当ユーザーのプロビジョニングによる再作成をしようとしてくれているようだか、Cybozu側のエラーでエラー(Error while creating user ~: 520. Errors reported by remote server: [CB_IL02] 不正なリクエストです。)となりCybozuユーザーは再作成されなかった。上記構成ガイドのPDF資料に「同期後のログイン名の変更や cybozu.com ユーザーの再作成には対応していません。対応するには Okta ユーザーの再作成が必要です。 」と記述があったので、このことか?と思い試しにOkta上で該当ユーザーを削除し、同名のユーザーを再作成したらプロビジョニングが出来てCybozu側にユーザーが再作成された。 

OktaでCybozuのシングルサインオン 

プロビジョニングの次は、シングルサインオンの設定を行ってみました。 

やり方の情報を探して、Googleで「Okta サイボウズ シングルサインオン」で検索をしたら、すぐに「サイボウズ SSO設定 日本語版 設定マニュアルガイド」というページが見つかりました。 

https://www.okta.com/jp/blog/2021/04/cybozu-SSO-guide/

こちらのページに「Cybozu 用に SAML2.0 を構成する方法」というPDF資料が掲載されていましたので、資料の手順通りにやれば、こちらも迷わず簡単に設定をすることができました。 

資料のURL 

https://www.okta.com/sites/default/files/2021-08/Cybozu_SSO_Setting_Guide_JP_v2.pdf

こちらはプロビジョニングと逆で、Okta側でやることはアプリのSAMLのSSOを有効にするだけで、主にCybozu側でOktaから取得した情報を設定する手順となります。 

資料の中の手順 「6. Sign On タブから View Setup Instructions をクリックすると、設定ガイドが開かれ、 Login URL(Identity Provider の SSO エンドポイント URL)、Logout URL(cybozu.com からのログアウト後に遷移する URL)、Certificate(Identity Provider が署名に使用する公開鍵の証明書)に、各環境に合わせた設定値が表示され ます。これらは、Cybozu 側の設定で必要な値となります。」の部分が少し分かり辛いので補足のスクリーンショットを貼ります。 

Sign Onタブを選択し、画面を下にスクロールする
画面を下にスクロールすると右にView SAML setup instructionsがあるのでクリック
この画面でまた下にスクロール

設定した後に、Cybozuのログイン画面にアクセスすると、Oktaの認証を求められるようになり、Oktaの認証をパスしたらCybozuにログインできるようになりました。 

CybozuにアクセスするとOktaの認証を求められるようになる
Oktaの認証をパスすると、Cybozuにログインできた

ちなみに、設定のPDF資料の中で「SAML(サムル)2.0」という言葉が出てきますが、これはシングルサインオンを実現するための仕組みの一つのようです。シングルサインオンを実現する方式は、複数の方式がありその中の方式の一つが「フェデレーション方式」(他には「エージェント方式」とか「リバースプロキシ方式」などあるらしい) 。そして、「フェデレーション方式」を実現する仕組みも複数ある中で、一番メジャーな仕組みが「SAML」ということのようです。 

つまり、概念としての大きさのイメージは以下のような感じ。 

シングルサインオン(SSO) > フェデレーション > SAML 

OktaのダッシュボードアイコンからのCybozuログイン(IdP-initiated)は未対応 

SAML認証のシングルサインオンでは、ユーザーが対象システムにログインするまでの方法が 以下の2種類あるそうです。 

IdP-initiated :ユーザーがOktaのようなIDaaSにまずログインし、IDaaSのダッシュボード画面のアイコン等から自身が利用可能な連携システムにアクセスする(その際認証は求められない) 。IdPは、IDプロバイダの略。

SP-initiated :ユーザーがシングルサインオン対象のシステムに直接アクセスする。するとIDaaSの認証画面にリダイレクトされるので、そこで認証にパスすれば対象システムにログインが出来る(前述の方法)。SPは、サービスプロバイダの略。 

先ほど、SP-initiatedは上手くいきましたので、IdP-initiatedも試してみようと検証用ユーザーでoktaのダッシュボードにログインし、Cybozuのタイル(アプリにユーザーをアサインした時点で自動で作成されていました)をクリックしてみましたが、エラーになってしまいました。 

Okta DashboardでCybozuのアイコンをクリックする
上記のようなエラーとなる

なんでだろうと思ったのですが、上記「サイボウズ SSO設定 日本語版 設定マニュアルガイド」をよく確認すると、しっかり以下の記述がありました。 

Okta / Cybozu SAML 統合は現在、次の機能をサポートしています。  

• SP-initiated SSO 

逆に言うと、IdP-initiated SSOはサポートされていないことですね。

CybozuはIdP-initiatedのSSOはサポートしていないということで、ユーザーのOktaダッシュボードに使えないタイルが表示されているのは良くないので、表示されない設定に変更しました。OktaのCybozuのアプリケーション設定画面で、「Do not display application icon to users」のチェックをオンにすると、ユーザーのダッシュボードからCybozuのタイルを消すことができました。 

また、おまけになるのですが、このCybozuのようにIdP-initiatedをサポートしないアプリケーションも、あたかもIdP-initiatedのようにユーザーがOktaのダッシュボードからアクセスできるショートカットを作成する方法が以下のページに掲載されていました。 

こちらも、ページ記載の手順通り実施したら、簡単に出来る内容でした。 

https://www.okta.com/jp/blog/2021/06/sp-initiated/

以上、第2回はOktaでCybozuを使用して実際にプロビジョニングとSSOを試してみました。 

次回以降の予告 

IDaaSの主な3つの機能 

・ID統合管理 

・SSO 

・アクセス制御の強化 

今回、ID統合管理(プロビジョニング)とSSOを試してみましたので、次回第3回ではアクセス制御を強化する機能を試してみようと考えています。(今のところ) 

第2回:Oktaで他サービスとの連携をやってみた(2)試しにCybozuと連携” に対して1件のコメントがあります。

コメントは受け付けていません。