18.1 SEM_RDFSA.APPLY_OLS_POLICY

形式

SEM_RDFSA.APPLY_OLS_POLICY(
     policy_name    IN VARCHAR2, 
     rdfsa_options  IN NUMBER  DEFAULT SEM_RDFSA.SECURE_SUBJECT, 
     table_options  IN VARCHAR2 DEFAULT 'ALL_CONTROL', 
     label_function IN VARCHAR2 DEFAULT NULL, 
     predicate      IN VARCHAR2 DEFAULT NULL,
     network_owner  IN VARCHAR2 DEFAULT NULL,
     network_name   IN VARCHAR2 DEFAULT NULL);

説明

セマンティク・データ・ストアにOLSポリシーを適用します。

パラメータ

policy_name

既存のOLSポリシーの名前。

rdfsa_options

RDFデータで有効にするファイングレイン・アクセス制御のモードを指定するオプション。RDFデータを保護するためのデフォルトのオプションは、トリプルの主語の位置に表示されるリソースに機密性ラベルを割り当てます。rdfsa_optionsパラメータを使用し、「使用上のノート」の表18-1で定義されている定数の1つを指定することで、デフォルトを上書きできます。

table_options

ポリシー実行オプション。デフォルト値(ALL_CONTROL)は、このプロシージャでサポートされる唯一の値です。

label_function

デフォルトとして使用するラベル値を戻す関数を起動する文字列。

predicate

ラベルベースの述語と組み合せる追加の述語。

network_owner

セマンティク・ネットワークの所有者。(表1-2を参照してください。)

network_name

セマンティク・ネットワークの名前。(表1-2を参照してください。)

使用に関するノート

このプロシージャで指定されるOLSポリシーは、列名をCTXT1として作成される必要があり、デフォルトのポリシー・オプションを使用する必要があります。ポリシー・オプションの詳細は、『Oracle Label Security管理者ガイド』を参照してください。

このプロシージャは、セマンティク・ネットワークで定義される複数の表でsa_policy_admin.apply_table_policyプロシージャを起動します。SEM_RDFSA.APPLY_OLS_POLICYプロシージャのパラメータtable_optionslabel_functionおよびpredicateは、sa_policy_admin.apply_table_policyプロシージャにある同じ名前のパラメータと同じセマンティクを持ちます。

rdfsa_optionsパラメータの場合、パッケージ定数を必要なオプションに対して指定できます。表18-1に、これらの定数とその説明を示します。

表18-1 rdfsa_optionsパラメータのSEM_RDFSAパッケージ定数

定数 説明

SEM_RDFSA.SECURE_SUBJECT

トリプルの主語の位置に表示されるリソースに機密性ラベルを割り当てます。

SEM_RDFSA.SECURE_PREDICATE

トリプルの述語の位置に表示されるリソースに機密性ラベルを割り当てます。

SEM_RDFSA.SECURE_OBJECT

トリプルの目的語の位置に表示されるリソースに機密性ラベルを割り当てます。

SEM_RDFSA.TRIPLE_LEVEL_ONLY

トリプルレベル・セキュリティを適用します。適切なパフォーマンスを提供し、ラベルを個々のリソースに割り当てる必要をなくします。(My Oracle Supportから入手可能なパッチ9819833がインストールされている必要があります。)

SEM_RDFSA.OPT_DEFINE_BEFORE_USE

機密性ラベルがリソースに定義される前に、トリプルのRDFリソースの使用を制限します。このオプションが指定されない場合、ユーザーの最初の行のラベルは最初の使用でリソースのデフォルトのラベルとして使用されます。

SEM_RDFSA.OPT_RELAX_TRIPLE_LABEL

トリプル・ラベルとそのすべてのコンポーネントに関連付けられているラベル間に存在する優位関係を緩和します。このオプションを使用すると、ユーザーがすべてのトリプル・コンポーネントに対するREADアクセス権を持ち、トリプル・ラベルがコンポーネント・ラベルと関係がない場合にトリプルを定義できます。このオプションを使用しない場合、トリプル・ラベルは、少なくともそのすべてのコンポーネントのラベルを網羅する必要があります。

新しく挿入されたトリプルのカスタム・ラベルを生成するには、label_functionパラメータで関数を指定できます。ラベル関数はRDF_LINK$表に関連付けられ、この表の列は、次の例に示すように、ラベル関数へのパラメータとして構成される場合があります。

