SaaS

OktaのUniversal Directoryを使ってみる

ちゃんみおです。 Oktaの新機能の発表がされて2020年期間中に順次使えるようになりますが、そのうちの1つの新サービスの基本となるUniversal Directoryについて書いていきます。 今回はUniversal Directoryの中でもアプリケーション設定のMS365と連携した場合についてフォーカスして書きたいと思います。

そもそもUniversal Directoryってなに?

Oktaはいろいろな種類のサービスを複数組み合わせて利用ができます。
というわけで、自分には関係ないぜーってサービスだと、Oktaを利用していてもあんまりわかんないとか、管理画面に表示がないので、そもそも何それ?みたいなことがザラにおきます。

で、Universal Directoryって何?って本題になりますが、ざっくり箇条書きにすると

  • ADやMS365(Azure AD Directory)やHRシステムと連携して、Oktaが本来持っていない連携先の独自の要素(例えば社員番号みたいな拡張属性)をOktaに追加することが可能
  • OktaからADへパスワードの変更が可能
  • Oktaから他サービスに別サービスから取得した属性値をpushが可能
  • 他のディレクトリと連携ができるので、Okta自体をマスタディレクトリとして他のサービス属性値をつけることも可能
  • 他IdPとの連携が可能(OktaがIdPではなく、SP側になることが可能になる)

まぁ要するに、MSをよく使っていてOktaのプロビジョニング機能を使い倒したい会社向けの機能です。
基本的にはLifecycle Managementとニコイチな扱われ方されます。 Lifecycle Managementは、あくまでディレクトリ機能がないプロビジョニングの機能のライセンスです。

Universal Directoryの基本の基

Universal Directoryの一番よくある使い方ですが、MS365(Active DirectoryまたはAzure AD Directory)とのプロビジョニングになります。
プロビジョニングはLifecycle Managementの機能じゃないの?って数行前の説明を読んで疑問におもうかと思うんですが、Lifecycle Managementによりマスタ機能を映させる機能です。

Universal Directory利用している場合のプロビジョニングのは4種類からタイプを選ぶことができます。

  • Licenses and Roles Management Only
  • Profile Sync
  • User Sync
  • Universal Sync

Universal Directoryを利用していない場合プロビジョニングオプションは2種類になり、User SyncとUniversal Syncは表示されません。
当たり前ですが、どのタイプを利用しても、一部のプロビジョニングタイプ以外は、ユーザーの作成や削除などは行えます。

このプロビジョニングのオプションは大きく2つに別れます。 Licenses and Roles Management Only、Profile Syncは、ディレクトリはあくまでADまたはAzure ADになります。
ユーザーの無効化などは、Oktaから行えますが、ユーザー属性の変更はOktaからはあくまでも行えない仕様です。
次の章でUniversal Directoryで追加されるプロビジョニングタイプのUser SyncとUniversal Syncついて説明していきます。

Active DirectoryとUser SyncとUniversal Sync

まずUniversal Directoryのを利用するときの注意点として、Azure AD Connect、DirSync、Azure Active Directory Syncを利用している場合は、User SyncとUniversal Syncは利用できません。
Oktaの画面にも書いてますが、要注意です。

これは、ADがディレクトリとして機能してしまっているので、元になるディレクトリが2つ存在してしまうので、どっちがマスタのディレクトリなのよ?って喧嘩してしまうからですね。
なのでそんな場合は、Licenses and Roles Management OnlyかProfile Syncを利用する。または、ADを捨てて、User SyncとUniversal Syncを利用するという選択になります。
まぁ、ADって簡単に捨てられないので、もし後者を検討する場合は、よくよく影響範囲を確認した上で行わないと地獄を見るので注意です。
マジ本当注意。
ADを持っていない、または1からディレクトリを作る場合などにはUser SyncとUniversal Syncを使うと、複数のSaaSで社員情報などを管理せずにOktaから各種のSaaSへ情報を送ることができるので便利だったりします。

※補足というか蛇足

ちなみに、単純にADと連携してるAzure AD Connect、DirSync、Azure Active Directory Syncを消したとしても、ユーザーのソースはAzure ADなどから確認すると、Windows Server ADのままです。 なので、このユーザーソースのユーザーはAzure Active Directoryに変更する必要があります。
これを行わないと、User SyncとUniversal Syncにしていてもパスワードのリセットや、ユーザー情報の変更はOktaから行うことはできないし、なんならAzure AD上のGUI上からもできなくってPowerShellで頑張る事になるので注意です。

各プロビジョニングタイプの説明

Licenses and Roles Management Only

名前のまんまです。このタイプでOkta上から設定が行えるのは、ライセンスとロールのみになります。 一番簡単に扱えるのでお試しで試してみたい。というのであればこれから始めるがいいと思います。 ただし、ユーザーの作成が行えません。

