Okta式言語の例
Okta式言語(EL)を使用すると、スーパー管理者とアクセス認定管理者は、ユーザー属性とグループ情報を参照、変換、および組み合わせることができます。アクセス認定キャンペーンの作成または変更中に、Okta式言語式を使用して以下を定義できます。
- キャンペーンをユーザーのサブセットに制限するためのユーザー。
- 各ユーザーのレビュアーをカスタマイズするためのレビュアー。
ヒント
- Okta式言語ドキュメントを確認して、構文を理解してください。
- 三項演算子
[条件] ? [TRUEの場合の値] : [FALSEの場合の値]
を使用して、動的レビュアーを定義するための条件を構築します。 - ユーザーを定義するときは、式がブール値に評価されることを確認してください。
- ユーザーを含める場合はTrue。
- キャンペーンから除外する場合はFalse。
- レビュアーを定義する場合:
- 式が単一OktaユーザーのユーザーIDまたはユーザー名のいずれかに評価されることを確認してください。式がそうでない場合、キャンペーンビルダーで定義された最終レビュアーが割り当てられ、そのユーザーのすべてのアイテムをレビューします。
- 式を構築するときに、レビュアーのロジックをユーザーごとにIF/THEN用語で考えると役立ちます。たとえば、ユーザーAでは、条件Pがtrueの場合、レビュアーBを割り当てます。
- 単純な式から始め、徐々に条件を追加して、式が期待どおりに機能することを確認します。
- [Users(ユーザー)]および[Reviewers(レビュアー)]ペインの[Preview(プレビュー)]機能を使用して式をテストします。
- ユーザーのプロファイルとグループに保存されている任意の値を使用して、キャンペーンの範囲を制限します。
- グループのIDまたは名前を使用して、式でグループを参照します。Oktaでは、グループのIDを使用することをお勧めします。グループのIDは変更されません。
- 用途
&&
:And演算子を示します。||
:Or演算子を示します。!
:Not演算子を示します。
ユーザースコープを定義する
Okta式言語を使用して、プロファイル属性とグループメンバーシップに基づいて、アクセス認定キャンペーンの範囲を一連のユーザーに制限します。カスタム式は、ユーザーを含めるにはtrueに評価され、キャンペーンから除外するにはfalseに評価される必要があります。
式がブール値として評価されることを確認してください。ユーザーを含める場合はTrue、ユーザーをキャンペーンから除外する場合はFalseにします。詳細については、「Okta式言語」を参照してください。
式のサンプル
ユースケース | 式のサンプル |
---|---|
キャンペーンを特定のグループのメンバーに限定します。 | user.isMemberOf({'group.profile.name': 'West Coast Users'})
or
user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) |
特定のグループのメンバーを除くすべてのユーザーを含めます。 | !user.isMemberOf({'group.profile.name': 'West Coast Users'})
or
!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'}) または user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}) |
あるグループのメンバーであるが、別のグループのメンバーではないユーザーを含めます。 | user.isMemberOf({'group.profile.name': 'West Coast Users'}) && !user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'}) |
キャンペーンでアクティブステータスであるユーザーを含めます。 | user.status == 'ACTIVE' |
キャンペーンでデプロビジョニング済みまたは一時停止ステータスのユーザーを除外します。 これらのユーザーは、一時停止または非アクティブ化状態であっても、グループの割り当てを保持します。ただし、これらのユーザーはアプリの割り当てを保留状態で保持するだけです。 | user.status not in ['DEPROVISIONED','SUSPENDED'] |
部門、状態、コストセンターなど、ユーザーのプロファイル属性に基づいてキャンペーンを制限します。 | 完全一致の場合:user.profile.department == "Finance Department") 部分一致の場合:user.profile.department.contains(“Finance”) |
ユーザープロファイル属性とグループの組み合わせを使用して複雑な式を定義し、次のようなユーザーを含めます。
| (user.profile.department.contains(“Communications”) || user.profile.department == "Human Resources") && !user.isMemberOf({'group.profile.name': 'EMEA'}) && user.isMemberOf({'group.profile.name': {"Interns", "Contractors", "Partners"}}) |
動的レビュアーを定義する
Okta式言語を使用して、各ユーザーのレビュアーをカスタマイズします。たとえば、ユーザーのマネージャーにアクセスをレビューするように設定したり、さまざまなチームや部門のレビューを指定したりします。Okta式言語式を作成する前に、「ヒント」を参照してください。
式が単一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'}) ? "westcoastreviewer@example.com" : "otherreviewer@example.com" さらに、グループに属していないユーザーに最終レビュアーを割り当てるには、次を使用します。 user.isMemberOf({'group.profile.name': 'West Coast Users'}) ? "westcoastreviewer@example.com" ? null |
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'}) && !user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'})) ? "groupreviewer@example.com" : user.profile.managerId |