ユーザープロビジョニング無しで Okta から Google Workspace への SSO を実装する
はじめに
以前、Okta から Google Workspace に SSO を実現する方法について以下記事でまとめました。
上記記事では SAML とユーザープロビジョニングによって SSO を実現しています。
ユーザープロビジョニングにより Okta で管理するユーザーやグループを Google Workspace に連携できます。これにより、ユーザーやグループは Okta によって一元管理できるメリットがあります。
しかし、ユーザーがすでに Google Workspace 上に Google アカウントを保持し、Okta ユーザーと競合する といったケースにおいてはユーザープロビジョニングを設定しないという方法を取ることもできます。
本記事では ユーザープロビジョニングを設定せずに Okta から Google Workspace への SSO を SAML で構成する方法 について記述します。
なお、Okta と Google Workspace のユーザープロビジョニングに対するアプローチの詳細は以下公式ドキュメントをご参照ください。
ユーザープロビジョニングを設定しないことによるデメリット
ユーザープロビジョニングを設定しない場合、以下のようなデメリットがあります。
- Google Workspace 上のユーザー作成・削除を手動で行う必要がある
- Okta で新規ユーザーを追加しても、Google Workspace 側には自動で反映されない
- ユーザー情報(姓名、メールアドレスなど)の変更も両方で個別に対応する必要がある
- Okta でグループを管理していても、Google Workspace のグループとは連携されない
これらのデメリットを考慮すると、基本的にはユーザープロビジョニングを設定することをお勧めします。 ただし、前述したとおり既存の Google アカウントとの競合を避けたい場合など、特定の状況においてはプロビジョニングなしの構成も選択肢となります。
実装してみた
以前の検証 と同様に Cloud Identity を利用します。手順は Google Workspace と同様です。表現上の混乱を避けるため、以降の手順では Cloud Identity の操作を 「Google Workspace」 と統一して表現しますのでご了承ください。
Okta には事前にユーザー名(login) が murata.kazuhiro.sso.only@example.com というユーザーを作成しておきます。

このユーザー名という情報が Okta にログインする際のユーザー名となります。今回は Google Workspace に SSO する際、このユーザー名と Google Workspace の Google アカウントをマッピングさせて連携します。
なお、上記の設定ではプライマリメールアドレス(email)も同一情報ですが、本記事の構成では、このプライマリメールアドレスを Google アカウントにマッピングしているわけではないことはご注意ください。(プライマリメールアドレスをマッピングすることも可能です)
また、本検証ではそれぞれ以下の権限で設定をしていきます。
Okta: スーパー管理者
Google Workspace: 特権管理者
1. Google Workspace ユーザー作成
ユーザープロビジョニングは設定しないため、Okta から SSO 連携するユーザーを Google Workspace に手動で作成する必要があります。
Google Workspace の Admin Console より新しいユーザーを作成します。

本手順では Okta の「ユーザー名(属性名=login)」 を Google Workspace の 「メインのメールアドレス」と SAML で連携させます。そのため、Okta のユーザー名と Google Workspace のメインのメールアドレスは完全一致させてください。 本手順においては、それ以外の姓名などの情報は SAML において連携させませんので、完全一致させる必要はありません。ここでは管理上の混乱を招くため姓名も合わせて設定します。
Okta での認証を経て SSO するため、Google Workspace でパスワードを管理する必要はありません。デフォルトで発行されるパスワードのコピーや、初回ログインによるパスワード変更などの対応は不要です。
また、上記の理由から、SSO によるログイン後にパスワード変更を求められないよう 「パスワードの変更の要求」設定を無効化 しておくとよいでしょう。
[ディレクトリ] -> [ユーザー] から対象ユーザーを選択し、[セキュリティ] タブをクリックします。

[パスワードの変更の要求] をクリックし、[オフ] にして [完了] をクリックします。

2. Google Workspace グループ作成とメンバー追加
本手順では SAML による SSO の対象を特定の Google グループに限定させます。
ここでは sso.only.group@example.com という Google グループを作成しました。前述の手順で作成したユーザーを Google グループに追加します。

3. Okta SSO 設定
Okta で Google Workspace への SSO 設定を行います。
Okta Admin Console にログインし、[アプリケーション] -> [アプリケーション] から [アプリカタログを参照] をクリックします。

検索窓に「google workspace」と入力し、検索結果から [Google Workspace] を選択します。

[+ 統合を追加] をクリックします。

[アプリケーションラベル] にシングルサインオン連携するアプリケーションの識別名を入力します。今回は Google Workspace (SSO Only) としました。
[GoogleAppsの会社のドメイン] には Google Workspace で管理するドメインを example.com のように入力します。
その他設定はデフォルトのままとし、[次へ] をクリックします。