変更できる属性は以下になります。

Profile Sync

ユーザー作成は行いたいけど、あくまでユーザーの編集などはMS365から行いたいんだよね。と、いう場合に利用したいプロビジョニングタイプです。MS365から編集した情報(氏名の変更)などの同期も可能になります(Update User AttributesをEnableにしていれば)

変更できる属性は以下になります。

User Sync

MS365の基本的なユーザー属性をOkta上で変更ができます。確か150項目くらい。もちろん最低限だけ埋めて、その他を空白にすることも可能です。 MS365(Azure AD)から属性の変更やパスワードの変更ができなくなるので注意してください。

変更できる属性は以下になります。

Universal Sync

MS365の基本的なユーザー属性やその他個別のカスタマイズさせた属性値を作成し、変更ができます。 個別カスタマイズさせた場合のOktaとのマッピングはディレクトリマスタから可能。社員番号やら、謎のIDなどいろんな物をとにかくOktaに連携したい場合はこちらを利用してください。 また、そうじゃなくてもOktaが持っているセキュリティグループをMS365に連携したい場合もpush Groupという機能を使い連携が可能です。

変更できる属性は以下になります。それ以外は自分で作るスタイル

簡単には変えさせてはくれないプロビジョニングオプション

Universal Directoryの基本の基で、プロビジョニングのオプションは大きく2つに分かれると書きましたが、これは初回の設定にも大きく影響します。 影響というのは、同じベースで属性値を変更できるプロビジョニングオプション間のアプリケーション設定を作り直しせずに行えるのですが、ベースを変更した場合はアプリケーション設定自体の設定のし直しになるので、SAML設定・プロビジョニング設定すべてやり直しです。
マジ注意。ちなみに変更の選択自体はボタンぽちーでできます。 でも、動かないんですねー。
Universal Sync -> Profile Syncに変更したとしても、実際Universal Syncのまま動き続けるというトラップ。

  • Licenses and Roles Management Only <-> Profile Sync できる
  • User Sync <-> Universal Sync できる
  • User Sync -> Licenses and Roles Management Only アプリケーション設定やり直し
  • User Sync -> Profile Sync アプリケーション設定やり直し
  • Universal Sync -> Licenses and Roles Management Only アプリケーション設定やり直し
  • Universal Sync -> Profile Sync アプリケーション設定やり直し

Okta <-> Appのマッピングカスタマイズ

個別に作成した属性や、他SaaSをマスタにしている属性値を持っていきたい、何らかの理由からデフォルトの属性値とは違う属性にマッピングを変更したい場合は、プロフィールエディタの機能利用します。
この機能は、SaaS -> OktaのパターンとOkta -> SaaSの相互に行えます。
MS365などのプロビジョニング画面にあるマッピングとは何が違うのかというと、独自カスタマイズするのに必要ということです。
MS365のアプリケーション設定でマッピングできる属性値は、あくまでMS365の形式で記述がされています。 なので、他のSaaSから属性値を持っていきたい場合は、一回プロフィールエディタで定義を行った後に、MS365のマッピングテンプレートで定義するという作業が必要になります。

OktaをSPにして他のIdPをIdPにしてみる。

Oktaのダッシュボード上にはIdentity Providersという項目があります。 ここではOktaをSPにする。つまり他のIdPになりえるなにかで認証を行い、Okta自体にパスワードやプロフィールの更新を必要としない状態になります。 また、JIT(Just In Time)を利用する事もできるので、Oktaのドメインを知っている尚且つ連携しているIdPからの認証で自動でOktaにユーザーが作成されるということも可能です。
利用用途はいろいろありますが、例えば協力会社がIdPを独自で持っている場合に、協力会社のIdPと連携することでOktaに既存でSAML設定してるサービスを利用してもらうことができるという感じです。 ちなみにOkta APIでこねるとこれ以外のOIDCなんかでも可能なので試した方いたら教えてください。

現在対応してるIdentity Providersのページで設定が行える行える一覧

  • Facebook
  • Google
  • LinkedIn
  • Microsoft(Azure AD)
  • カスタムなSAML2.0

長くなりましたが、MS365を利用する事を中心にしてUniversal Directoryについて今回書いてみました。
今度は他のサービスについても書いてみたいですね。 Oktaにはいろいろな機能があり、把握するのも大変ですが是非是非使い倒してみてください!

渡邉美緒子

家電製品で初期不良に当たりやすいのに家電メーカーで働いたのち、クラウドネイティブに転職、今はSAMLとかそこらへんを勉強しながらお仕事してます。

長時間座ってるのが尾骶骨痛くなるので無理なタイプです。考え事は歩きながら考える派。

ダッフルバックに入ったかわいいくまちゃんとディズニーと旅行と位置ゲーが好きです。