AzureADを利用してガルーンクラウドにシングルサインオンする(ドメイン参加端末のみアクセス許可)
こんにちは。
この間、前職の先輩社員から下記みたいなことってできるよね?
と相談を受けました。せっかくなので先輩社員とともに検証してみましたのでその内容を記録します。
※実際に構築する際のお役にたてば何よりです!
- ガルーンクラウドと Microsoft365 にそれぞれシングルサインオン
- ドメイン参加している端末のみアクセス可能
- Windows にログオンしたらガルーンクラウドと Microsoft365 へのシングルサインオンも完了させる
これを利用するために今回AzureADを利用しています。
大まかに以下の内容を利用します。
- オンプレADと AzureADをAzureADConnect で同期設定( Hybrid Azure AD Join )
- AzureADにてガルーンクラウドにシングルサインオン設定
- ガルーンクラウドに対してAzureADの条件付きアクセスを設定
イメージだと下図の感じです。
※こちらの環境の都合上 Intune とか入ってしまっていますが無視してください。
- 必要ライセンス
今回必要なライセンスは Azure AD Premium P1 以上です。
内訳は下記の感じです。
1. オンプレADと AzureADをAzureADConnect で同期設定( Hybrid Azure AD Join )
→AzureAD Freeで可能 ( SLAはないけど )
2. AzureADにてガルーンクラウドにシングルサインオン設定
→AzureAD Freeで可能 ( SLAはないけど )
3. ガルーンクラウドに対してAzureADの条件付きアクセスを設定
→AzureAD Premium P1以上が必要
- 今回の前提
今回の構成ではHybrid AzureAD Join端末が必要となります。
Hybrid Azure AD Join構成は過去に方法を書いたので今回は省略します。
また、下記に記載していますが、オンプレADのExtensionAttribute1という値を利用しています。
この値をAzureADに同期する設定をAzureADConnect内で実施していますが、今回は手順を省略しています。
今回のブログでは上記が完了した前提で、以下2点を記載します。
1. AzureADを利用してガルーンクラウドとシングルサインオンを設定
2. AzureADの条件付きアクセスを設定
- 事前検討事項
シングルサインオンを実施する際にだいたいいつも検討することになると思いますが、
以下を検討しましょう。
1. ガルーンクラウドにアクセスしてよい人をどのように制御するか
2. AzureADとガルーンクラウドのIDが違う場合、どのようにマッピングするか
3. AzureADを経由せず、ガルーンクラウドにアクセスさせてよいか
4. どの認証プロトコルを利用するか
今回はそれぞれこんな感じで対応します。
1. AzureAD内でユーザーを指定
→実運用だとグループとかで指定したほうがよいかと!
2. 以下の図の通りマッピング
※AzureADのIDと利用SaaSのIDが違うってことが多々あるため、、、
今回はExtension Attribute1という場所を使ってサインインするようにします。
3. 今回はガルーンクラウドに直接アクセスもOKにします。
※NGにするときもチェックボックスにチェック入れるだけなので
4. ガルーンクラウドはSAML2.0に対応しているのでSAML認証で設定します。
- 設定方法
AzureADポータルよりエンタープライズアプリケーションを開きます。
新しいアプリケーションをクリック
検索画面にKintoneと入力し、表示されたKintoneをクリック
※ガルーンクラウドなのになんで?と思うかもしれませんが、Kintoneとガルーンクラウドは共通のポータルになっているようだ。。。。
これってつまりガルーンクラウドのSSO設定したらKintoneにもSSOされるってことでは・・・・??逆も然り・・・笑
まあいいか・・・・(知らん顔)
名前を入力して作成をクリック
ユーザーとグループの割り当てをクリック
ユーザーまたはグループの追加をクリック
選択されていませんをクリック
対象のグループやユーザーを選択
割り当てをクリック
ガルーンクラウド側に移り、cybozu.com共通管理をクリック
その後、ログインをクリック
SAML認証を有効にするにチェックを入れる
Service Prividerメタデータのダウンロードをクリックしてxmlファイルをダウンロード
AzureAD側に戻り、メタデータをアップロードするをクリックして上記でダウンロードしたxmlファイルをアップロード
※エンティティIDは*がデフォルトで入りますが、*だとエラーになるのでドメイン名に修正
なお、一回エラー起きると保存できなくなるのでやりなおし、、、笑
ユーザー属性とクレームの編集をクリック
必要な要求の値をクリック
ソース属性から今回ガルーンクラウドにアクセスするときに利用する値の場所を選択して保存
user.msds_cloudextentsionattribute1を選択しました。
証明書(Base64)のダウンロードをクリックして証明書をダウンロード
ログインURLとログアウトURLをメモ
ガルーンクラウド側の画面に戻り、SSOエンドポイントURLにログインURLをログアウト後に遷移するURLにログアウトURLを入力し、先ほどダウンロードした証明書をアップロードして保存
ちなみにこれにチェックボックスいれるとかならずAzureADからサインインするように制限できます。
ただし、ドキュメントみると、これにチェックいれるとKintoneのAPIが使えなくなるみたいなこと書いてあった。。。。。まじっすか!!!
検証してないのでほんとかわからないのですが、、、、一応
AzureADに戻りTestをクリック
対象ユーザーを選択
無事入れました。
AzureADから発行するURLだとここがログインURLになっているのですが、
ガルーンクラウドはSP-Iniciate対応なので、「https://xxx.cybozu.com/g/」でアクセスすれば、予定表画面にアクセス可能です。
ここまでで、シングルサインオンの設定は完了!
ここからは条件付きアクセスを使ってHybridAzureADJoinした端末からのみアクセス可能にします。
エンタープライズアプリケーション内の作成したアプリから条件付きアクセスを選択し新しいポリシーをクリック
※先ほどまでと同じブレードです。
名前を入力
今回はHybrid AzureAD JoinのみOKとするので、こんな設定にしました。
本来はアクセス可能としたグループとかを割り当てることになるかと思います。
※アクセスできなくなった時のことを考えて対象外のユーザーを作成しておくことも重要
また、今回はとりあえずで作成したので考慮していませんが、
この設定をしていないので、スマホからのアクセスが不可となります。
スマホからもアクセスしたい場合、この条件から対象外として、スマホ用の条件付きアクセスを作成すると良いと思います。
※Intuneにて準拠済みならOKみたいなのをスマホ用として作成するとよいかも!
Intuneライセンスいるけどね。。。。
設定が終わったら、作成ボタンをクリックしますが、デフォルトだとレポート専用となっています。
※レポートは出すけど、実際にブロックしたりしないよってことね!
慎重にやるならこれで稼働したのちオンに切り替えるとよいと思います。
ポリシーが作成されたのち、ちゃんと適応されるか確認するために、What ifを利用します。
条件を指定してWhat ifを実行すると
どのポリシーが適用されるか確認できます。
実際にアクセスすると
ブロックされました!!!
Hybrid Azure AD Join端末から試すと!
WindowsにサインインしただけでAzureADのログオン画面もでることなくアクセスできました!
ちなみに今回Chromium Edgeで実施していますが、Chromeとかだとデフォルトはこうなるのでご注意ください。
- まとめ
条件付きアクセスとかを色々変えると様々なパターンのアクセス条件が作成できるので、ライセンスお持ちの方はぜひ利用してみては??
- 最後に!
Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!