Okta Expression Languageの例
Okta Expression Language(EL)を使用すると、スーパー管理者とアクセス認定管理者は、ユーザー属性とグループ情報を参照、変換、組み合わせることができます。アクセス認定キャンペーンの作成または変更中に、Okta Expression Language式を使用して次のアクションを実行できます。
- キャンペーンをユーザーのサブセットに制限する
- 各ユーザーのレビュアーをカスタマイズする
ヒント
- Okta Expression Languageドキュメントを確認して、構文を理解してください。
- 三項演算子[条件] ? [TRUEの場合の値] : [FALSEの場合の値]を使用して、動的レビュアーを定義するための条件を構築します。
- ユーザーを定義するときは、式がブール値に評価されることを確認してください。
- ユーザーを含める場合はTrue。
- キャンペーンから除外する場合はFalse。
- レビュアーを定義するときには、次のタスクを行います。
- 式が一人のOktaユーザーのユーザーIDまたはユーザー名のいずれかに評価されることを確認します。式がそうならない場合、キャンペーンビルダーで定義された最終レビュアーが割り当てられ、そのユーザーのすべてのアイテムをレビューします。
- 式を構築するときに、レビュアーのロジックをユーザーごとにIF/THEN用語で考えると有用です。たとえば、ユーザーAでは、条件Pがtrueの場合、レビュアーBを割り当てます。
- 単純な式から始め、徐々に条件を追加して、式が期待どおりに機能することを確認します。
- [ユーザー]および[レビュアー]ペインのPreview(プレビュー)機能を使用して式をテストします。
- ユーザーのプロファイルとグループに保存されている任意の値を使用して、キャンペーンのスコープを制限します。
- グループのIDまたは名前を使用して、式でグループを参照します。Oktaでは、グループのIDを使用することをお勧めします。グループのIDは変更されません。
- 演算子を示すには次の記号を使用します。
- &&:And演算子を示します。
- ||:Or演算子を示します。
- !:Not演算子を示します。
ユーザースコープを定義する
Okta Expression Languageを使用して、プロファイル属性とグループメンバーシップに基づいて、キャンペーンの範囲を特定のユーザーに制限します。カスタム式は、ユーザーを含めるにはtrueに評価され、キャンペーンから除外するにはfalseに評価される必要があります。
式がブール値として評価されることを確認してください。ユーザーを含める場合はTrue、ユーザーをキャンペーンから除外する場合はFalseにします。詳細については、「Okta Expression Language」を参照してください。
式のサンプル
ユースケース | 式のサンプル |
---|---|
キャンペーンを特定のグループのメンバーに限定します。 | user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'})または user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) |
特定のグループのメンバーを除くすべてのユーザーを含めます。 | !user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'})または!user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) |
両方のグループのメンバーであるユーザーを含めます。 | user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) && user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'}) |
2つのグループの少なくとも1つのメンバーであるユーザーのみを含めます。 | user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) || user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'})
or user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}) |
キャンペーン内の特定のレルムに属するユーザーのみを含めます。 | user.realmId == "o4cbj6ybZl1QShj0g7"、またはuser.realmId == "guo4c8usniIlFgluO0g7"、またはuser.realmId == "guo4c7skrkbxDgJ140g7" この式は、レルム機能を有効にした場合にのみ使用します。 |
1つのグループのメンバーであるが、別のグループのメンバーではないユーザーを含めます。 | user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) |
キャンペーンでアクティブステータスであるユーザーを含めます。 次の式は、ステータスが「プロビジョニング済み」または「ステージ済み」のユーザーを含めません。 | user.status == 'ACTIVE' or user.status == 'PASSWORD_EXPIRED' or user.status == 'LOCKED_OUT' or user.status == 'RECOVERY' |
部門、状態、コストセンターなど、ユーザーのプロファイル属性に基づいてキャンペーンを制限します。 | 完全一致の場合に使用する式:user.profile.department == "Finance Department" 部分一致の場合に使用する式:user.profile.department.contains("Finance") |
ユーザープロファイル属性とグループの組み合わせを使用して複雑な式を定義し、次のようなユーザーを含めます。
| (user.profile.department.contains("Communications") || (user.profile.department.contains("Communications") || user.profile.department == "Human Resources") && !user.isMemberOf({'group.profile.name': 'EMEA', 'operator': 'EXACT' }) && user.isMemberOf({'group.profile.name': {{"Interns", "Contractors", "Partners"}, 'operator': 'EXACT'}}) |
動的レビュアーを定義する
Okta Expression Languageを使用して、各ユーザーのレビュアーをカスタマイズします。たとえば、ユーザーのマネージャーにアクセスをレビューするように設定したり、さまざまなチームや部門のレビューを指定したりします。Okta Expression Language式を作成する前に、「ヒント」を参照してください。
式が一人のOktaユーザーのユーザーIDまたはユーザー名のいずれかに評価されることを確認します。式がユーザーを返さない、または無効な場合、キャンペーンの作成中に定義した最終レビュアーがシステムによって割り当てられ、そのユーザーのすべてのアイテムをレビューします。
式を構築するときに、レビュアーのロジックをユーザーごとにIF/THEN用語で考えると有用です。たとえば、ユーザーAでは、条件Pがtrueの場合、レビュアーBを割り当てます。
式のサンプル
ユースケース | 式のサンプル |
---|---|
ユーザーのマネージャーを各ユーザーに割り当てます。 | user.profile.managerId |
特定のプロファイル属性(この場合、部門がDepartment 1)を持つユーザーにのみユーザーのマネージャーを割り当て、他のすべてのユーザーには特定のレビュアーを割り当てます。 | user.profile.department == "Human Resources" ? user.profile.managerId : "jsmith@example.com" |
定義済み所有者が1人以上であるグループのレビュアーとしてグループ所有者を1人割り当てます。 | user.findGroupAndGetOwners({'group.id': 'groupId'}, 'USER')[0] |
所有者が1人以上であるグループのレビュアーとしてグループ所有者を割り当てます。 | user.findGroupAndGetOwners({'group.id': 'groupId'}, 'USER')[0] |
特定のグループのメンバーであるユーザーにレビュアーを割り当てます。 | user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) ? "westcoastreviewer@example.com" : "otherreviewer@example.com" さらに、グループに属さないユーザーに最終レビュアーを割り当てるには、次の式を使用します。 user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) ? "westcoastreviewer@example.com" ? null |
特定のレルムに属するレビュアーを割り当てます。 | user.realmId == "guo4c8usniIlFgluO0g7" ? "jane@gmail.com":(user.realmId == "guo4c8usniIlFgluO0g7" ? "joe@gmail.com":"joea@gmail.com") この式は、レルム機能を有効にした場合にのみ使用します。 |
2つのグループのメンバーであるユーザーにレビュアーを割り当てます。それ以外の場合は、ユーザーのマネージャーを割り当てます。 | (user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) && user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'})) ? 'groupreviewer@example.com' : user.profile.managerId |
2つのグループの少なくとも1つのメンバーであるユーザーにレビュアーを割り当てます。それ以外の場合は、最終レビュアーを割り当てます。 | user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}) ? "groupreviewer@example.com" : null |
あるグループのメンバーであるが、別のグループのメンバーではないユーザーにレビュアーを割り当てます。それ以外の場合は、ユーザーのマネージャーを割り当てます。 | (user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) && !user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'})) ? "groupreviewer@example.com" : user.profile.managerId |