fgac_admin.new_triple_label(:new.model_id,
                            :new.start_node_id,
                            :new.p_value_id,
                            :new.canon_end_node_id)'

OLSポリシーは、異なる構造を持つ複数の表に適用されるため、predicateパラメータに割り当てられる述語の唯一有効な列の参照は、ラベル列CTXT1の参照です。OLSが既存のデータのセマンティク・データ・ストアで有効にされる場合、アクセス制限なしでこのデータの使用を継続できるように、'OR CTXT1 is null'の形式の述語を指定できます。

OLS対応セマンティク・データ・ストアは、複数のモデルで構成されるすべてのRDFトリプルで機密性ラベルを使用します。このようなトリプルへのユーザー・アクセスは、モデル・ビューおよびSEM_MATCH問合せを通して、OLSポリシーによって制限されます。さらに、セマンティック・モデルを所有しているユーザーとは無関係に、RDFTトリプル・ビュー内の(タイプSDO_RDF_TRIPLE_Sの)トリプル列へのアクセスは、OLSポリシーによって完全なアクセス権限を持つユーザーに制限されます。

トリプルは、対応するRDFTトリプル・ビューに対するINSERT権限を使用して特定のRDFモデルに挿入されます。新しいトリプルの機密性ラベルが、ユーザーのセッション・コンテキスト(最初の行のラベル)またはラベル関数を使用して生成されます。トリプルは、トリプル・コンポーネントに関連付けられているラベルを使用して、RDFポリシー違反に対して検証されます。トリプル情報にはRDFTトリプル・ビューからアクセスできない場合がありますが、OLSポリシー制限を適用している間は、トリプルにアクセスするためにモデル・ビューに問い合せることができます。必要なポリシー権限(WRITEUP、WRITEACROSSなど)を持っていれば、モデル・ビューのCTXT1列を更新して、トリプルに割り当てられるラベルをリセットできます。新しいラベルは、トリプル・コンポーネントに関係するRDFポリシー違反に対して自動的に検証されます。モデル・ビューのCTXT1列に対するUPDATE権限はモデルの所有者に付与され、このユーザーはこの権限を他のユーザーに選択的に付与できます。

RDFモデルが完全なアクセス権を持つユーザー以外のスキーマで作成される場合は、モデル・オブジェクトに対する必要な権限(具体的には、RDFTトリプル・ビューに対する読取り/書込みアクセス権、モデル・ビューへの読取りアクセス権、およびモデル・ビューのCTXT1列への書込みアクセス権)をメンテナンス操作のためにそれらのユーザーに付与できます。これらの操作には、モデルへのバルク・ロード、トリプルに割り当てられるすべての機密性ラベルのリセット、およびモデルを使用した伴意の作成が含まれます。

OLSポリシーを無効にするには、SEM_RDFSA.DISABLE_OLS_POLICYプロシージャを使用します。

OLSのサポートの詳細は、RDFデータのファイングレイン・アクセス制御を参照してください。

セマンティク・ネットワークのタイプおよびオプションの詳細は、「RDFネットワーク」を参照してください。

次の例では、セキュアな主語およびセキュアな述語オプションを使用して、RDFデータへのセキュアなアクセスを有効にします。

begin
  sem_rdfsa.apply_ols_policy(
        policy_name   => 'defense',
        rdfsa_options => sem_rdfsa.SECURE_SUBJECT+
                         sem_rdfsa.SECURE_PREDICATE,
        network_owner => 'RDFUSER',
        network_name  => 'NET1'); 
end;
/

次の例では、(保護されているトリプル・コンポーネント(主語、述語または目的語)が、関連付けられている機密性ラベルで事前定義されている場合にのみユーザーがトリプルを定義できる) Define Before Useオプションを指定することによって、前述の例を拡張します。トリプルを挿入するユーザーがSEM_RDFSAパッケージに対する実行権限を持っていない場合に、この構成は有効です。

begin
  sem_rdfsa.apply_ols_policy(
        policy_name   => 'defense',
        rdfsa_options => sem_rdfsa.SECURE_SUBJECT+
                         sem_rdfsa.SECURE_PREDICATE+
                         sem_rdfsa.OPT_DEFINE_BEFORE_USE,
        network_owner => 'RDFUSER',
        network_name  => 'NET1'); 
end;
/