SaaS

Oktaのグループに優先順位があることを知らなかった件

新年明けましておめでとうございます🎍

ブログ書き初めはOktaネタにしようと決めていたたつみんです。今年もどうぞよろしくお願いいたします。

はじめに

タイトルの通りなんですがOktaのアプリケーション設定でOktaグループを指定して利用者をアサインできますが、ここのアサインしたグループに優先順位があることを知りませんでした。

優先順位?ナニそれ美味しいの?

最初に優先順位が設定できることを知った時にどういうメリットがあるのか想像がつきませんでした。アサイン部分はSaaSを利用させるための認識が強く、優先順位という考えがしっくりきていませんでした。

こんな時に使うよ

例えばOktaに連携するアプリケーションとしてAzure ADを登録し、プロビジョニング設定をしている場合にOktaグループと権限/ライセンスを紐づけることができます。

一般ユーザー用のUserRoleというOktaグループやグローバル管理者権限用のGlobalAdminというOktaグループを作っておくイメージです。

この時にユーザーが複数のOktaグループに所属している場合は優先順位が高いグループに紐づく権限/ライセンスの設定が適用されます。

なぜ複数のグループに所属させたかったのか

まず優先順位を知らなかった時は以下のように検討していました。

所属したOktaグループの権限/ライセンスでアプリケーションへプロビジョニングできるように、 UserRoleグループとGlobalAdminグループの両方に所属させずに、どちらかにユーザーを所属させておく。
UserRoleグループからGlobalAdminグループに変更する際は、以下の3つを思いついたがどれも微妙。。

  1. GlobalAdminグループにユーザー追加とUserRoleグループからのユーザー削除を手動で実施。ただし面倒。
  2. Oktaのグループルールを使う。ただUserRoleグループのユーザー削除からGlobalAdminグループの追加という順番で処理され、プロビジョニング解除が実行されるかもしれない…
  3. Okta Workflowsでなんとかできないこともないが意外と複雑になりがち…

それが優先順位を知った後は以下のようにスッキリとしました。

UserRoleグループに全員を所属させておき、グローバル管理者権限が必要な人にだけ優先順位の高いGlobalAdminグループにも所属させることでプロビジョニング解除が実行されることなくやりたいことが実行できる。

具体的にはこんな感じ

以下のようにグループを設定し、それぞれ対応する権限/ライセンスをグループに紐づけておきます。

OktaグループAAD_GlobalAdminには以下のようにGlobal Administratorの権限を紐づけておきます。

AAD_UserRoleにはどのRoleも紐付けなければ一般ユーザーとなります。

OktaユーザーがAAD_GlobalAdminAAD_UserRoleの両方に所属している場合はAzure ADではグローバル管理者の権限が付与されます。逆を言えば、AAD_UserRoleにしかOktaユーザーが所属していない場合はAzure ADでは一般ユーザーの権限となります。

優先順位が逆の場合

Oktaグループの優先順位がもし下記となっていたら、OktaユーザーがAAD_GlobalAdminAAD_UserRoleの両方に所属していてもAzure ADではグローバル管理者の権限は付与されません。

まとめ

ちょっとした小ネタレベルでしたが意外と知られていなさそうな機能でしたのでまとめてみました。優先順位について事前知識がないと意図した挙動にならずにハマりそうだなと思います。

Oktaグループへのユーザー追加および削除はユーザープロファイルを参照するグループルールを設定するなどの工夫でメンテナンス工数も削減できそうです。

たつみん

事業会社の情シスからクラウドネイティブにJoin!
好きなものはF1海外観戦とベルギービール!
集中力の質は深く長く遅い典型的なシングルタスクタイプです。