こんにちは!たつみんです!
前回Google Workspace(以下、GWS)との連携について記事を公開しましたが、今回はGoogle Cloud Platform(以下、GCP)とのSSO連携について記事にします。
実はGWSとGCPは同じGoogleアカウントを利用している場合はOkta上でSSO連携設定をする際に特殊な操作が必要となります。
今回はその内容に触れながら最終的にGWSもGCPもSAMLによるSSOを実行できるようにします。
はじめに
OktaとGCPの連携では以下の点に注意が必要です。
- GCPとGWSのアカウントが同一ですでにGWSがSAML連携している場合はSAML Signing Certificatesを同一にする必要がある
- SAML Signing Certificatesを同一にするにはOkta APIの操作が必要となる
- 作業中に新しいSAML Signing Certificatesが発行されるためGWSの管理画面でアップロード済みの証明書を更新する必要がある
SAML署名証明書のことで、IdPとSPの間でこの証明書を利用した署名でSAMLリクエストを検証しています。今回Okta上のGWSアプリとGCPアプリで同じアカウントを利用するため、SAML Signing Certificatesが異なると認証が正しくできなくなってしまいます。そのため同一にする作業が必要となります。
このブログ記事ではOkta APIの操作の実行環境として、以下のGoogle Chromeの拡張機能rockstarを利用します。
設定方法
GCPアプリケーション作成
- Okta管理画面>Applications>ApplicationsからBrowse App Catalogをクリックします。
- Google Cloud Platformを検索しAdd integrationをクリックします。
- Your Google Apps company domainにGWSで設定しているプライマリドメインを入力し、Nextをクリックします。
- Sign-On OptionsでSAML2.0を選択し、Default Relay Stateに
https://console.cloud.google.com
を入力し、Doneをクリックします。
GWSアプリケーションのSAML Signing Certificates再作成と反映
- Okta管理画面からGWSアプリケーションのSign Onタブを開き、下部のSAML Signing Certificates部分を確認します。
以下のようにGWSアプリケーションを作成したタイミングでSAML Signing Certificatesが作成されActiveとなっています。 - ブラウザのURL部分を確認し、instance/以降の部分のAppIDを確認し、GWSのAppIDとして手元でメモしておきます。
https://<YourOktaOrgURL>-admin.okta.com/admin/app/google/instance/<AppID>/#tab-signon - rockstarのAPI ExplorerからPOSTを選択し、以下を入力し、Sendをクリックします。
/api/v1/apps/<GWSのAppID>/credentials/keys/generate?validityYears=10
- エラーなく完了するとkidが表示されます。このkidは後ほど利用しますので手元にメモしておきます。
- rockstarのAPI ExplorerからPUTを選択し、
/api/v1/apps/<GWSのAppID>
を入力します。
さらにBodyに以下を入力し、Sendをクリックします。
{ "name": "myorg_app1", "signOnMode": "SAML_2_0", "credentials": { "signing": { "kid": "<kid>" } } }
- 成功したことを確認してブラウザをリロードし、下部のSAML Signing Certificates部分を確認します。
以下のように新しいSAML Signing Certificatesが作成されActiveとなっています。 - 新しく作成されたSAML Signing CertificatesのActionからDownload certificateをクリックし、okta.certファイルをダウンロードします。
- GWS管理画面ですでに設定済みのSSOプロファイルを開き、証明書の更新から先ほどダウンロードしたokta.certファイルをアップロードします。
GWSアプリケーションで再作成したSAML Signing CertificatesをGCPアプリケーションに複製
- Okta管理画面からGCPアプリケーションを表示し、ブラウザのURL部分を確認し、instance/以降の部分のAppIDを確認し、GCPのAppIDとして手元でメモしておきます。
https://<YourOktaOrgURL>-admin.okta.com/admin/app/cloudconsole/instance/<AppID>/#tab-signon - rockstarのAPI ExplorerからPOSTを選択し、以下を入力し、Sendをクリックします。
/api/v1/apps/<GWSのAppID>/credentials/keys/<kid>/clone?targetAid=<GCPのAppID>
- エラーなく完了すると以下のように表示されます。
- rockstarのAPI ExplorerからPUTを選択し、
/api/v1/apps/<GCPのAppID>
を入力します。
さらにBodyに以下を入力し、Sendをクリックします。
{ "name": "myorg_app1", "signOnMode": "SAML_2_0", "credentials": { "signing": { "kid": "<kid>" } } }
- 成功したことを確認してブラウザをリロードし、下部のSAML Signing Certificates部分を確認します。
以下のように新しいSAML Signing Certificatesが作成されActiveとなっています。
SSO動作確認
- テストとして、GCP利用ユーザーをAssignmentsからアサインします。
- これまでOkta管理者として操作していたブラウザとは別のブラウザかシークレットモードを起動し、Oktaにテストユーザーアカウントでログインします。
- ダッシュボードに表示されたGCPアイコンをクリックします。
- 以下のように表示されればSSO(IdP-Initiated)に問題ないことが確認できました。
- 次にGWSのときと同じ様にテストユーザーでログイン済みのGCPおよびOktaからログアウトし以下のURLを起点とした認証つまりSP-Initiatedが可能かを確認します。
https://console.cloud.google.com
- 一度Oktaに遷移しOktaのサインインが完了したら自動的にGCPへ遷移することを確認します。
Okta上でGCPアプリケーションを設定している時にお気づきかもしれませんが、Provisioningのタブは用意されていません。つまりProvisioningはGWSアプリで実施するということとなります。
まとめ
GCPの設定について確認をしてみました。SAML Signing Certificateを同一にするために新しく発行して、kidをメモしてそのkidを複製し、さらに適用を行うという特殊な流れでした。またこれらの操作をAPIで実施しないといけないため、API操作に不慣れな場合は不安かと思います。
新しく発行したSAML Signing Certificateはokta.certファイルとしてGWS管理画面でも再設定を行う必要もあります。この発行からGWS画面上での反映は速やかに行わないと認証に影響が発生することが予想されますのでその点にも注意が必要です。
前回と今回でGWSそしてGCPのOkta連携をマスターできたとのではないかと思います。それではまた別の記事でお会いしましょう!