![]() | |
Sun Java™ System Identity Manager 7.1 配備ツール |
第 2 章
規則の操作この章では、Identity Manager の規則と規則ライブラリの操作方法について説明します。
これらの情報は、次のように構成されています。この章は、次の節で構成されています。
注
配備環境用に規則を作成、編集、およびテストするには、Sun Identity Manager Integrated Development Environment (Identity Manager IDE) を使用します。手順については、第 1 章「Identity Manager IDE の使用」を参照してください。
Identity Manager Business Process Editor (BPE) アプリケーションを使用して、規則を作成、編集、および妥当性検査することもできます。付録 A 「ビジネスプロセスエディタの使用方法」を参照してください。
規則と規則ライブラリについてここでは、次の内容を説明します。
規則とは何か
規則とは、XPRESS、XML オブジェクト、または JavaScript 言語で記述された関数を含む Identity Manager リポジトリのオブジェクトです。Identity ManagerIdentity Manager 内で、規則は頻繁に使用されるロジックや静的な変数を、フォーム、ワークフロー、およびロール内で再利用できるように格納するためのメカニズムを提供します。
引数を規則に渡して、規則の動作を制御することができます。また、規則はフォームやワークフローによって保守される変数を、参照または変更することもできます。
注
XPRESS および XML オブジェクトは、両方とも XML で作成されるため、この章で紹介する XPRESS および XML オブジェクトのコード例はどちらも同じように見えます。
この章は、XPRESS 言語に精通していることを前提にしています。XPRESS の使用方法の詳細については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。
JavaScript での規則の記述については、「JavaScript での規則の記述」を参照してください。
コード例 2-1 は単純な XML 規則です。規則名は <Rule> 要素の name 属性によって定義され、文字列値 john または mary を返します。規則本体は <Rule> 要素内の XPRESS 式です。
コード例 2-1 XML 規則の例
<Rule name='getApprover'>
<cond><eq><ref>department></ref><s>sales</s></eq>
<s>john</s>
<s>mary</s>
</cond>
</Rule>
規則を使用する理由
XPRESS を使用できる場所であればどこでも、規則を呼び出すことができます。特にワークフローやフォーム内でよく使用します。規則を使用することにより、ロジックのフラグメントや静的な値をカプセル化し、それを多くの場所で再利用できます。
XPRESS ロジックや静的な値を保存して再利用することには、次の利点があります。
フォーム内での規則の使用
通常、規則はフォーム内で呼び出して、allowedValues 表示プロパティーを算定したり、<Disable> 式内のフィールド可視性を制御したりします。フォーム内で次のものを格納して再利用するには、規則が最も効率的なメカニズムとなる場合があります。
フォームから規則を呼び出す場合は、これらのフォームのセキュリティー保護を適切に行うことが特に重要です。規則のセキュリティー保護については、「規則のセキュリティー保護」を参照してください。
コード例 2-2 の規則は、役職のリストを返します。Identity Manager フォームでは、選択肢の名前のリストを計算するために、このような規則がよく使われます。新しい役職を追加または変更する場合は、この規則を変更するだけでよく、この規則を参照するすべてのフォームを修正する必要はありません。
コード例 2-2 役職リストを返す
<Rule name='Job Titles'>
<list>
<s>Sales</s>
<s>Accounting Manager</s>
<s>Customer Service Representative</s>
</list>
</Rule>
コード例 2-3 のフィールドは、前の例で定義された規則を呼び出して、役職リストを選択ボックスで使用します。
ロール内での規則の使用
規則を使用して、ロール定義に任意のリソース属性の値を設定することができます。規則が評価されると、規則はユーザービューの任意の属性を参照できるようになります。
コード例 2-4 の規則は、ユーザーのリソース記述の値を設定します (NT など)。この規則に関連付けられたロールを持つユーザーが作成されると、この規則に従って記述値が自動的に設定されます。
コード例 2-4 ユーザーのリソース記述の値の設定
<Rule name='account description'>
<concat>
<s>Account for </s>
<ref>global.firstname</ref>
<ref>global.lastname</ref>
<s>.</s>
</concat>
</Rule>
Identity Manager のフォームとワークフローは、別の規則の名前を動的に計算して呼び出す規則をサポートします。コード例 2-5 は、部門コードを計算する規則を呼び出すフォームフィールドを示しています。
コード例 2-5 部門コードを計算する規則の呼び出し
<Field name='DepartmentCode'>
<Display class='Text'>
<Property name='title' value='DepartmentCode'/>
</Display>
<Expansion>
<rule>
<cond>
<eq>
<ref>var1</ref>
<s>Admin</s>
</eq>
<s>AdminRule</s>
<s>DefaultRule</s>
</cond>
</rule>
</Expansion>
</Field>
ワークフローアクティビティーには、サブプロセス名を動的に計算する規則を含む、サブプロセスを含めることもできます。
コード例 2-6 サブプロセス名の動的な計算
<Activity id='0' name='activity1'>
<Variable name='ValueSetByRule'>
<rule>
<cond>
<eq><ref>var2</ref><s>specialCase</s></eq>
<s>Rule2</s>
<s>Rule1</s>
</cond>
<argument name='arg1'>
<ref>variable</ref>
</argument>
</rule>
</Variable>
</Activity>
ワークフロー内での規則の使用
ワークフロー内では、規則を次の目的で使用できます。
コード例 2-7 は、承認リクエストを管理者に送信するために使用される手動アクションを示しています。このアクションにはタイムアウト値を指定できます。管理者が指定された時間内に応答しない場合、アクションは終了し、ワークフローは承認を別の管理者にエスカレーションします。
次の例では、タイムアウトが 86,400 秒、つまり 24 時間の固定値で指定されています。
コード例 2-8 は、timeout 規則を呼び出す手動アクションを示しています。
コード例 2-8 timeout 規則の呼び出し
<ManualAction>
<Owner name='$(approver)'/>
<Timeout>
<rule name='Approval Timeout'/>
</Timeout>
<FormRule>
<ref>approvalForm</ref>
</FormRule>
</ManualAction>
ライブラリとは何か
規則ライブラリは、Identity Manager リポジトリに格納される XML 設定オブジェクトです。この設定オブジェクトには、1 つ以上の規則オブジェクトを含む、ライブラリオブジェクトが含まれます。
規則ライブラリ の作成は、密接に関連する規則を単一オブジェクトに編成するために便利な方法です。ライブラリを使用すると、リポジトリ内のオブジェクト数が削減され、フォームやワークフローの設計者は有用な規則を簡単に特定して呼び出せるようになるため、規則の保守が容易になります。
たとえば、コード例 2-9 は、2 つの異なるアカウント ID 生成規則を含むライブラリを示しています。
コード例 2-9 2 つのアカウント ID 生成規則を含む規則ライブラリの使用
<Configuration name='Account ID Rules'>
<Extension>
<Library><Rule name='First Initial Last'>
<expression>
<concat>
<substr>
<ref>firstname</ref>
<i>0</i>
<i>1</i>
</substr>
<ref>lastname</ref>
</concat>
</expression>
</Rule><Rule name='First Dot Last'>
<expression>
<concat>
<ref>firstname</ref>
<s>.</s>
<ref>lastname</ref>
</concat>
</expression>
</Rule></Library>
</Extension>
</Configuration>
Identity Manager IDE を使用して、デフォルトの規則ライブラリを表示および編集したり、既存のライブラリオブジェクトに新しい規則を追加したりできます。詳細については、「リポジトリオブジェクトの操作」を参照してください。
デフォルト規則および規則ライブラリのカスタマイズIdentity Manager IDE を使用してデフォルトの Identity Manager 規則を編集し、カスタムのステップセットに従うようにできます。Identity Manager には、デフォルト規則と規則ライブラリのライブラリが付属しており、次の内容が含まれます。
Active Sync 規則
Active Sync アダプタはリソース上のアカウントに加えられた変更を検出すると、着信属性を Identity Manager ユーザーにマップするか、または Identity Manager ユーザーアカウントを作成します。
表 2-1 は、定義済みの Active Sync 規則を一覧で示しています。
表 2-1 定義済み Active Sync 規則
規則名
説明
ActiveSync has isDeleted set
「削除を更新として処理」が false に設定されているリソースからの移行で使用されます
No Correlation Rule
相関規則が不要な場合に使用するデフォルト規則
No Confirmation Rule
相関規則が不要な場合に使用するデフォルト規則
英数字規則ライブラリ
英数字規則のデフォルトライブラリを使用することにより、Identity Manager のフォームとワークフロー内で、数字と文字を順序付けまたは表示する方法を制御できます。Identity Manager IDE では、このライブラリは Alpha Numeric Rules ライブラリオブジェクトとして表示されます。
表 2-2 は、このライブラリの規則を一覧で示しています。
表 2-2 デフォルトの英数字規則
規則名
説明
AlphaCapital
英大文字のリスト
AlphaLower
英小文字のリスト
Numeric
数字のリスト
WhiteSpace
空白文字のリスト
SpecialCharacters
共通特殊文字のリスト
IllegalNTCharacters
不正な NT 文字のリスト
legalEmailCharacters
str がすべて数字であるかどうかをテストして確認します。
isNumeric
str が数字だけかどうかをテストして確認します。
isAlpha
str が英字だけかどうかをテストして確認します。
hasSpecialChar
str に特殊文字が含まれているかどうかをテストして確認します。
hasWhiteSpace
str に空白文字が含まれているかどうかをテストして確認します。
isLegalEmail
str に含まれている文字が電子メールアドレスに適しているかどうかをテストして確認します。
hasIllegalNTChar
str がすべて数字であるかどうかをテストして確認します。
stringToChars
指定された文字列 (testStr 引数として渡される) をコンポーネント文字のリストに変換します。
StripNonAlphaNumeric
英数字以外の文字を testStr から削除します。
監査規則
複雑さを最小限に抑えながら高レベルの設定を可能にするために、Identity Auditor は、監査ポリシーやアクセススキャンオブジェクト設定内で規則をうまく利用します。
表 2-3 は、監査ポリシー是正の動作方法やアクセススキャンの操作方法をカスタマイズするために使用できる規則の概要を示しています。
表 2-3 監査規則の種類のクイック参照
規則の種類
規則の例
subTypes および authTypes
目的
アテスター
Default Attestor
SubType: ATTESTORS_RULE
AuthType: AccessScanRule
手動エンタイトルメントに対してデフォルトアテスターを指定することで、アテステーションプロセスを自動化します。
アテスターエスカレーション
Default EscalationAttestor
SubType:
AttestorEscalationRuleAuthType: AccessScanRule
手動アテステーションに対してデフォルトのエスカレーションユーザーを指定することで、アテステーションプロセスを自動化します。
監査ポリシー
Compare Accounts to Roles
SubType: SUBTYPE_AUDIT_POLICY_RULE
SubType: SUBTYPE_AUDIT_POLICY_SOD_RULE
AuthType: AuditPolicyRule
ユーザーアカウントを現在のロールによって指定されたアカウントと比較します。
Compare Roles to Actual Resource Values
SubType: SUBTYPE_AUDIT_POLICY_RULE
SubType: SUBTYPE_AUDIT_POLICY_SOD_RULE
AuthType: AuditPolicyRule
現在のリソース属性を、現在のロールによって指定されたリソース属性と比較します。
是正ユーザーフォーム
SubType: USER_FORM_RULE
AuthType: 指定しない
特定のポリシー違反に応答するときにどの部分のユーザービューを表示するのかを、監査ポリシーの作者が制約できるようにすることで、アテステーションプロセスを自動化します。
是正者
Default Remediator
SubType: REMEDIATORS_RULE
AuthType: AccessScanRule
是正状態で作成されるすべてのエンタイトルメントに対して是正者を指定することで、是正プロセスを自動化します。
レビュー決定
Reject Changed Users
SubType:
REVIEW_REQUIRED_RULEAuthType: AccessScanRule
ユーザーエンタイトルメントレコードを自動的に却下することによって、アテステーションプロセスを自動化します。
Review Changed Users
SubType:
REVIEW_REQUIRED_RULEAuthType: AccessScanRule
ユーザーエンタイトルメントレコードを自動的に承認することによって、アテステーションプロセスを自動化します。
Review Everyone
SubType:
REVIEW_REQUIRED_RULEAuthType: AccessScanRule
一部のユーザーエンタイトルメントレコードに手動アテステーションを必要とすることで、アテステーションプロセスを自動化します。
ユーザー範囲
All Administrators
SubType: USER_SCOPE_RULE
AuthType: AccessScanRule
アクセススキャンによってスキャンされるユーザーのリストを柔軟に選択できるようにします。
All Non-Administrators
SubType: USER_SCOPE_RULE
AuthType: AccessScanRule
アクセススキャンによってスキャンされるユーザーのリストを柔軟に選択できるようにします。
Users Without a Manager
SubType: USER_SCOPE_RULE
AuthType: AccessScanRule
アクセススキャンによってスキャンされるユーザーのリストを柔軟に選択できるようにします。
ViolationPriority
ViolationPriority
SubType: 指定しない
AuthType:
EndUserAuditorRuleカスタマイズ。配備において、有効な違反の優先度と対応する表示文字列を指定できるようにします。
ViolationSeverity
ViolationSeverity
SubType: 指定しない
AuthType:
EndUserAuditorRuleカスタマイズ。配備において、有効な違反の重要度と対応する表示文字列を指定できるようにします。
次の節では、次の Identity Auditor 規則について説明し、それぞれをカスタマイズする場合の方法とその理由について説明します。
アテスター規則
保留状態で作成されたユーザーエンタイトルメントは、だれかがアテストする必要があります。Identity Auditor は、アクセスレビュー時に各ユーザービューをアテスター規則に渡し、最初のアテステーションリクエストを取得する担当者を決定します。
WSUser オブジェクトの idmManager 属性には、ユーザーのマネージャーの Identity Manager アカウント名と ID が含まれています。
代替の実装を使用して、IdmManager と任意のリソース所有者の両方を (ビューに含まれるリソースの) アテスターとして指定できます。この規則では、現在のユーザービューと LighthouseContext オブジェクトを入力値として使用するので、Identity Manager によって認識されているすべてのデータを使用できます。
カスタムアテスト規則には、次を指定する必要があります。
呼び出し: アクセススキャン時で、すべての監査ポリシーの評価後だが、ユーザーエンタイトルメントをディスパッチする前
返される値: ゼロ以上の Identity Manager アテスター名 (特定のユーザーエンタイトルメントのアテストを担当するユーザー) または NamedValue のペアのリスト。
- 結果が文字列の場合は、Identity Manager アカウント ID に解決する必要があります。アクセススキャンの委任が有効である場合、アクセススキャンはコードによって返される Identity Manager ユーザーの委任設定を使用します。
- 結果が NamedValue である場合、これはバインドされた委任ペア [委任者, 被委任者] であると想定され、アクセススキャンはこれ以上の解決を行いません。
- 結果が有効な Identity Manager ユーザー名でない場合、規則はスキャンタスク結果にエラーを追加しますが、スキャンスレッドは続行されます。
- 結果が長さゼロ (0) のリストの場合、だれもアテステーションリクエストを処理しないので、リクエストは保留状態のままになります。
- 結果が文字列でも NamedValue でもない場合は、例外が発生し、スキャンスレッドが中止されます。
場所: 「コンプライアンス」>「ポリシーの管理」>「アクセススキャン」>「アテスター規則」
アテスターエスカレーション規則
指定された時間内にアテスターが何もアクションを起こさなかったためにアテステーションが時間切れになった場合、ワークフローはアテスターエスカレーション規則を呼び出します。この規則はサイクルカウントに基づいて、エスカレーションチェーン内の次の人を返します。
カスタムアテスターエスカレーション規則には、次を指定する必要があります。
SubType: AttestorEscalationRule
呼び出し: アテステーションワークフローにおいて、作業項目が時間切れした場合 (デフォルトのタイムアウトは 0 に設定されており、絶対に時間切れしないようになっている)。
返される値: 単一のアテスター名か、複数のアテスター名のリスト。これらは有効な Identity Manager アカウント名である必要があります。
定義済み規則: Default EscalationAttestor
場所: 「コンプライアンス」>「ポリシーの管理」>「アクセススキャン」>「アテスターエスカレーション規則」
監査ポリシー規則
監査ポリシーには、監査対象のオブジェクトを表すデータに適用される規則のセットが含まれています。各規則はブール値 (およびいくつかのオプション情報) を返すことができます。
ポリシーに違反しているかどうかを決定するために、監査ポリシーは各規則の結果の論理演算を評価します。監査ポリシーに違反している場合、コンプライアンス違反オブジェクトが、通常はポリシー、規則、または監査対象となったものごとに 1 つずつ発生します。たとえば、5 つの規則を含む監査ポリシーの場合は、5 つの違反が発生します。
なし
カスタム監査ポリシー規則には、次を指定する必要があります。
注
監査ポリシーウィザードを使用して監査ポリシー規則を作成する場合、このウィザードはデフォルトで AuditPolicyRule authType を使用します。
Identity Manager IDE または Identity Manager ビジネスプロセスエディタ (BPE) を使用して監査ポリシー規則を作成する場合は、必ず AuditPolicyRule authType を指定するようにしてください。
返される値: 監査ポリシー規則は整数値を返す必要がありますが、この値は次のいずれかのように表すことができます。
監査ポリシーがマップを返す場合、その他の要素が結果のコンプライアンス違反に影響することもあります。これらの要素には次のものがあります。
- resources 要素: コンプライアンス違反が 2 つのリソース (resource one および resource two) を参照するようになります。コンプライアンス違反には (名前を ID に解決できるように) 実際のオブジェクト参照が含まれているので、これらの値は実際のリソース名でなくてはなりません (デフォルトは no resource)。
- severity 要素: コンプライアンス違反が指定した重要度になります (デフォルトは 1)。
- priority 要素: コンプライアンス違反が指定した優先度になります (デフォルトは 1)。
- violation 要素: 監査ポリシーが true と評価した場合でも、監査スキャナが規則違反を作成しないようにします。
是正ユーザーフォーム規則
是正ユーザーフォーム規則は、特定のポリシー違反に応答するときにどの部分のユーザービューを表示するのかを、監査ポリシーの作者が制約できるようにします。
エンタイトルメント是正の処理中に是正者がユーザーを編集すると、JSP (approval/remModifyUser.jsp) が是正ユーザーフォーム規則を呼び出します。この規則によって、ユーザー編集のための適切なフォームをアクセススキャンが指定できるようになります。是正者がすでにユーザーフォームを指定済みである場合、アクセススキャンはそちらのフォームを使用します。
入力値: item 変数 (是正作業項目) を受け入れます。
カスタム是正ユーザーフォーム規則には、次を指定する必要があります。
呼び出し: JSP フォームの処理中に、是正者が是正フォーム上で「ユーザーの編集」をクリックしたあとに呼び出される
是正者規則
アクセスレビュー時にはすべてのユーザービューが是正者規則に渡され、最初の是正リクエストを取得する担当者が決定されます。この規則はアテスター規則と類似していますが、是正者規則は作業項目が是正状態で作成されたときに呼び出される点が異なります。
カスタム是正者規則には、次を指定する必要があります。
呼び出し: アクセススキャン時で、すべての監査ポリシーの評価後で、ユーザーエンタイトルメントをディスパッチする前
返される値: ゼロ以上の Identity Manager 是正者名のリストまたは NamedValue のペア
- 結果が文字列の場合は Identity Manager ユーザーに解決され、アクセススキャンの委任が有効である場合は、そのユーザーの委任データが使用されます。
- 結果が NamedValue の場合は、バインドされた委任ペア [委任者, 被委任者] であると想定されます。
- 結果が 1 つ以上の無効な Identity Manager ユーザー名の場合、スキャンタスク結果に問題点を示すエラーが追加されますが、スキャンスレッドは続行されます。
- 結果が文字列でも NamedValue でもない場合は、例外が発生し、スキャンスレッドが中止されます。
- 結果が長さゼロ (0) のリストの場合、だれも是正リクエストを処理しないので、リクエストは保留状態のままになります。
場所: 「コンプライアンス」>「ポリシーの管理」>「アクセススキャン」>「是正者規則」
レビュー決定規則
アクセスレビュー時にはすべてのユーザービューがレビュー決定規則に渡され、対応するユーザーエンタイトルメントレコードの自動承認または自動却下が可能か、是正状態への自動配置が可能か、あるいは手動でアテストする必要があるかのどうかが判別されます。
レビュー決定規則を使用すると、アクセスレビューの効率を大幅に向上させることができます。
ユーザーを自動承認または自動却下できるようにする制度的な知識をすべてカプセル化し、その知識をこの規則内で表すことができたら、必要とされる手動アテステーションの数が減少し、レビュー全体のパフォーマンスが向上します。
さらに改善を重ねれば、この規則によって、アテスターに対して「ヒント」として表示される情報を返すこともできます。たとえば、ユーザーがリソースに対して優先的にアクセスできることを規則によって通知する場合は、こちらの例 1 にある attestorHint を参照してください。
また、レビュー決定規則はユーザービュー (コンプライアンス違反を含む) にアクセスして、ユーザーの以前のユーザーエンタイトルメントを比較することができるので、これまでに承認されているユーザーエンタイトルメントと同じ (または異なる) すべてのユーザーエンタイトルメントをこの規則によって承認または却下することもできます。
カスタムレビュー決定規則には、次を指定する必要があります。
呼び出し: アクセススキャン時で、すべての監査ポリシーの評価後で、ユーザーエンタイトルメントをディスパッチする前
例 1: ユーザーエンタイトルメントを手動でアテストします。規則は手動アテスターへのヒントを提示しています。
<map>
<result>
<i>1</i>
<s>reason</s>
<s><reason that the attestation was auto-approved/rejected></s>
<s>attestorHint</s>
<s><hint to attestor></s>
</map>
例 2: ユーザーエンタイトルメントを自動却下します。却下のコメントには、グループメンバーシップが許可されていないことが示されています。
<map>
<s>result</s>
<i>0</i>
<s>reason</s>
<s>User belongs to NT group Domain Administrators</s>
</map>
- Reject Changed Users: 最後の承認状態以後に変更されたユーザーエンタイトルメントを自動的に却下し、変更されていないユーザーエンタイトルメントを自動的に承認します。すべての不明な UserViews は手動アテステーションに転送されます。ユーザービューの accounts セクションのみが比較されます。
- Review Changed Users: 最後の承認状態以後にアカウントデータが変更されていないユーザーを自動的に承認します。アカウントデータの変更されたユーザーや、承認データのないユーザーは、手動でアテストします。ユーザービューの accounts セクションのみが比較されます。
- Review Everyone: すべてのユーザーエンタイトルメントレコードを手動アテステーションに転送します。
場所: 「コンプライアンス」>「アクセススキャンの管理」>「アクセススキャン」>「レビュー決定規則」
ユーザー範囲規則
アクセススキャンのユーザー範囲が規則によって制限されている場合、ユーザー範囲規則は、スキャンするユーザーのリストを決定するための評価を行います。
入力値: lhcontext 変数 (LighthouseContext) を受け入れます。
カスタムユーザー範囲規則には、次を指定する必要があります。
返される値: Identity Manager ユーザー名または Identity Manager ユーザー名のリスト。どの名前も有効な Identity Manager ユーザー名である必要があります。
場所: 「コンプライアンス」>「アクセススキャンの管理」>「アクセススキャン」>「ユーザー範囲規則」
ViolationPriority 規則
ViolationPriority 規則を使用すると、配備において、有効な違反の優先度と対応する表示文字列を指定できるようになります。
カスタム ViolationPriority 規則には、次を指定する必要があります。
呼び出し: 違反リストを表示するときと、違反の優先度を変更するとき
返される値: 優先度の整数値と対応する文字列を示す key/value ペアのリスト。この規則はマップではなくリストを返すので、整数値は連続している必要があります。
注
この規則をカスタマイズして、任意の優先度設定の表示値を変更することができます。
コンプライアンス違反が作成されたら、是正作業項目リストのビューア内で優先度の値を変更できます。1 つ以上の是正作業項目を選択して「優先度の設定」を選択すると、優先度の値を変更できるようになります。
これらの値を是正作業項目リストビューに表示するには、includeCV オプションを true (デフォルトは false) に設定することで、approval/remediate.jsp ページを変更する必要があります。ただし、詳細なビューを有効にするとパフォーマンスに影響が出るので、是正の多い配備では受け入れられないこともあります。
カスタム値は ViolationPriority 規則をマップではなく配列であると想定します。したがって、整数値として 100 を使用する場合、規則には (整数と文字列が交互になった) 200 の要素が必要です。リストにはこの整数の文字列マッピングが表示されると同時に、フォーム内の変更を行なった場所に選択内容が入力されます。
ViolationSeverity 規則
ViolationSeverity 規則を使用すると、配備において、有効な違反の重要度と対応する表示文字列を指定できるようになります。
カスタム ViolationSeverity 規則には、次を指定する必要があります。
呼び出し: 違反リストを表示するときと、違反の重要度を変更するとき
返される値: 重要度の整数値と対応する文字列を示す key/value ペアのリスト。この規則はマップではなくリストを返すので、整数値は連続している必要があります。
注
この規則をカスタマイズして、任意の重要度設定の表示値を変更することができます。
コンプライアンス違反が作成されたら、是正作業項目リストのビューア内で重要度の値を変更できます。1 つ以上の是正作業項目を選択して「優先度」を選択すると、重要度の値を変更できるようになります。
これらの値を是正作業項目リストビューに表示するには、includeCV オプションを true (デフォルトは false) に設定することで、approval/remediate.jsp ページを変更する必要があります。ただし、詳細なビューを有効にするとパフォーマンスに影響が出るので、是正の多い配備では受け入れられないこともあります。
カスタム値は ViolationSeverity 規則をマップではなく配列であると想定します。したがって、整数値として 100 を使用する場合、規則には (整数と文字列が交互になった) 200 の要素が必要です。リストにはこの整数の文字列マッピングが表示されると同時に、フォーム内の変更を行なった場所に選択内容が入力されます。
監査規則の複数のアカウントタイプのサンプル
監査規則の複数のアカウントタイプのサンプル規則を使用すると、リソースごとに複数のユーザーアカウントを動的にテストすることができます。次に例を示します。
- 複数のアカウントタイプを持つリソースを設定します (コード例 2-10 を参照)。
コード例 2-10 監査規則の複数のアカウントタイプのサンプル規則
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Waveset PUBLIC 'waveset.dtd' 'waveset.dtd'>
<Waveset>
<Rule subtype='IdentityRule' name='Administrator Identity'>
<concat>
<s>adm</s>
<ref>attributes.accountId</ref>
</concat>
</Rule>
</Waveset>
- 2 つのアカウントを持つユーザーをリソースに追加して、新しいリソース属性を別々に直接割り当てることができるようにユーザーフォームを設定します。
account[Simulated Resource].department
account[Simulated Resource|admin].department
- それぞれのアカウントに別々の値を割り当て、ポリシー規則をテストします。
sample/rules/SampleAuditorRuleMultipleAccountTypes.xml
コンプライアンス違反規則
コンプライアンス違反は、優先度や重要度によって違反を見分けられるようにする重要度と優先度の数値属性をサポートしています。これらの属性は、監査規則の出力に基づいて、違反に割り当てることができます。
たとえば、監査規則によって次のような出力が提示された場合、コンプライアンス違反に割り当てられる重要度は 3 で、優先度は 4 になります。
次の規則は、コンプライアンス違反の数値と表示文字列をマッピングします。
Identity Auditor では、重要度設定または優先度設定の表示値を変更することで、これらの規則をカスタマイズすることができます。
コンプライアンス違反の作成後、是正作業項目リストビューアで 1 つ以上の是正作業項目を選択して「優先度」をクリックすると、重要度や優先度の値を表示および変更できるようになります。
注
重要度や優先度の値を是正作業項目リストビューアに表示するには、approval/remediate.jsp ページを変更して、includeCV オプションを true (デフォルトは false) に設定する必要があります。
ただし、詳細なビューを有効にするとパフォーマンスに影響が出るので、是正の多い配備では受け入れられないこともあります。
DateLibrary
DateLibrary は、配備における日付と時間の表示方法を制御する規則のデフォルトライブラリです。Identity Manager IDE では、このライブラリは Date Library ライブラリオブジェクトとして表示されます。
次の規則を使用して、日付や時間の表示方法をカスタマイズします。
リソースアカウント除外規則サブタイプ
ExcludedAccountRule サブタイプは、リソース操作からのリソースアカウントの除外をサポートします。
authType: ExcludedAccountsRule
コード例 2-11 は、サブタイプを使用する例を示していますが、この例では UNIX アダプタの指定されたリソースアカウントが除外されます。
コード例 2-11 サブタイプの使用例
<Rule name='Excluded Resource Accounts' authType='ExcludedAccountsRule'>
<RuleArgument name='accountID'/>
<defvar name 'excludedList'>
<List>
<String>root</String>
<String>daemon</String>
<String>bin</String>
<String>sys</String>
<String>adm</String>
<String>uucp</String>
<String>nuucp</String>
<String>listen</String>
<String>lp</String>
</List>
</defvar>
<cond>
<eq>
<contains>
<ref>excludedList</ref>
<ref>accountID</ref>
</contains>
<i>1</i>
</eq>
<Boolean>true</Boolean>
<Boolean>false</Boolean>
</cond>
</Rule>
コード例 2-12 は、operation パラメータの使用例を示しています。
このパラメータを使用することにより、Active Sync が "Test User" リソースに対して実行中である場合にも、Identity Manager に影響を与えることなく、このリソースアカウントを操作できます。
コード例 2-12 operation パラメータの使用
<Rule name='Example Excluded Resource Accounts' authType='ExcludedAccountsRule'>
<!--
「Administrator」アカウント上のすべての操作を除外する
「Test User」アカウント上の activeSync イベントを除外する
--><RuleArgument name='accountID'/>
<RuleArgument name='operation'/><!-- IAPI 操作のリスト -->
<defvar name='iapiOperations'>
<List>
<String>iapi_create</String>
<String>iapi_update</String>
<String>iapi_delete</String>
</List>
</defvar>
<or><!-- 管理者アカウントは常に無視する。-->
<cond>
<eq>
<s>Administrator</s>
<ref>accountID</ref>
</eq>
<Boolean>true</Boolean>
<Boolean>false</Boolean>
</cond><!-- 「Test User」アカウントの IAPI イベントは無視する -->
<and>
<cond>
<eq>
<contains>
<ref>iapiOperations</ref>
<ref>operation</ref>
</contains>
<i>1</i></eq>
<Boolean>true</Boolean>
<Boolean>false</Boolean>
</cond><cond>
<eq>
<ref>accountID</ref>
<s>Test User</s>
</eq>
<Boolean>true</Boolean>
<Boolean>false</Boolean>
</cond>
</and>
</or>
</Rule>
命名規則ライブラリ
命名規則ライブラリは命名規則のデフォルトライブラリで、これを使用することにより規則の処理後に名前が表示される方法を制御できます。Identity Manager IDE では、このライブラリは NamingRules ライブラリオブジェクトとして表示されます。
表 2-4 は、デフォルトの命名規則を一覧で示しています。
表 2-4 デフォルトの命名規則
規則名
説明/出力
AccountName - First dot Last
Marcus.Aurelius
AccountName - First initial Last
MAurelius
AccountName - First underscore Last
Marcus_Aurelius
marcus.aurelius@example.com
Fullname - First space Last
Marcus Aurelius
Fullname - First space MI space Last
Marcus A Aurelius
Fullname - Last comma First
Aurelius, Marcus
RegionalConstants ライブラリ
RegionalConstants ライブラリは地域定数規則のデフォルトライブラリで、これを使用することにより、州、日、月、国、およびカナダの州の表示方法を制御できます。Identity Manager IDE では、このライブラリは RegionalConstants 規則ライブラリオブジェクトとして表示されます。
表 2-5 は、デフォルトの命名規則を一覧で示しています。
表 2-5 デフォルト地域定数規則
規則名
説明
US States
米国の州のフルネームのリスト。
US State Abbreviations
米国の州の標準的な省略名のリスト。
Days of the Week
曜日のフルネームのリスト。
Work Days
週の 5 労働日のリスト (米国)。
Months of the Year
年間の月のフルネームのリスト。
Month Abbreviations
選択した月の標準的な省略名のリスト。
Numeric Months of the Year
12 か月のリストを返します。
Days of the Month
31 日 (一か月) のリストを返します。
Smart Days of the Month
数字で月と 4 桁の年に基づいたリストを返します。
Countries
世界の国々の名前を英語でリストします。
Canadian Provinces
カナダの州の名前を英語でリストします。
新しい規則と規則ライブラリの作成ここでは、配備用に規則を作成する方法を説明します。また、次の内容についても説明します。
注
- ロールへの規則の適用については、「ロール内での規則の使用」および『Sun JavaTM System Identity Manager 管理ガイド』を参照してください。
- 既存の規則ライブラリへの規則の追加については、「デフォルト規則および規則ライブラリのカスタマイズ」を参照してください。
- XPRESS を使用した式の作成については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』の XPRESS 言語に関する章を参照してください。
規則構文について
通常、規則は XML で作成され、<Rule> 要素でカプセル化されます。
ここでは、次のトピックを扱います。
<Rule> 要素の使用
コード例 2-13 は、<Rule> 要素を使用して基本の規則式を定義する例を示したものです。name プロパティーは規則の名前を識別します。この規則は XPRESS で作成されています。
コード例 2-13 <Rule> 要素を使用した基本の規則式の定義
<Rule name='getApprover'>
<cond><eq><ref>department></ref><s>sales</s></eq>
<s>Sales Manager</s>
<s>HR Manager</s>
</cond>
</Rule>
固定値を返す
固定値を返す規則の場合は、XML オブジェクト構文を使用して作成できます。
コード例 2-14 は文字列のリストを返します。
コード例 2-14 文字列のリストを返す
<Rule name='UnixHostList'>
<List>
<String>aas</String>
<String>ablox</String>
<String>aboupdt</String>
</List>
</Rule>
注
XML オブジェクト構文の詳細については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』の XML オブジェクト言語に関する章を参照してください。
変数の参照
規則では <ref> 式を使用して外部変数の値を参照できます。使用可能な変数の名前は、規則が使用されるコンテキストによって決定されます。フォーム内で使用する場合は、任意のフォームフィールド、表示属性、または <defvar> で定義されている変数を参照できます。ワークフロー内で使用する場合は、ワークフロープロセス内で定義されている任意の変数を参照できます。
コード例 2-15 では、フォームは規則を使用して電子メールアドレスを計算します。フォームはフィールド global.firstname と global.lastname を定義し、規則がそれらのフィールドを参照します。電子メールアドレスは、global.firstname の最初の文字に global.lastname と文字列 @example.com を連結することによって計算されます。
コード例 2-15 電子メールアドレスの計算
<Rule name='Build Email'>
<concat>
<substr> <ref>global.firstname</ref> <i>0</i> <i>1</i> </substr>
<ref>global.lastname</ref>
<s>@example.com</s>
</concat>
</Rule>
コード例 2-16 では、ワークフローは規則を使用して特定のアクティビティーに遷移すべきかどうかをテストします。ワークフローは、ユーザービューを含む user という名前の変数を定義します。この規則は、このユーザーに NT リソースが割り当てられている場合に true を返し、NT リソースが割り当てられていない場合に NULL を返します。ワークフローエンジンは NULL を false と解釈するため、この場合は遷移しません。
コード例 2-16 遷移のテスト
<Rule name='Has NT Resources'>
<notnull>
<ref>user.accountInfo.types[NT].accounts</ref>
</notnull>
</Rule>
引数を使用した規則の宣言
規則に引数を宣言することは必須ではありませんが、宣言することが良い方法であると考えられています。引数を宣言することにより、規則の作成者にドキュメンテーションを提供し、Identity Manager IDE 内での参照妥当性検査が可能になり、同一の命名規則を使用していない可能性のあるフォームおよびワークフロー内でも、その規則を使用することが可能になります。
規則引数を宣言するには、<RuleArgument> 要素を使用します。次の location 引数に示されているように、引数名の後に値を指定することにより、引数はデフォルト値を取ることができます。
コード例 2-17 デフォルト値の設定
<Rule name='description'>
<RuleArgument name='UserId'/>
<RuleArgument name='location' value='Austin'/>
<concat>
<ref>UserId</ref>
<s>@</s>
<ref>location</ref>
</concat>
</Rule>
注
規則を定義する場合は、<Rule name='rulename'> のように R が大文字の <Rule> 要素を使用します。規則を呼び出す場合は、XPRESS の <rule> 要素は、<rulename='rulename'> のように、小文字の r となります。
この規則をユーザーフォーム内で使用することはできますが、UserId と location はユーザービューの属性ではありません。予期されている引数を規則に渡すために、<argument> 要素を規則の呼び出しで使用します。location という名前の引数を渡すことにより、RuleArgument 要素で宣言されているデフォルト値が上書きされることに注意してください。
コード例 2-18 RuleArgument で宣言されているデフォルト値の上書き
<rule name='description'>
<argument name='UserId' value='$(waveset.accountId)'/>
<argument name='location' value='global.location'/>
</rule>
規則の呼び出しの詳細については、「規則の参照」を参照してください。
引数の型を宣言する正式な方法はありませんが、コメントフィールドでは型を指定できます。<Comment> 要素を使用して、規則にコメントを組み込みます。
コード例 2-19 <Comment> を使用した、規則へのコメントの組み込み
<Comments>
記述規則では、2 つの引数が予期されている。従業員の
ID 番号である文字列値の UserId と、その従業員の
ビルの位置を記述する文字列値 location である
</Comments>
ヒント
規則の編集に Identity Manager IDE を使用している場合、規則引数のリストを形式的に定義すると便利です。このリストは、規則で使用可能になることが予期されている、変数の名前で構成されます。後で Identity Manager IDE で妥当性検査を実行するときに、これらを使用できます。
副作用を伴う規則
一般に、規則は単一の値を返しますが、規則から複数の値が返されるとよい場合もあります。規則式は単一の値しか返すことができませんが、規則は次の XPRESS 式を使用すると外部変数に複数の値を割り当てることができます。
コード例 2-20 では、規則は department という名前の外部変数の値をテストして、値をほかの 2 つの変数に割り当てます。
コード例 2-20 department 変数のテストおよびほかの変数の割り当て
<Rule name='Check Department'>
<switch>
<ref>global.department</ref>
<case>
<s>Engineering</s>
<block>
<setvar name='global.location'>
<s>Building 1</s>
</setvar><setvar name='global.mailServer'>
<s>mailserver.somecompany.com</s>
</setvar></block>
</case><case>
<s>Marketing</s>
<block>
<setvar name='global.location'>
<s>Building 2</s>
</setvar> <setvar name='global.mailServer'>
<s>mailserver2.somecompany.com</s>
</setvar>
</block>
</case>
</switch>
</Rule>
上記の例では、変数 global.location と global.mailServer は、ともに変数 department の値に従って設定されています。この場合、規則の戻り値は無視され、規則はその副作用のためにのみ呼び出されます。
JavaScript での規則の記述
規則が複雑になる場合は、規則を XPRESS ではなく JavaScript で作成するほうが都合がよい場合もあります。JavaScript は <script> 要素でラップすることができます。次に例を示します。
コード例 2-21 <script> 要素での JavaScript のラップ
<Rule name='Build Email'>
<script>
var firstname = env.get('firstname');
var lastname = env.get('lastname');
var email = firstname.substring(0, 1) + lastname + "@example.com";
email;
</script>
</Rule>
フォームおよびワークフロー変数の値を参照するには、env.get 関数を呼び出して変数名を渡します。env.put 関数を使用して、変数名を割り当てることができます。スクリプト内の最後の文の値が規則の値になります。前述の例では、規則は email 変数に値を戻します。
env.call 関数では、ほかの規則を呼び出すことができます。
規則の参照ライブラリ内の規則は、XPRESS の <rule> 式を使用して参照します。name 属性の値は、ライブラリを含む設定オブジェクトの名前と、ライブラリ内部での規則の名前をコロンで連結した形式です。したがって、ライブラリ内のすべての規則名は必ず一意になります。
たとえば次の式は、Account ID Rules という名前のライブラリに含まれる、First Dot Last という名前の規則を呼び出します。
<rule name='Account ID Rules:First Dot Last'/>
ここでは、規則の参照について説明します。説明する内容は次のとおりです。
基本的な規則呼び出し構文
規則は XPRESS が許可されている場所であればどこからでも、フォーム、ワークフロー、または別の規則からでも呼び出せます。
規則を呼び出すには、次のような XPRESS の <rule> 式を使用します。たとえば、次のようにします。
<rule name='Build Email'/>
XPRESS インタプリタは、この式を評価すると、name 属性の値がリポジトリ内の規則オブジェクトの名前であるものと判断します。リポジトリから規則が自動的に読み込まれ、評価されます。規則によって返される値が <rule> 式の結果になります。
上記の例では、規則に明示的に渡される引数はありません。次の例は、argument 要素を使用して規則に渡される引数を示しています。
上記の例では、引数の値は静的文字列 jsmith として指定されています。式を使用して引数の値を計算することもできます。
<rule name='getEmployeeId'>
<argument name='accountId'>
<ref>user.waveset.accountId</ref>
</argument>
</rule>
上記の例では、表示属性 user.waveset.accountId の値を返す、単純な ref 式を評価することによって、引数値が計算されます。
属性を参照することによって引数値を計算することが非常に一般的なため、代わりの構文も用意されています。
上記 2 つの例の動作は同じです。両方が、表示属性 user.waveset.account の値を引数の値として渡します。
規則引数の解決
ほとんどの規則には、変数の値を取得するための XPRESS <ref> 式または JavaScript env.get 呼び出しが含まれています。これらの変数の値を取得する方法を制御するために、いくつかのオプションが使用可能です。
最も単純なケースでは、規則を呼び出すアプリケーションがすべての参照を解決しようとします。ワークフローから呼び出される規則の場合、ワークフロープロセッサはすべての参照先がワークフロー変数であると想定します。フォームから呼び出される規則の場合、フォームプロセッサはすべての参照先がビュー内の属性であると想定します。呼び出し側の規則名を動的に解決することにより、規則を別の規則から呼び出すこともできます。
オプションの <RuleArgument> 要素も使用することができます。この要素については、「引数を使用した規則の宣言」で説明されています。
ここでは、次の内容を説明します。
範囲または明示的な引数の呼び出し
ここでは、規則引数解決の例を示します。
コード例 2-22 は、ユーザービューで使用できるフォームに規則を追加する例を示しています (ユーザービューに属性名があるため)。
コード例 2-22 フォームに規則を追加
<Rule name='generateEmail'>
<concat>
<ref>global.firstname</ref>
<s>.</s>
<ref>global.lastname</ref>
<s>@example.com</s>
</concat>
</Rule>
この規則は 2 つの変数を参照します。
コード例 2-23 に示されているように、Field 内でこの規則を呼び出すことができます。
コード例 2-23 フィールド内での規則の呼び出し
<Field name='global.email'>
<Expansion>
<rule name='generateEmail'/>
</Expansion>
</Field>
これは、プログラミング言語のグローバル変数の概念に似ており、ユーザーフォーム内のみで使用される単純な規則を作成するには便利な方法です。しかし、このスタイルの規則設計には 2 つの問題があります。第一に、規則がどの変数を参照するかがフォーム設計者には不明です。第二に、規則はユーザービューの属性を参照するため、規則はユーザーフォームからしか呼び出せません。一般に、ワークフローでは global.firstname および global.lastname という名前の変数を定義しないため、ほとんどのワークフローからは規則を呼び出すことができません。
規則引数を明示的に渡したり、特定のビューに依存しない名前を使用する規則を作成したりすることにより、これらの問題に対処できます。
コード例 2-24 は、変数 firstname と lastname を参照する規則の修正版を示しています。
コード例 2-24 firstname および lastname 変数を参照する規則
<Rule name='generateEmail'>
<concat> ¥
<ref>firstname</ref>
<s>.</s>
<ref>lastname</ref>
<s>@example.com</s>
</concat>
</Rule>
コード例 2-25 に示されている規則は、ユーザーフォームから呼び出すことを前提にしていないため、より簡潔でより一般化されています。しかしその場合、次のように明示的な引数を指定して規則を呼び出す必要があります。
コード例 2-25 明示的な引数を指定した規則の呼び出し
<Field name='global.email'>
<Expansion>
<rule name='generateEmail'>
<argument name='firstname' value='$(global.firstname)'/>
<argument name='lastname' value='$(global.lastname)'/>
</rule>
</Expansion>
</Field>
argument 要素の name 属性は、規則内で参照される変数に対応します。これらの引数の値は、ユーザービューのグローバル属性の値に割り当てられます。こうすることで、規則は呼び出し側アプリケーションによって使用される命名規則から孤立した状態に保たれ、規則はほかのコンテキストで使用できるようになります。
ローカル範囲オプション
引数が明示的に規則に渡されていても、明示的な引数として渡されないその他の変数への参照が、システムのデフォルトでは可能になっています。コード例 2-26 は、規則を呼び出しても引数を 1 つしか渡さないワークフローアクションを示しています。
コード例 2-26 規則を呼び出し、単一の引数を渡すワークフローアクション
<Action>
<expression>
<setvar name='email'>
<rule name='generateEmail'>
<argument name='firstname' value='$(employeeFirstname)'/>
</rule>
</setvar>
</expression>
</Action>
規則が評価されると、ワークフロープロセッサは変数 lastname の値を指定するよう求められます。この名前のワークフロー変数が存在しても、それがこの規則での使用を意図した変数ではない場合もあります。意図していない変数参照を防ぐために、規則を定義する際に localScope オプションを指定します。
このオプションは、Rule 要素の localScope 属性を true に設定することによって有効になります。
コード例 2-27 Rule 要素の localScope 属性を true に設定
<Rule name='generateEmail' localScope='true'>
<concat>
<ref>firstname</ref>
<s>.</s>
<ref>lastname</ref>
<s>@example.com</s>
</concat>
</Rule>
このオプションを設定することにより、規則は呼び出し内で引数として明示的に渡された値のみを参照することが許可されます。前述のワークフローアクションの例から呼び出した場合、lastname 変数の参照は NULL を返すことになります。
いろいろなコンテキストでの一般的な使用を意図した規則には、常にローカル範囲オプションを使用するようにします。
規則引数宣言
必須ではありませんが、規則によって参照される可能性のあるすべての引数の明示的な宣言を、規則定義内に含めるのが良い方法であると考えられています。引数宣言には数々の利点があり、次のようなことが可能です。
コード例 2-28 に示されているような generateEmail 規則を再作成することも可能です。
コード例 2-28 generateEmail 規則の再作成
<Rule name='generateEmail' localScope='true'>
<RuleArgument name='firstname'>
<Comments>The first name of a user</Comments>
</RuleArgument>
<RuleArgument name='lastname'>
<Comments>The last name of a user</Comments>
</RuleArgument>
<RuleArgument name='domain' value='example.com'>
<Comments>The corporate domain name</Comments>
</RuleArgument>
<concat>
<ref>firstname</ref>
<s>.</s>
<ref>lastname</ref>
<s>@</s>
<ref>domain</ref>
</concat>
</Rule>
Comments 要素には、規則を調べるユーザーに役立つと思われる、任意の量のテキストを含めることができます。
規則は修正され、domain という名前の別の引数が定義されています。この引数にはデフォルト値 example.com が指定されています。呼び出し側が domain という名前の明示的な引数を渡さない場合に、規則によってデフォルト値が使用されます。
コード例 2-29 の呼び出しは、文字列 john.smith@example.com を生成します。
コード例 2-29 john.smith@example.com 文字列の生成
<rule name='generateEmail'>
<argument name='firstname' value='john'/>
<argument name='lastname' value='smith'/>
</rule>
コード例 2-30 の呼び出しは、文字列 john.smith@yourcompany.com を生成します。
コード例 2-30 john.smith@yourcompany.com 文字列の生成
<rule name='generateEmail'>
<argument name='firstname' value='john'/>
<argument name='lastname' value='smith'/>
<argument name='domain' value='yourcompany.com'/>
</rule>
コード例 2-31 の呼び出しは、文字列 john.smith@ を生成します。
コード例 2-31 john.smith@ 文字列の生成
<rule name='generateEmail'>
<argument name='firstname' value='john'/>
<argument name='lastname' value='smith'/>
<argument name='domain'/>
</rule>
ロックされた引数
引数をデフォルト値で宣言する方法は、規則の開発とカスタマイズをより簡単にするには便利な方法です。規則内に場合によって変化する定数値がある場合は、その値を規則式の中深くに組み込むのではなく、引数で定義すると、値の特定と変更がより容易になります。
Identity Manager IDE には、引数のデフォルト値を変更することによって規則を設定するための、簡素化された GUI が備わっており、この方法は規則式全体を編集するよりもはるかに簡単です。
しかし、一度引数を宣言したなら、規則の呼び出し側が明示的な引数を渡してデフォルト値を上書きすることも可能です。引数値の制御を呼び出し側に渡したくない場合があるかもしれません。そうならないようにするために、引数をロックすることができます。RuleArgument 要素に locked 属性を組み込んで true の値を指定することにより、引数はロックされます (コード例 2-32 を参照)。
コード例 2-32 引数のロック
<Rule name='generateEmail' localScope='true'>
<RuleArgument name='firstname'>
<Comments>The first name of a user</Comments>
</RuleArgument>
<RuleArgument name='lastname'>
<Comments>The last name of a user</Comments>
</RuleArgument>
<RuleArgument name='domain' value='example.com' locked='true'>
<Comments>The corporate domain name</Comments>
</RuleArgument>
<concat>
<ref>firstname</ref>
<s>.</s>
<ref>lastname</ref>
<s>@</s>
<ref>domain</ref>
</concat>
</Rule>
上記の例では、引数 domain がロックされています。これは、呼び出し側がこの引数に値を渡そうとしても、その値は常に example.com であるという意味です。ドメイン名が example.com ではないサイトでこの規則を使用する場合、管理者がしなければならないことはこの規則を編集して引数の値を変更することだけです。この規則式を理解するまたは変更する必要はありません。
規則のセキュリティー保護規則に資格などの機密情報が含まれている場合や危険な副作用がありえる Java ユーティリティーに規則が呼び出される場合は、規則が意図しない方法で使用されないようにするために、規則をセキュリティー保護すべきです。
規則のセキュリティー保護がとりわけ重要になるのは、フォームから呼び出される場合です。フォームの規則はセッション上で実行されるので、セッションを作成できるユーザーに API または SOAP リクエストのいずれかを通じて規則が露呈することもありえます。
ここでは、次の内容を説明します。
規則のセキュリティー保護
規則をセキュリティー保護するには、次の手順に従います。
よりセキュアな規則を参照する規則の作成
ある規則を呼び出すと、まずその規則に対して承認されます。承認されたなら、その規則はそれ以上承認をチェックすることなくほかの規則を呼び出すことができます。このようにして、ユーザーはセキュアな規則に間接的にアクセスできます。ユーザーはセキュアな規則の内容を表示したり変更したりすることはできません。アクセスしている規則を通してセキュアな規則を呼び出すことだけが可能です。
よりセキュアな規則を参照する規則を作成するには、規則を作成するユーザーがそれぞれの規則が含まれる両方の組織を制御する必要があります。一般に、セキュアな規則は Top などの上位レベルの組織にあります。一方、セキュリティーが保証されない規則は、より多くのユーザーがアクセスする下位レベルの組織に配置されます。