こんにちは、たつみんです。
SmartHRがOktaとのSSO/SCIMによるプロビジョニングに対応したとの話題を見つけて早速検証してみました。
大きな特徴はSmartHRをリソースとしてOkta側に反映できることですよね。通常であればOktaからSaaSに対して反映させるため逆の流れとなります。
なお、今回のSSO/SCIMを利用するにはSmartHRの有料プランとSSO/SAML認証のオプションが必要となります。
それでは実際の手順を確認してみましょう。
SSO設定
基本的な設定
SmartHRさんのドキュメントがしっかりしているのでそちらを確認しましょう。
Okta側で行う設定
https://knowledge.smarthr.jp/hc/ja/articles/360039744674-Oktaの設定方法
SmartHR側で行う設定
https://knowledge.smarthr.jp/hc/ja/articles/360037010093#toc–2
対象アカウントへのSSO有効化
SmartHRに登録されているユーザーをOktaでSSOできるようにするためには、アカウントを指定して、SSOの有効化を行う必要があります。
- SmartHRの共通設定>SAML SSO アカウントを設定へ移動します。
- 表示されているユーザーのSAML SSOアカウントの編集をクリックします。
- 連携IdPアカウントにOktaのユーザーアカウント(メールアドレス)を入力し、SSOの有効化にチェックを入れて、更新するをクリックします。
複数のユーザーを一括でSSOの有効化をする場合
SAML SSOアカウント一覧をCSVでダウンロードし、以下のようにUPNの列にOktaアカウントを入れ、SSO有効化の列を「有効」に編集後にアップロードすることで可能です。
SmartHRは入社予定者に事前入力してもらうため個人所有のメールアドレスをログインIDとして利用しているケースが多いと思います。このままではログインIDをそのままSSO用には利用できないためこのような実装になっているのだと思います。よく考えられているなと感心しました。
SCIM設定
事前設定
こちらもSmartHRさんのドキュメントがあるのでそちらを参考に設定しました。
https://smarthr.app.box.com/s/ywbewzqaxocs88l0lk65fhdz9t4zebj2
- SmartHRの共通設定>SCIM 設定へ移動します。
- email設定で従業員のemailを利用するのチェックを外し、更新するをクリックします。これは従業員情報のメールアドレスではなくSCIM用のカスタム項目のメールアドレスを利用したいためです。
- SCIM設定の項目内の下線部分のAuth Token部分をコピーしておきます。
- OktaのSmartHRアプリケーションのProvisioning設定のAPI Tokenに反映し、Test API Credentialsをクリックし、問題がないことを確認したのちに、Saveします。
既存SmartHRユーザーのOktaへの反映
この操作はSmartHRにだけ存在しているユーザーをOktaに反映させる場合に設定します。すでにOktaにユーザーが作成さ れている場合は不要な操作です。
- SCIM設定画面の最下部にあるSCIM Sync アカウント一覧をクリックします。
- Provisioningの情報の編集をクリックします。
- Oktaへ連携する情報を編集し、更新するをクリックします。
- SCIM syncアカウントの編集からSCIM syncの対象にチェックを入れます。
- 必要なユーザーについて手順2.から手順4.を繰り返します。
- OktaのSmartHRアプリケーションのImportからImport Nowをクリックします。
- 検出されたユーザーが表示されるため、Oktaに反映させるアカウントを選択し、Confirm Assigmentsをクリックします。
- 確認画面が表示されます。ここでアクティベーションを実施する場合は、Auto-activate users after confirmationにチェックを入れて、Confirmをクリックします。
入社予定者を見据えた運用
ここまでは既存ユーザーの場合について触れてきましたが、SmartHRのSCIM連携の真骨頂はSmartHRを起点としてOktaにユーザーが作られることです。
以下は入社予定者への対応に沿ってどのような挙動になるかを解説します。
Oktaプロビジョニング設定
まず事前にOkta側でプロビジョニング設定を以下のように設定します。これらの設定が実際の運用の中でどのような意味を持つかは後ほど解説いたします。
To App
Deactivate Usersにチェックを入れて、Saveします。
To Okta
Full Import Scheduleで平日の午前2時などに設定します。Confirm new usersでAuto-confirm new usersにチェックを入れます。
また、Profile & Lifecycle SourcingでAllow SmartHR to soure Okta usersにチェックを入れます。
入社予定者をSmartHRで招待する
従業員管理>新規登録から、入社予定者の基礎情報を入力し、招待します。
入社予定者は招待メールのリンクからパスワードを設定し、SmartHR上で緊急連絡先や給与振込口座など必要な項目を入力します。
この時点でSmartHRの管理者はユーザーのカスタム項目としてプロビジョニング設定用項目(SCIM)を編集することができます。
SmartHRの管理者はOktaユーザーを作成するために必要なこれらの項目を入力します。
SCIM設定からSCIM Syncアカウント一覧へ移動し、対象アカウントのSCIM syncの対象にチェックを入れます。
Oktaのプロビジョニング設定のTo Oktaで設定した時間にSmartHRからOktaに対して、自動Importが実行されます。この時、Confirm new usersをAuto-confirm new usersとしていることで、OktaアカウントはStagedステータスで作成されます。
下図は実際にSmartHRからSCIM連携によりOktaに自動的に作成されたOktaアカウントです。ステータスがStagedになっており、すでにSmartHRアプリケーションにもアサインされています。
ステータスをStagedとしているため、入社まで期間が数ヶ月空いている場合など、すぐにOktaアカウントのアクティベーションしたくない場合に有効です。これで任意のタイミングでアクティベーションを行うことができます。
入社日が近づいてきたら適切なタイミングでアクティベーション操作を実施しましょう。
なお、StagedステータスのOktaアカウントをプロビジョニング設定を行っているアプリケーションにアサインした場合、Stagedステータスであってもアプリケーションへはプロビジョニングが実行されてしまうため、注意が必要です。
なお、このAuto-confirm new usersの設定はImport Nowボタンを手動で押した時にも影響します。
最後にアクティベーション後はOktaからSmartHRにログインしてもらいたいため、SSO設定で触れた、対象アカウントのSSO有効化についても実施する必要があります。
氏名などの一部の属性値の変更対応
SmartHRで項目を変更した場合は自動Importもしくは手動でのImport Nowを実行したタイミングでOktaアカウントの属性値も変更されます。
検証時に確認できた変更される属性値の対応表は下記の表のとおりです。今後より多くの属性値が対応されるのが待ち遠しいです。
SmartHR上の項目 | Okta上の項目 |
givenNam | First name |
familyName | Last name |
middleName | Middle name |
社員番号 | Employee number |
Profile & Lifecycle Sourcingの設定について
属性値の変更が反映されるのはAllow SmartHR to soure Okta users にチェックを入れることで、SmartHRをプロファイルソースとして利用する設定を有効化したためです。
なお、When a user is deactivated in the appという設定項目をDo nothingとしています。この設定はSmartHR側でアカウント情報を削除した場合に何を行うかという設定となります。
SmartHRの運用として多くの場合、退職者については在籍状況を退職済にするのみで、SmartHRからのアカウント削除までは行わないため設定をしていません。
退職時の対応
OktaアカウントをDeactivateすることで、SmartHRのSCIM Syncのチェックが外れます。これはOktaプロビジョニング設定のTo AppでDeactivate Usersを有効化しているためです。
SmartHRのSCIM Syncのチェックが外れることで、自動Importの対象外となり、Oktaアカウント削除後に再度取り込まれて新たにアカウント作成が行われないようになります。
同時に対象アカウントへのSSO有効化での有効化チェックも外れるため、該当ユーザーはSmartHR招待時のIDとPasswordでログインが可能となります。
まとめ
ドキュメントを確認している段階ではどのような挙動になるか想像がついていませんでしたが、検証を通してよく考えられているなと感じました。
以下の点は現時点では実現できない項目のため、今後のアップデートに期待したいところです。
- SmartHRからOktaに対して雇用形態や部署情報などの属性をSCIMを使って反映させる
属性に応じてOktaグループへ所属させて、アプリケーションアサインを自動化したい - SmartHR上の入社日や退職日をトリガーにOktaに連携をさせる
SSO有効化やSCIM syncのチェックを入社日のn日前に入れるっていうオプションがあるのが理想
日本発のSaaSがOktaのSCIMに対応した事例はまだまだ少なく、HRリソースからOktaへのプロビジョニング連携が可能になった点は大きな一歩だと感じています。
今後この動きが加速し、より自動化が進む未来に繋がるといいなと思います。
2022.05.27追記 雇用形態、役職、部署情報の同期が可能になりました!
まとめで触れた、以下についてアップデートされたとのことです???
- SmartHRからOktaに対して雇用形態や部署情報などの属性をSCIMを使って反映させる
これで属性に応じてOktaグループへ所属させて、アプリケーションアサインを自動化することができるようになりましたね。日々アップデートされるのがSaaSのよい点ですね?