Okta を Terraform で管理することで、設定のコード化による一貫性の維持と管理操作の自動化を実現できます。本記事では、Okta 用の公式 Terraform プロバイダー...
【Okta新機能】グループルールの条件に「ユーザーステータス」が利用できるようになりました!
こんにちは、こやしぃです。
今回ご紹介するのは、Oktaに新たに追加された機能です。Oktaにおけるユーザーアカウントの「ステータス」変更をトリガーとして、該当ユーザーのグループメンバーシップを自動管理できるようになりました。
具体的には、Okta Expression Language(以下、OEL)を用いて、ユーザーのライフサイクルに伴うステータス変化をトリガーとしたユーザーのグループアサインが可能となります。
今後はOELを活用することで、ユーザーのステータスによるグループ分けや自動化が実現でき、管理の柔軟性が格段に向上することが期待されます。
ぜひ、この新機能を活用いただければ幸いです。
目次
従来は、アカウントステータスの変更時に確認作業が煩雑で、管理に多くの手間がかかることが課題となっていました。
たとえば、ユーザーが休職などでアカウントを「Suspended(一時停止)」に設定した場合、従来のグループルールではこの「一時停止」のステータスを条件に指定できなかったため、「どのユーザーがどのステータスなのか」を、一覧で把握することができませんでした。
その結果、権限を適切に制御するために、管理者が個別に手動でグループメンバーシップを管理する必要があり、運用が複雑化したり、ステータスの変化が反映されていないユーザーがグループに残り続けるリスクが生じていました。
特に、管理者側から見ると「誰がどのステータスか」を直感的に把握できず、管理効率が落ちてリスク増加につながる可能性がありました。
“属性”から“ユーザーステータス”に基づくグループアサインの実現
新たな変更によって、Oktaではグループ管理においてユーザーのステータスに基づいた、より高度な自動化とグループ化を実現できるようになりました。
実現できること
1. ユースケース例
グループにおける動的なステータスの活用事例を、いくつかご紹介します。
ユーザーステータスの一覧リンク:https://help.okta.com/oie/ja-jp/content/topics/users-groups-profiles/usgp-end-user-states.htm
| ステータス例 | グループ・ルール適用後の主なユースケース例 |
| Suspended(一時停止) | 休職や調査のためにアカウントが一時停止された瞬間、一時停止グループに追加する |
| Locked out(ロックアウト) | 認証失敗によりアカウントがロックされた場合、自動で「セキュリティアラートグループ」に追加する |
| Pending User Action(ユーザーアクション保留中) | オンボーディング中のユーザーが初回パスワード設定を完了するまでの間、自動的に「オンボーディング用グループ」に追加する。 |
| Staged(段階的) | 人事システムから情報がプロビジョニングされた直後のアカウント準備段階で、特定のプロビジョニングチェック用グループに追加する。 |
2. 以前の課題と新機能のメリット
この新機能は、従来の静的属性によるグループ管理が抱えていた、運用上の課題を解決します。
| 課題となっていた点 | 新機能による解決(メリット) |
| ステータス確認作業の遅延 |
Suspended等のユーザーに対して、手動でグループ変更を行う必要がなくなり、即座にグループ・一覧表示ができる。 |
| 一時的な状態(Pending User Actioなど)にあるユーザーを正確に抽出し、期間限定のサポートアクセスなどを付与することが困難だった |
ライフサイクルイベントの各段階にあるユーザーを正確に抽出し、オンボーディング時などの動的なサポート付与をグループを通じて自動化できる。たとえば「ユーザーのステータスが Pending User Action の間だけ、自動的に『初期設定のサポートグループ』に追加する」といったルールを設定し、必要な期間だけ、該当するグループへ限定的なアクセス権を付与できるようになった。 |
今回は『もしパスワード期限切れステータスのユーザーがいたら、そのユーザーを一覧表示できるリストを作成する』手順を紹介していきます。
-
OEL記述の例:
user.getInternalProperty("status") == "PASSWORD_EXPIRED"
意味: ユーザーステータスが「Password Expired(パスワードの有効期限切れ)」である場合にのみ、グループ(例:パスワード期限切れ)に所属させる。
-
まず、Oktaの管理コンソール内で、ステータス毎にユーザーをまとめるためのグループを作成します。
-
-
ディレクトリ > グループ へ移動し、“グループを追加”を選択します。

-
- グループ名と説明(オプション)を入力して、保存します。今回は『パスワードリセット状態』というグループ名とします。

- グループ内のルールタブへ移動し、ルールを追加を選択してルールを編集します。
グループルールの基本的な概念については、下記のリンクをご参照ください。
https://help.okta.com/oie/ja-jp/content/topics/users-groups-profiles/usgp-group-rules-main.htm
- ルールを編集します。以下は入力例です。

・『名前』任意のルール名を入力します。例:rule-password-reset-group
・『IF』Okta Expression Languageを使用(詳細)を選択し、以下の式を入力します。
user.getInternalProperty("status") == "PASSWORD_EXPIRED"
・『THEN』割り当てるグループを選択します。 >> 先ほど作成したグループを割り当てましょう。
・『EXCEPT』本ルール適用外とするユーザーが存在する場合に入力します。(オプション機能)
※ルールを保存した後に、必ずアクティブ化することをお忘れなく!
また『式言語リファレンス』で、その他のステータス式を確認することができます。
- 先ほど作成したグループ「パスワードリセット状態」を開きます。
グループ内のユーザーステータスは『パスワードの有効期限切れ』となり、管理対象はrule-password-reset-groupとなっています。
管理対象の項目では、さきほど設定したルールが適用されていることを確認できます。
この手順により、パスワードが期限切れとなったユーザーの自動抽出およびグループ化が正常に機能することが確認できました。
今後は、パスワード有効期限が切れたユーザーが、該当グループ(パスワードリセット状態)に自動的に追加されます。
さらに、パスワード期限切れユーザーが自動でアクセス制限グループに移動される仕組みは、証跡として残りますので、内部監査・外部監査にも対応しやすくなり、監査業務の効率化も期待できます。
まとめ
以前は、Oktaのグループルールは主にユーザーの静的な属性(部署など)に基づいて設定されていました。
この度のアップデートによって、OELの式の中でユーザーの動的なステータスを直接参照できるようになりました。
動的なステータスごとにグループ化することで、管理者によるシステムログの監視・手動抽出や、パスワードリセットの案内メール送信といった作業が不要となり、IT部門としての、運用負担が大幅に軽減されることが期待できます。
