名前付き式
ユーザ ディレクトリは、組織的な情報、ユーザおよびグループの属性、個別の認証情報などのユーザ属性を格納します。一部のユーザ属性値は、ユーザ ディレクトリから直接読み取られ、他の値は必要になるたびに計算する必要があります。これらの計算式は名前を付けて、または名前を付けないで保存できます。
sm1252sp1jjp
ユーザ ディレクトリは、組織的な情報、ユーザおよびグループの属性、個別の認証情報などのユーザ属性を格納します。一部のユーザ属性値は、ユーザ ディレクトリから直接読み取られ、他の値は必要になるたびに計算する必要があります。これらの計算式は名前を付けて、または名前を付けないで保存できます。
名前付き式
は、名前で参照するポリシー ストア オブジェクトです。これらは、アプリケーション オブジェクトで定義されたセキュリティ ポリシーで再利用できます。名前のない
式
は、レスポンスなどのドメイン オブジェクトに格納されます。これらは、従来のセキュリティ ポリシーで使用されるルールです。sm1252sp1jjp
注:
名前付き式は、アプリケーション オブジェクトでのみ使用できます。レスポンスやルールなどのドメイン オブジェクトを使用して定義された従来のセキュリティ ポリシーでは、名前付き式は使用できません
。名前付きと名前なしの両方のすべての式を使用して、ユーザ属性の計算値を判断します。
名前付き式を作成するには、管理者に適切な権限が必要です。
sm1252sp1jjp
注:
アクティブな式と名前付き式は同じではありません。どちらのタイプの式もランタイムに評価されるのは同じですが、以下の点で異なります。- アクティブな式はブール式ですが、名前付き式は文字列、数値、ブール値を返すことができます。
- アクティブな式はそのまま参照されるため、使用するたびに再入力する必要がありますが、名前付き式は名前で参照されるため、どこからでも参照でき、再利用できます。
2
名前付き式のメリット
名前付き式には、以下のメリットがあります。
- 名前付き式は、名前によって参照でき、再使用することのできるオブジェクトとして、ポリシー ストアに格納されます。
- システム管理者は、名前付き式をそれぞれ 1 回作成します。ドメイン管理者は、ユーザ情報を取得するために、基礎となる式ではなく、式名を参照します。管理者は、ユーザ情報が必要になるたびに、式全体を再入力する必要がありません。
- システム管理者は、名前付き式を 1 つの場所に作成して管理します。式を変更する必要がある場合、管理者は変更を 1 回のみ行います。
- ビジネス ロジックで式の変更が必要になった場合、システム管理者は 1 回のみ変更します。ドメイン管理者は、基礎となる変更に関係なく、式名を参照し続けることができます。
- 適切な権限を持つ管理者のみが名前付き式を作成できます。名前付き式は、権限が付与されている組み込み関数および任意の名前付き式(秘密として指定される式を含む)を呼び出すことができます。たとえば、名前付き式は、現在のユーザをグループに追加する秘密の式を呼び出せますが、名前なし式はこの処理を実行できません。この制約により、ドメイン管理者は、管理グループへの現在のユーザの追加など、セキュリティを無視する作業を行うことができなくなります。
名前付き式の定義
名前付き式は、名前によって参照でき、アプリケーション オブジェクトで定義されたセキュリティ ポリシーで再利用できるポリシー ストア オブジェクトです。
sm1252sp1jjp
注:
名前付き式は、アプリケーション オブジェクトでのみ使用できます。レスポンスやルールなどのドメイン オブジェクトを使用して定義された従来のセキュリティ ポリシーでは、名前付き式は使用できません
。Single Sign-On
は、名前付き式を評価して、計算されたユーザ属性の値を判別します。名前付き式には、以下の 2 つのタイプがあります。
仮想ユーザ属性
仮想ユーザ属性では、ユーザ情報を計算するための再使用可能な式を定義できます。ユーザ属性がユーザ ディレクトリによって一意に参照されない場合は、このタイプの式を使用します。この場合は、ユーザ属性を、属性、およびビジネス ロジックによって確立される他の基準を使用して計算する必要があります。
仮想ユーザ属性名の式では、以下のいずれかのデータ型の値が返されます。
- 文字列
- 数値
- ブール値
仮想ユーザ属性には、プレフィクスとして「ポンド」記号(#)が付加されます。「ポンド」記号により、ユーザ属性名とマッピングで名前が競合することがなくなります。また、ユーザ属性値が計算されることをひとめで確認できるリマインダにもなります。
1 つの式として、仮想ユーザ属性には以下を含めることができます。
- ユーザ属性(ディレクトリ固有のユーザ属性またはマップされたユーザ属性)
- ほかの名前付き式への参照
- 組み込み関数および式構文
sm1252sp1jjp
注:
名前付き式は、アプリケーション オブジェクトでのみ使用できます。レスポンスやルールなどのドメイン オブジェクトを使用して定義された従来のセキュリティ ポリシーでは、名前付き式は使用できません
。仮想ユーザ属性ユース ケース
このユース ケースは、基本スキーマが異なる 2 つの LDAP ユーザ ディレクトリで、ユーザの姓と名を識別する方法を示す基本的なシナリオです。
以下の図は、ユーザ ディレクトリが異なるユーザの仮想ユーザ属性
#SortName
(LastName、FirstName)をユーザ属性マッピングを使って計算する方法を示します。ユーザ属性マッピングでは、異なるユーザ ディレクトリの異なるユーザ属性名に共通名をマップできます。
- 2 つのユーザ ディレクトリでは、ユーザの姓と名の識別の方法が異なります。ユーザ属性マッピングを作成することで、この情報の共通表示を作成できます。
- FirstName は、ディレクトリ A とディレクトリ B のユーザの名を識別する基本ディレクトリ スキーマにマップされます。
- LastName は、ディレクトリ A とディレクトリ B のユーザの姓を識別する基本ディレクトリ スキーマにマップされます。
- #SortNameは、以下の式で両方のディレクトリのユーザのソート名を計算できる仮想ユーザ属性です。(LastName + "," + FirstName)
- (FirstName + "," + LastName) として定義した#SortNameという名前の仮想ユーザ属性を作成すれば、式 (LastName + "," + FirstName) を何度も入力する必要がなくなります。この式が必要になったときは、#SortNameを入力するだけで済みます。
仮想ユーザ属性の定義
1 つ以上のユーザ ディレクトリで一意に参照されないユーザ情報を計算するには、仮想ユーザ属性を定義します。
注
: 以下の手順では、新しいオブジェクトを作成しているとします。また、既存のオブジェクトのプロパティをコピーしてオブジェクトを作成することもできます。以下の手順に従います。
- [ポリシー]-[式]をクリックします。
- [名前付き式]をクリックします。
- [名前付き式の作成]をクリックします。
- [オブジェクトの新規作成]オプションが選択されていることを確認し、[OK]をクリックします。注:それぞれの要件および制限など、設定とコントロールの説明を参照するには、[ヘルプ]をクリックします。
- [仮想ユーザ属性]オプションを選択し、[一般]領域に式の名前を入力します。
- [名前付き式の追加]領域の[式]フィールドに、式を入力します。
- (オプション)[名前付き式の追加]領域で[無効]オプションを選択し、式を無効にします。無効にした式は式エディタにリスト表示されません。また、別の名前付き式または名前のない式はそれを呼び出すことができません。
- (オプション)[名前付き式の追加]領域の[プライベート]オプションを選択します。他の名前付き式のみがプライベート式を呼び出すことができます。名前のない式はプライベート式を呼び出すことができません。
- (オプション)[名前付き式の追加]領域の[編集]をクリックし、[式エディタ]を開きます。
- [サブミット]をクリックします。名前付き式が作成されます。
ユーザ クラス
ユーザ クラスでは、ユーザ情報を計算する再使用可能な式を定義できます。ユーザ属性がユーザ ディレクトリによって一意に参照されない場合は、このタイプの式を使用します。この場合は、ユーザ属性を、属性、およびビジネス ロジックによって確立される他の基準を使用して計算する必要があります。
ユーザ クラスは、ユーザが指定したクラスのメンバの場合は真を、そうでない場合は偽を返す式を指定します。
ユーザ クラスには、接頭辞としてアット マーク(@)が付きます。アット マークにより、ユーザ クラスの名前とのユーザ属性名やマッピングの競合が避けられます。また、アット マークにより、ユーザ属性値を計算することが視覚的にわかります。
ユーザ クラスは式で以下を含むことができます。
- ユーザ属性(ディレクトリ固有のユーザ属性またはマップされたユーザ属性)
- ほかの名前付き式への参照
- Single Sign-On組み込み関数および式構文
sm1252sp1jjp
注:
名前付き式は、アプリケーション オブジェクトでのみ使用できます。レスポンスやルールなどのドメイン オブジェクトを使用して定義された従来のセキュリティ ポリシーでは、名前付き式は使用できません
。ユーザ クラスはロールではありません。ロールはエンタープライズ ポリシー管理の機能です。ロールはユーザ クラスを使用できますが、その他にも関連付けられている情報があります。ロールの詳細については、「エンタープライズ ポリシー管理」を参照してください。
ユーザ クラス ユース ケース
このユース ケースは、基本スキーマが異なる 2 つの LDAP ユーザ ディレクトリで、管理者グループのメンバシップを識別する方法を示す基本的なシナリオです。
以下の図は、ユーザ ディレクトリが異なるユーザのユーザ クラス
@Admin
をユーザ属性マッピングを使って計算する方法を示します。ユーザ属性マッピングでは、異なるユーザ ディレクトリの異なるユーザ属性名に共通名をマップできます。
- 2 つのユーザ ディレクトリでは、管理者グループのメンバシップの識別の方法が異なります。ユーザ属性マッピングを作成することで、この情報の共通表示を作成できます。
- IsAdmin は、ディレクトリ A の管理者グループのメンバシップを識別する基本ディレクトリ スキーマにマップされます。
- IsAdmin は、ディレクトリ B の管理者グループのメンバシップを識別する基本ディレクトリ スキーマにマップされます。
- @Adminは、両方のディレクトリ内のユーザが管理者かどうか判断するために、Single Sign-Onが評価するユーザ クラスのタイプを示す名前付き式です。(IsAdmin)
- (IsAdmin) として定義した@Adminという名前のユーザ クラスを作成すれば、式 (IsAdmin) を何度も入力する必要がなくなります。この式が必要になったときは、@Adminを入力するだけで済みます。
ユーザ クラスの定義
1 つ以上のユーザ ディレクトリで一意に参照されないユーザ情報を計算するには、ユーザ クラス属性を定義します。計算の結果は TRUE または FALSE のみになります。結果がユーザに適用されるか、適用されないかのいずれかです。
注
: 以下の手順では、新しいオブジェクトを作成しているとします。また、既存のオブジェクトのプロパティをコピーしてオブジェクトを作成することもできます。以下の手順に従います。
- [ポリシー]-[式]をクリックします。
- [名前付き式]をクリックします。
- [名前付き式の作成]をクリックします。
- [オブジェクトの新規作成]オプションが選択されていることを確認し、[OK]をクリックします。
- [ユーザ クラス]オプションを選択し、[一般]領域に式の名前を入力します。
- [名前付き式の追加]領域の[式]フィールドに、式を入力します。注:式はブール式である必要があります。
- (オプション)[名前付き式の追加]領域で[無効]オプションを選択し、式を無効にします。無効にした式は式エディタにリスト表示されません。また、他の名前付き式または名前のない式はそれを呼び出すことができません。
- (オプション)[名前付き式の追加]領域の[プライベート]オプションを選択します。他の名前付き式のみがプライベート式を呼び出すことができます。名前のない式はプライベート式を呼び出すことができません。
- (オプション)[名前付き式の追加]領域の[編集]をクリックし、[式エディタ]を開きます。
- [サブミット]をクリックします。名前付き式が作成されます。
式エディタの使用方法
式エディタを使用して、以下のタスクを実行できます。
- 関数と演算子、ユーザ定義の名前付き式を検索する
- ブール式の作成
注:
式を直接入力する場合は、[キャンセル]をクリックし、[名前付き式の作成: <名前
>]に戻ります。ここでは、[名前付き式の追加]グループ ボックスの[式]フィールドに式を入力できます。式エディタでのブール式の作成プロセスは、2 つの部分で構成されています。プロセスのこれら 2 つの部分を実行する順番は自由です。
- 条件の作成
- 式の編集
プロセスの最初の部分では、条件を作成して[Infix 形式]グループ ボックスに追加できます。
条件
は、単一の関数または演算子で構成される単純なブール式です。エディタで関数に設定できるパラメータは 3 つまでです。フォーマットは以下のとおりです。FUNCTION_NAME(parameter_1[, parameter_2][, parameter_3])
演算子には、2 つのオペランドが必要です。フォーマットは以下のとおりです。
left_operand operator right_operand
条件はブール式であるため、結果はブール値になります。条件に結果が文字列になる関数や演算子が含まれている場合は、ブール値に変換されます。特に、「TRUE」、「true」、「YES」、「yes」は「TRUE」に変換されます。他の文字列値はすべて、FALSE に変換されます。
同様に、条件に結果が数値になる関数や演算子が含まれている場合は、ブール値に変換されます。ゼロ以外の数値はすべて TRUE に、またゼロは FALSE に変換されます。
以下のように、各条件は[Infix 形式]グループ ボックス上のフィールドに改行して表示され、1 つまたは 2 つのブール演算子によって上の行の条件に連結されます。
condition_1 AND | OR | XOR [NOT] condition_2
プロセスのもう 1 つの部分では、条件の変更と削除、条件をグループ化するかっこの変更、[Infix 形式]グループ ボックスのフィールドの条件を連結するブール演算子の変更などにより、式を編集できます。たとえば、以下のように条件をグループ化する方法を変更できます。
(condition_1 AND condition_2) OR NOT condition_3
can become
condition_1 AND (condition_2 OR NOT condition_3)
関数を含む条件の作成
組み込みの
Single Sign-On
関数を含む条件を作成し、式エディタでその条件を式に追加することができます。以下の手順に従います。
- 関数のドロップダウン リストから関数名を選択するか、[式エディタ]ペインの[条件]グループ ボックスの[関数]フィールドに関数名を入力します。
- [名前付き式]をクリックするか、[条件]グループ ボックスの[最初のパラメータ]フィールドに入力して、最初のパラメータを指定します。注:[名前付き式]をクリックすると、[変数の検索]グループ ボックスが開きます。
- (省略可)名前付き式をクリックするか、[条件]グループ ボックスの[2 番目のパラメータ]フィールドに入力して、2 つ目のパラメータを指定します。注:[名前付き式]をクリックすると、[変数の検索]グループ ボックスが開きます。
- (省略可)ドロップダウン リストから[真]または[偽]を選択するか、[条件]グループ ボックスの[3 番目のパラメータ]フィールドに入力して、最後のパラメータを指定します。
- [追加]をクリックします。指定した関数が、[infix 形式]グループ ボックスおよび[結果として得られる形式]グループ ボックスに追加されます。
演算を含む条件の作成
組み込みの
Single Sign-On
演算を含む条件を作成し、式エディタでその条件を式に追加することができます。以下の手順に従います。
- [式エディタ]ペインの[条件]グループ ボックスのドロップダウン リストから、演算子のタイプと演算子を選択します。
- [名前付き式]をクリックするか、[条件]グループ ボックスの[左パラメータ]フィールドに入力して、左オペランドを指定します。
- [名前付き式]をクリックするか、[条件]グループ ボックスの[右パラメータ]フィールドに入力して、右オペランドを指定します。
- [追加]をクリックします。指定した演算が、[infix 形式]グループ ボックスおよび[結果として得られる形式]グループ ボックスに追加されます。
式を編集する方法
式エディタで作成た条件はそれぞれ、[infix 形式]グループ ボックスのフィールド内の別々の行に表示されます。式を作成する場合は、[infix 形式]グループ ボックスのボタンを使用することで、条件をグループ化するかっこと、式を接続するブール演算子を変更することができます。
式の編集は、3 段階のプロセスです。1 つ目の手順には、4 つのオプションがあります。これらのオプションは、任意の順序で繰り返すことができます。
- オプションを選択します。
- 式で条件を変更する
- 式から条件を削除する
- 式の中で条件をグループ化する
- 式でブール演算子を変更する
- (省略可)手順 1 を繰り返します。
- [OK]をクリックして、式エディタを閉じます。
式で条件を変更する
式に含まれる条件は、式エディタの[infix 形式]グループ ボックスにある[変更]ボタンをクリックして変更できます。
式に含まれる条件を変更する方法
- 条件をクリックして選択します。
- [変更]をクリックします。[編集]グループ ボックスに条件が表示されます。
式から条件を削除する
式に含まれる 1 つまたは複数の条件は、式エディタの[infix 形式]グループ ボックスにある[削除]ボタンをクリックして削除できます。
式から条件を削除する方法
- 条件をクリックして選択します。注:複数の隣接した条件を選択するには、Shift キーを押したままクリックします。
- [削除]をクリックします。選択した条件が式から削除されます。注:複数の条件を選択して[削除]をクリックすれば、一度に削除できます。
式の中で条件をグループ化する
式に含まれる条件のグループは、式エディタの[infix 形式]グループ ボックスでかっこを追加または削除するボタンをクリックして変更できます。
式に含まれる条件のグループを変更する方法
- 2 つ以上の隣接した条件をクリックして選択します。注:複数の隣接した条件を選択するには、Shift キーを押したままクリックします。
- 以下の 2 つのボタンのいずれかをクリックします。( )選択した条件の外側に丸かっこを追加します。例:condition_1AND condition_2変更後(condition_1AND condition_2)Remove( )選択した条件の外側から丸かっこを削除します。例:(condition_1OR condition_2OR condition_3)変更後condition_1OR condition_2OR condition_3編集後の式が、式エディタの[結果として得られる形式]および[infix 形式]グループ ボックスに表示されます。
式でブール演算子を変更する
式に含まれるブール演算子は、式エディタの[infix 形式]グループ ボックスにある以下のボタンのいずれかをクリックして変更できます。
- And/Or
- Not
- XOR
- 条件付き?はい:いいえ
以下の手順に従います。
- 1 つ、または複数の条件をクリックして選択します。注:複数の隣接した条件を選択するには、Shift キーを押したままクリックします。
- 以下のいずれかのボタンをクリックします。And/Orブール演算子 AND と OR を切り替えます。例:AND condition_1変更後OR condition_1注:[And/Or]ボタンは XOR を AND に切り替えます。Notブール演算子 NOT の追加と削除を切り替えます。例:AND condition_1変更後AND NOT condition_1XORブール演算子 AND と OR を XOR に切り替えます。例:AND condition_1変更後XOR condition_1注:排他的論理和(XOR)演算子は 2 つのブール オペランドを取り、両方ではなく一方のオペランドが TRUE の場合、TRUE を返します。条件付き?はい:いいえ条件付きの決定演算子を追加します。例:condition_1変更後condition_1 ? "YES" : "NO"編集後の式が、式エディタの[結果として得られる形式]および[infix 形式]グループ ボックスに表示されます。
名前付き式の適用
このユース ケースでは、衣料品小売会社で、顧客がクレジット限度に達するかそれを超えたら Web 上でクレジットによる購入を行えないようにするロールを定義するシナリオを表します。この会社のポリシーでは、顧客のクレジット限度を 1,000 ドルとし、従業員のクレジット限度を 2,000 ドルとしています。
このユース ケースでは、環境に 2 つのユーザ ディレクトリが含まれています。
- ディレクトリ A には、従業員が格納されます。従業員は顧客になることもあります。そのため、ディレクトリ A では、グループ cn=Customers,ou=Groups,o=acme.com のメンバである従業員を顧客として識別します。
- ディレクトリ B は顧客のみ格納します。すべてのユーザが顧客であるため、ディレクトリ B には顧客を識別するユーザ属性がありません。
属性マッピング、仮想ユーザ属性、およびユーザ クラスを使用して、どのように会社のクレジット ポリシーを満たすかを、以下に詳しく説明します。
- ユーザ属性マッピングと、各ユーザ ディレクトリの顧客を識別するユニバーサルなスキーマまたは共通名を作成します。
- ディレクトリ A(従業員)にはグループ名属性マッピングを作成します。
- このマッピングの名前をIsCustomerとします。
- IsCustomer をcn=Customers,ou=Groups,o=acme.comとして定義します。
- ディレクトリ B(顧客)には定数属性マッピングを作成します。
- このマッピングの名前をIsCustomerとします。
- IsCustomerを真に定義します。
注:IsCustomer は、ディレクトリ A とディレクトリ B 内の同じユーザ情報にマッピングする共通名です。この情報にアクセスするために、式で IsCustomer を使用することができます。
- 定数属性マッピングと、各ユーザ ディレクトリの会社のクレジット限度を識別するユニバーサルなスキーマまたは共通名を作成します。
- ディレクトリ A(従業員)には定数属性マッピングを作成します。
- このマッピングの名前をCreditLimitとします。
- CreditLimit を2000として定義します。
- ディレクトリ B(顧客)には定数属性マッピングを作成します。
- このマッピングの名前をCreditLimitとします。
- CreditLimit を1000として定義します。
注:CreditLimit は、ディレクトリ A とディレクトリ B 内の同じユーザ情報にマッピングする共通名です。この情報にアクセスするために、式で CreditLimit を使用することができます。
- #CreditBalanceは仮想ユーザ属性とします。この属性によって、監査データベースからユーザのクレジット残高を取得します。
- 顧客のクレジット残高がクレジット限度よりも低い場合に TRUE 値を返すユーザ クラスを作成します。
- ユーザ クラスの名前を@IsUnderCreditLimitとします。
- @IsUnderCreditLimit を以下のように定義します。(IsCustomer AND (#CreditBalance < CreditLimit))注:この式は、Single Sign-On式の構文ルールに従います。
- クレジット残高がクレジット限度よりも少なければ顧客が Web 上での購入を行うことを可能にする EPM ロールを作成します。
- ロールの名前をPurchaseWithCreditとします。
- ロールを@IsUnderCreditLimitとして定義します。