Okta Expression Languageの例

Okta Expression Language(EL)を使用すると、スーパー管理者、アプリ管理者、および特定の権限を持つカスタム管理者は、ユーザー属性とグループ情報を参照、変換、組み合わせることができます。ポリシールールの作成または変更中に、Okta Expression Language式を使用してユーザースコープを定義できます。

ヒント

  • Okta Expression Languageドキュメントを確認して、構文を理解してください。
  • ユーザーを定義するときは、式がブール値に評価されることを確認してください。
    • ユーザーをルールに含める場合はTrue。
    • ユーザーをルールから除外する場合はTrue。
  • 単純な式から始め、徐々に条件を追加して、式が期待どおりに機能することを確認します。
  • [Preview(プレビュー)]機能を使用して式をテストします。
  • ユーザーのプロファイルに保存されている任意の値を使用して、ルールのスコープを制限します。
  • グループのIDまたは名前を使用して、式でグループを参照します。Oktaでは、グループのIDを使用することをお勧めします。グループのIDは変更されないからです。
  • 演算子を示すには次の記号を使用します。
    • ANDまたは&&:And演算子を示します。
    • ORまたは|| :Or演算子を示します。
    • !:Not演算子を示します。

式のサンプル

ユースケース 式のサンプル
ルールを特定のグループのメンバーに限定します。 次のいずれかの式を使用します。
  • user.isMemberOf({'group.profile.name': 'West Coast Users'})

  • user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'})

特定のグループのメンバーを除くすべてのユーザーを含めます。 次のいずれかの式を使用します。
  • !user.isMemberOf({'group.profile.name': 'West Coast Users'})

  • !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'})

ステータスが「アクティブ」(Active)であるユーザーをルールに含めます。

user.status == 'ACTIVE'

部門、状態、コストセンターなど、ユーザーのプロファイル属性に基づいてルールを制限します。 完全一致の場合: user.profile.department != null && user.profile.department == "Finance Department"

部分一致の場合: user.profile.department != null && user.profile.department.contains("Finance")

ユーザープロファイル属性とグループの組み合わせを使用して複雑な式を定義し、次のようなユーザーを含めます。

  • Human Resources(人事)部門に所属しているか、名前に「communications」(コミュニケーション)という単語が含まれる部門に所属しているユーザー。および
  • EMEAグループのメンバーではないユーザー。および
  • 3つのグループ(Interns(インターン)、Contractors(請負業者)、またはPartners(パートナー))の少なくとも1つに属しているユーザー。
user.profile.department != null &&(user.profile.department.contains("Communications") || user.profile.department == "Human Resources") && !user.isMemberOf({'group.profile.name': 'EMEA'}) && user.isMemberOf({'group.profile.name': {"Interns", "Contractors", "Partners"}})

関連項目

ポリシーを管理する

ポリシーのプレビュー