14 SEM_RDFSAパッケージのサブプログラム
SEM_RDFSAには、Oracle Label Security (OLS)を使用してRDFデータへのファイングレイン・アクセス制御を行うサブプログラム (関数とプロシージャ) が含まれています。
この章のサブプログラムを使用するには、「RDFセマンティク・グラフの概要」と「RDFデータのファイングレイン・アクセス制御」に記載されている概念および使用情報について理解しておく必要があります。
この章では、サブプログラムに関するリファレンス情報を示します(サブプログラムのリストはアルファベット順です)。
- SEM_RDFSA.APPLY_OLS_POLICY
- SEM_RDFSA.DISABLE_OLS_POLICY
- SEM_RDFSA.ENABLE_OLS_POLICY
- SEM_RDFSA.REMOVE_OLS_POLICY
- SEM_RDFSA.RESET_MODEL_LABELS
- SEM_RDFSA.SET_PREDICATE_LABEL
- SEM_RDFSA.SET_RDFS_LABEL
- SEM_RDFSA.SET_RESOURCE_LABEL
- SEM_RDFSA.SET_RULE_LABEL
親トピック: リファレンスおよび補足情報
14.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);
説明
セマンティク・データ・ストアにOLSポリシーを適用します。
パラメータ
- policy_name
-
既存のOLSポリシーの名前。
- rdfsa_options
-
RDFデータで有効にするファイングレイン・アクセス制御のモードを指定するオプション。RDFデータを保護するためのデフォルトのオプションは、トリプルの主語の位置に表示されるリソースに機密性ラベルを割り当てます。
rdfsa_options
パラメータを使用して「使用上の注意」の表14-1で定義されている定数の1つを指定することで、デフォルトを上書きできます。 - table_options
-
ポリシー実行オプション。デフォルト値(
ALL_CONTROL
)は、このプロシージャでサポートされる唯一の値です。 - label_function
-
デフォルトとして使用するラベル値を戻す関数を起動する文字列。
- predicate
-
ラベルベースの述語と組み合せる追加の述語。
使用上の注意
このプロシージャで指定されるOLSポリシーは、列名をCTXT1として作成される必要があり、デフォルトのポリシー・オプションを使用する必要があります。ポリシー・オプションの詳細は、『Oracle Label Security管理者ガイド』を参照してください。
このプロシージャは、MDSYSスキーマで定義される複数の表でsa_policy_admin.apply_table_policy
プロシージャを起動します。SEM_RDFSA.APPLY_OLS_POLICYプロシージャのパラメータtable_options
、label_function
およびpredicate
は、sa_policy_admin.apply_table_policyプロシージャにある同じ名前のパラメータと同じセマンティクを持ちます。
rdfsa_options
パラメータの場合、パッケージ定数を必要なオプションに対して指定できます。表14-1に、これらの定数とその説明を示します。
表14-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
パラメータで関数を指定できます。ラベル関数はMDSYS.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ポリシーによって制限されます。さらに、アプリケーション表を所有しているユーザーとは無関係に、表の(タイプSDO_RDF_TRIPLE_Sの)トリプル列へのアクセスは、OLSポリシーによって完全なアクセス権限を持つユーザーに制限されます。
トリプルは、対応するアプリケーション表に対するINSERT権限を使用して特定のRDFモデルに挿入されます。新しいトリプルの機密性ラベルが、ユーザーのセッション・コンテキスト(最初の行のラベル)またはラベル関数を使用して生成されます。トリプルは、トリプル・コンポーネントに関連付けられているラベルを使用して、RDFポリシー違反に対して検証されます。トリプル情報にはアプリケーション表からアクセスできない場合がありますが、OLSポリシー制限を適用している間は、トリプルにアクセスするためにモデル・ビューに問い合せることができます。必要なポリシー権限(WRITEUP、WRITEACROSSなど)を持っていれば、モデル・ビューのCTXT1列を更新して、トリプルに割り当てられるラベルをリセットできます。新しいラベルは、トリプル・コンポーネントに関係するRDFポリシー違反に対して自動的に検証されます。モデル・ビューのCTXT1列に対するUPDATE権限はモデルの所有者に付与され、このユーザーはこの権限を他のユーザーに選択的に付与できます。
RDFモデルが完全なアクセス権を持つユーザー以外のスキーマで作成される場合は、モデル・オブジェクトに対する必要な権限(具体的には、アプリケーション表に対する読取り/書込みアクセス権、モデル・ビューへの読取りアクセス権、およびモデル・ビューのCTXT1列への書込みアクセス権)をメンテナンス操作のためにそれらのユーザーに付与できます。これらの操作には、モデルへのバルク・ロード、トリプルに割り当てられるすべての機密性ラベルのリセット、およびモデルを使用した伴意の作成が含まれます。
OLSポリシーを無効にするには、SEM_RDFSA.DISABLE_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、セキュアな主語およびセキュアな述語オプションを使用して、RDFデータへのセキュアなアクセスを有効にします。
begin sem_rdfsa.apply_ols_policy( policy_name => 'defense', rdfsa_options => sem_rdfsa.SECURE_SUBJECT+ sem_rdfsa.SECURE_PREDICATE); 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); end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.2 SEM_RDFSA.DISABLE_OLS_POLICY
書式
SEM_RDFSA.DISABLE_OLS_POLICY;
説明
すでにセマンティク・データ・ストアに適用されている、または有効にされているOLSポリシーを無効にします。
パラメータ
(ありません。)
使用上の注意
このプロシージャを使用すると、セマンティク・データ・ストアに適用されている、または有効にされているOLSポリシーを一時的に無効にできます。ポリシーを無効にするユーザーは、OLSポリシーを管理するために必要な権限を持つ必要があり、また、RDFデータに適用されるOLSポリシーにアクセスする必要もあります。
様々なRDFリソースおよびトリプルに割り当てられる機密性ラベルは保持され、OLSポリシーはこれらを実施するために再有効化される場合があります。OLSポリシーが無効である場合、特定のラベルを持つ新しいリソースを追加したり、既存のトリプルおよびリソースのラベルを更新することができます。
OLSポリシーを適用するには、SEM_RDFSA.APPLY_OLS_POLICYプロシージャを使用し、無効になっていたOLSポリシーを有効にするには、SEM_RDFSA.ENABLE_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、セマンティク・データ・ストアのOLSポリシーを無効にします。
begin sem_rdfsa.disable_ols_policy; end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.3 SEM_RDFSA.ENABLE_OLS_POLICY
書式
SEM_RDFSA.ENABLE_OLS_POLICY;
説明
すでに無効にされているOLSポリシーを有効にします。
パラメータ
(ありません。)
使用上の注意
このプロシージャを使用すると、セマンティク・データ・ストアに対して無効にされているOLSポリシーを有効にできます。ポリシーを有効にするユーザーは、OLSポリシーを管理するために必要な権限を持つ必要があり、また、RDFデータに適用されるOLSポリシーにアクセスする必要もあります。
OLSポリシーを無効にするには、SEM_RDFSA.DISABLE_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、セマンティク・データ・ストアのOLSポリシーを有効にします。
begin sem_rdfsa.enable_ols_policy; end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.4 SEM_RDFSA.REMOVE_OLS_POLICY
書式
SEM_RDFSA.REMOVE_OLS_POLICY;
説明
セマンティク・データ・ストアからOLSポリシーを永続的に削除または分離します。
パラメータ
(ありません。)
使用上の注意
OLSポリシーを管理するために必要な権限を持つ必要があり、また、RDFデータに適用されるOLSポリシーにアクセスする必要もあります。OLSポリシーがセマンティク・データ・ストアから分離されると、すでにトリプルおよびリソースに割り当てられているすべての機密性ラベルが失われます。
この操作は、特にRDFセキュリティ・ポリシーを保持するために作成されるオブジェクトを削除します。
OLSポリシーを適用するには、SEM_RDFSA.APPLY_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、すでにセマンティク・データ・ストアに適用されているOLSポリシーを削除します。
begin sem_rdfsa.remove_ols_policy; end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.5 SEM_RDFSA.RESET_MODEL_LABELS
書式
SEM_RDFSA.RESET_MODEL_LABELS( model_name IN VARCHAR2);
説明
モデルまたはグローバル・リソースに関連付けられているラベルをリセットします(関連付けられている1つ以上のモデルは空である必要があります)。
使用上の注意
モデル名を指定する場合、モデルは空である必要があります。RDF$GLOBAL
を指定する場合、すべてのモデルは空である必要があります(つまり、RDFリポジトリにトリプルは存在しません)。
セマンティク・データ・ストアに適用されるOLSポリシーに関して完全なアクセス権限を持っている必要があります。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、Contracts
モデルに関連付けられているすべてのリソースおよびそのラベルを削除します。
begin sem_rdfsa.reset_model_labels(model_name => 'Contracts'); end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.6 SEM_RDFSA.SET_PREDICATE_LABEL
書式
SEM_RDFSA.SET_PREDICATE_LABEL( model_name IN VARCHAR2, predicate IN VARCHAR2, label_string IN VARCHAR2);
説明
モデル・レベルの述語に、またはリポジトリ全体に機密性ラベルを設定します。
パラメータ
使用上の注意
モデル名を指定する場合、この操作を実行するには、モデルへの読取りアクセス権およびSEM_RDFSAパッケージに対する実行権限が必要です。RDF$GLOBAL
を指定する場合、RDFデータに適用されるOLSポリシーに関して完全なアクセス権限が必要です。
ラベルが述語にすでに存在する場合、既存のラベルを上書きするには指定されたラベルへのアクセス権およびOLSポリシー権限が必要です。SECURE_PREDICATEオプションは、RDFデータに対して有効にする必要があります。
既存の述語ラベルがこの操作で更新される場合、この述語を使用するトリプルのラベルは新しい述語ラベルよりもすべて優位である必要があります。唯一の例外は、OPT_RELAX_TRIPLE_LABELオプションがOLS対応RDFデータで選択されている場合です。
RDF$GLOBAL
を指定する場合、モデル全体にわたる一意の機密性ラベルを持つグローバル述語が作成されます。同じ述語がすでに1つ以上のモデルで定義されている場合、グローバル・ラベルはそのようなラベルすべてよりも優位であり、モデル固有のラベルは特定の述語用に置き換えられます。
述語のラベルが設定された後、この述語を持つ新しいトリプルは、トリプル・ラベル(ユーザーの最初の行のラベルから、またはラベル関数を使用して初期化される場合があります)が、述語の機密性ラベルよりも優位である場合にのみ追加できます。この優位関係はOPT_RELAX_TRIPLE_LABELオプションで緩和できますが、その場合には、ユーザーは述語を使用して新しいトリプルを定義できるように述語への読取りアクセス権を少なくとも持っている必要があります。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、Contracts
モデルに述語ラベル、およびデータベース・インスタンスのすべてのモデルに別の述語ラベルを設定します。
begin sem_rdfsa.set_predicate_label( model_name => 'contracts', predicate => '<http://www.myorg.com/pred/hasContractValue>', label_string => 'TS:US_SPCL'); end; / begin sem_rdfsa.set_predicate_label( model_name => 'rdf$global', predicate => '<http://www.myorg.com/pred/hasStatus>', label_string => 'SE:US_SPCL:US'); end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.7 SEM_RDFSA.SET_RDFS_LABEL
書式
SEM_RDFSA.SET_RDFS_LABEL( label_string IN VARCHAR2, inf_override IN VARCHAR2);
説明
RDFSスキーマ要素に機密性ラベルを設定します。
パラメータ
使用上の注意
このプロシージャは、RDFスキーマ・リソース(通常、URIのhttp://www.w3.org/1999/02/22-rdf-syntax-ns#
およびhttp://www.w3.org/2000/01/rdf-schema#
接頭辞によって認識されます)に関連付けられている機密性ラベルを設定またはリセットします。これらのリソースへの制限付きアクセス権を使用して機密性ラベルを割り当てることができるため、新しいRDFクラスの作成や新規プロパティの追加などの操作は、より高い権限を持つユーザーに制限できます。
RDFデータに適用されるポリシーに関して完全なアクセス権限を持っている必要があります。
RDFスキーマ要素は、緩和されたトリプル・ラベル・オプションを暗黙的に使用するため、主語、述語または目的語にRDFSおよびOWLの構成要素を使用するトリプルが、スキーマ構成要素に関連付けられているラベルよりも優位である機密性ラベルを持つことは強制されません。したがって、新しいRDFクラスおよびプロパティを定義できるユーザーは、少なくともスキーマ要素への読取りアクセス権を持っている必要があります。
RDFスキーマ要素が推論されたトリプルで参照される場合、システム定義およびカスタムのラベル・ジェネレータは、推論されたトリプルの適切なラベルを決定する際に、推論オーバーライド・ラベルを検討します。カスタム・ラベル・ジェネレータが使用される場合、RDFスキーマ要素が関係していると、このオーバーライド・ラベルが実際のラベルのかわりに渡されます。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、すべてのRDFスキーマ要素に、一意のコンパートメントを持つラベルを設定します。新しいRDFクラスおよびプロパティを定義できるユーザーは、コンパートメントへの独占的なメンバーシップを持つことが求められます。
begin sem_rdfsa.set_rdfs_label( label_string => 'SE:RDFS:', inf_override => 'SE:US_SPCL:US'); end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.8 SEM_RDFSA.SET_RESOURCE_LABEL
書式
SEM_RDFSA.SET_RESOURCE_LABEL( model_name IN VARCHAR2, resource_uri IN VARCHAR2, label_string IN VARCHAR2, resource_pos IN VARCHAR2 DEFAULT 'S');
説明
トリプルの主語や目的語の位置で使用される場合があるリソースに機密性ラベルを設定します。
パラメータ
- model_name
-
リソースが属するモデルの名前、または同じラベルがすべてのモデルのリソースの使用に適用される必要がある場合は文字列
RDF$GLOBAL
。 - resource_uri
-
1つ以上のトリプルの主語または目的語として使用される場合があるリソースのURI。
- label_string
-
文字列表現のOLS行ラベル。
- resource_pos
-
トリプル内のリソースの位置。
S
、O
またはS,O
。同じリソースに対して、最大2つの別々のラベル(リソースがトリプルの主語の位置で使用される場合に考慮するラベルおよび目的語の位置に表示される場合に考慮するラベル)を指定できます。値'S
'、'O
'、または'S,O
' は、それぞれ、主語、目的語、または主語および目的語の両方の位置のリソースにラベルを設定します。
使用上の注意
モデル名を指定する場合、この操作を実行するには、モデルへの読取りアクセス権およびSEM_RDFSAパッケージに対する実行権限が必要です。RDF$GLOBAL
を指定する場合、RDFデータに適用されるOLSポリシーに関して完全なアクセス権限が必要です。
ラベルが述語にすでに存在する場合、既存のラベルを上書きするには指定されたラベルへのアクセス権およびOLSポリシー権限が必要です。SECURE_PREDICATEオプションは、RDFデータに対して有効にする必要があります。
既存のリソース・ラベルがこの操作で更新される場合、指定された位置でこのリソースを使用するトリプルのラベルは新しいリソース・ラベルよりもすべて優位である必要があります。唯一の例外は、OPT_RELAX_TRIPLE_LABELオプションがOLS対応RDFデータで選択されている場合です。
RDF$GLOBAL
を指定する場合、モデル全体にわたる一意の機密性ラベルを持つグローバル・リソースが作成されます。同じリソースがすでに1つ以上のモデルの同じトリプルの位置で定義されている場合、グローバル・ラベルはそのようなラベルすべてよりも優位であり、モデル固有のラベルはその位置にある特定のリソース用に置き換えられます。
述語のラベルが設定された後、指定された位置のリソースを使用する新しいトリプルは、トリプル・ラベルがリソースの機密性ラベルよりも優位である場合にのみ追加できます。この優位関係はOPT_RELAX_TRIPLE_LABELオプションで緩和できますが、その場合には、ユーザーはリソースへの読取りアクセス権を少なくとも持っている必要があります。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、複数のリソースにその位置に基づいて機密性ラベルを設定します。
begin sem_rdfsa.set_resource_label( model_name => 'contracts', resource_uri => '<http://www.myorg.com/contract/projectHLS>', label_string => 'SE:US_SPCL:US', resource_pos => 'S,O'); end; / begin sem_rdfsa.set_resource_label( model_name => 'rdf$global', resource_uri => '<http://www.myorg.com/contract/status/Complete>', label_string => 'SE:US_SPCL:US', resource_pos => 'O'); end; /
親トピック: SEM_RDFSAパッケージのサブプログラム
14.9 SEM_RDFSA.SET_RULE_LABEL
書式
SEM_RDFSA.SET_RULE_LABEL( rule_base IN VARCHAR2, rule_name IN VARCHAR2, label_string IN VARCHAR2);
説明
ルールベースに属するルールに機密性ラベルを設定します。
使用上の注意
ルールに割り当てられる機密性ラベルは、適切なラベル・ジェネレータ・オプションが選択されている場合に、推論されたトリプルにラベルを生成するために使用されます。
ルールベースへのアクセス権を持っている必要があり、また、RDFSルールベースのシステム定義のルールにラベルを割り当てることができるOLSポリシーに関して完全なアクセス権限を持っている必要があります。
ユーザー定義のルールに割り当てられるラベルのサポートはありません。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、RDFSルールに機密性ラベルを割り当てます。
begin sem_rdfsa.set_rule_label (rule_base => 'RDFS', rule_name => 'RDF-AXIOMS', label_string => 'SE:US_SPCL:'); end; /
親トピック: SEM_RDFSAパッケージのサブプログラム