フィールド・レベル・セキュリティ

トランザクションと処理のセキュリティが不十分な場合があります。データの価値に基づいてアクセス権を制限する必要がある場合があります。たとえば、Oracle Utilities Customer Care and Billingでは、特定のユーザーが$10,000を超える請求を完了することを防止できます。これは、「フィールド・レベル・セキュリティ」と呼ばれています。

フィールド・レベル・セキュリティは複雑で固有な場合があります。フィールド・レベル・セキュリティの実装には、実装グループによるプログラミングが常に必要です。このプログラミングには、各アプリケーション・サービスへの特定のフィールド・レベル・ロジックの導入が含まれます。フィールド・レベルのセキュリティをチェックするために、ビジネス・オブジェクト検証アルゴリズムを使用することをお薦めします。

注意:

フィールド・レベル・セキュリティのチェックが検証ロジック内に存在する必要がありますが、これはフィールド・レベル・セキュリティ・ルールに合格しない場合にデータが追加または更新されないようにするためです。

フィールド・レベル・セキュリティに関連するユーザー・インタフェースの変更(たとえば特定の条件下での要素の保護)を実装することは、容易ではありません。この理由は、実装固有の条件をチェックするために基本製品提供のユーザー・インタフェースをオーバーライドすることは常にサポートされるとはかぎらず、ユーザー・インタフェースの構築方法に依存するからです。サポートされない場合は製品アーティファクトの完全な複製が必要になりますが、これはお薦めできません。

ユーザーのアクセス権限の定義は、トランザクション/処理レベルのセキュリティの定義に使用されるのと同じトランザクションを使用して実行されます。これは、次のように実行します。

  • フィールド・レベル・セキュリティの各タイプに対してセキュリティ・タイプを作成します。
  • 各セキュリティ・タイプに対して様々なアクセス・レベルを定義します。たとえば、$300未満の請求を完了できるユーザー、$1,000未満の請求を完了できる他のユーザー、さらにすべての値の請求を完了できる他のユーザーがいるとします。このシナリオでは、このセキュリティ・タイプに対して3つのアクセス・レベルが必要となります。
    • レベル1 (最下位): $300以下の請求を承認できる
    • レベル2 (中位): $1,000以下の請求を承認できる
    • レベル3 (最高位): すべての請求を承認できる
  • このセキュリティ・タイプを、このタイプのフィールド・レベル・セキュリティが実装されている各アプリケーション・サービスにリンクします。このリンクは、セキュリティ・タイプのトランザクションで実行されます。
  • 各セキュリティ・タイプに対してユーザー・グループのアクセス・レベルをそれぞれ定義します(これは、このセキュリティ・タイプの適用対象となる各アプリケーション・サービスに対して実行されます)。
注意:

最高位の値によって最高位のセキュリティが付与されます。システムは、最高位承認レベルの値が最高位セキュリティ・レベルを表しているものと想定しています。さらに、承認レベルは英数字フィールドであるため、正しく設定されていることを確認する必要があります。