サインオン方法を [SAML 2.0] にします。

[SAML 2.0] の設定項目の下部にある [設定手順を表示] をクリックします。

遷移したページの半ばあたりにある以下の項目は後ほど Google Workspace の SAML 連携設定で利用しますので、各種設定値をコピーしておきます。
- IdPエンティティID
- サインインページのURL
- サインアウトページのURL
- パスワード変更のURL

また、[検証証明書] のリンクをクリックしてダウンロード証明書をダウンロードしておきます。デフォルトで okta.cert という名前でローカルにダウンロードされます。こちらも後ほど Google Workspace の SAML 連携設定で利用します。
Okta Admin Console の画面に戻り [完了] をクリックします(残設定はありますがここで一旦完了しておきます)。
なお、[アプリケーションユーザー名の形式]を 「Oktaユーザー名」 としておくのが重要です。 この設定は、Okta のどの属性が Google Workspace の「メインのメールアドレス」にマッピングされるかを指定するものです。もし「Oktaユーザー名」ではなく「メールアドレス」を Google Workspace の「メインのメールアドレス」にマッピングしたければ、ここでは「メールアドレス」を選択します。

最後に [割り当て] タブを選択し、SSO 対象のユーザーをアプリケーションに割り当てます。複数ユーザーの SSO を実装する場合はグループにユーザーを追加して割り当てを行うのが良いでしょう。

4. Google Workspace SAML 設定
次に Google Workspace 側で SAML による Okta との連携設定を行います。
Google Workspace の Admin Console にログインします。
[セキュリティ] -> [認証] -> [サードパーティの IdP による SSO] を選択し、[サードパーティの SSO プロファイル] 項目の [SAML プロファイルを追加] をクリックします。

[SSO プロファイル名] を入力します。ここでは Okta とします。

「3. Okta SSO 設定」の手順でコピーした情報を [IdP の詳細] の各項目に入力します。

[確認用の証明書] で [証明書をアップロード] をクリックし、「3. Okta SSO 設定」の手順でダウンロードした検証証明書(okta.cert)をアップロードします。アップロード後、ページ最下部にある [保存] をクリックします。

SAML プロファイル保存後に表示される画面で [エンティティ ID] として以下の URL が表示されます。<RPID> に該当する識別子はこの後の手順で利用するためコピーしておきます。
https://accounts.google.com/samlrp/<RPID>

[セキュリティ] -> [認証] -> [サードパーティの IdP による SSO] を選択し、[SSO プロファイルの割り当ての管理] 項目の [管理] をクリックします。

今回の検証では Google グループ SSO Only Group に所属するユーザのみを Okta によるシングルサインオンの対象とするため、[グループ] から [グループを検索] で SSO Only Group を検索して選択します。
[SSO プロファイルを選択] で先ほど作成した SAML プロファイルである Okta - SAML を選択し、[Google でユーザー名の入力を求めた後、このプロファイルの IdP ログインページにリダイレクトする] をクリックします。その後、[オーバーライド] をクリックします。
この設定により SSO Only Group に所属するユーザが Google にログインを試みると SAML プロファイルで設定した URL にリダイレクトされ、SAML による認証のプロセスが行われることとなります。

5. Okta RPID の更新
最後に改めて Okta に戻り、前述の手順でコピーした RPID を設定します。
Okta Admin Console にログインし、[アプリケーション] -> [アプリケーション] から Google Workspace (SSO Only) を選択します。
[認証] タブを選択し、[編集] をクリック、[高度なサインオン設定] で [RPID] に前述の手順でコピーした RPID を入力し、[保存] をクリックします。

確認してみた
アカウントなしで Chrome を起動し Google Drive にアクセスします。メールアドレスを入力します。

Okta のログイン画面にリダイレクトされます。ユーザー名とパスワードを入力してログインします。

再び Google にリダイレクトされ本人確認と利用規約に関する画面を進みます。


Chrome へのログインをせずに [アカウントなしで Chrome を使用] に進みます。

Google Drive にアクセスできました。

おわりに
本記事では、ユーザープロビジョニングを設定せずに Okta から Google Workspace への SSO を SAML で実現する方法について説明しました。
この構成は、既存の Google アカウントとの競合を避けたい場合や、一時的な SSO 環境を構築したい場合に有効です。ただし、ユーザー管理の運用負荷が増大するため、長期的な運用を考慮すると、基本的にはユーザープロビジョニングを設定することをお勧めします。






