6 ラベル付きデータの処理

ラベル付きデータを管理し、セッション・セキュリティ属性を表示し、セッション属性の値を変更できます。

ノート:

このマニュアルの多くの例では、人事管理のサンプル・ポリシーを使用しています。そのポリシー名はHRで、ポリシー・ラベル列はHR_LABELです。特に明記していないかぎり、各例では、Oracle Label Securityポリシーの施行がすべて有効になっている状態で、ユーザーの認証の範囲内でSQL文が行に対して実行されるものとします。

6.1 ポリシーのラベル列とラベル・タグの動作

表またはスキーマ内でポリシーのラベル列を作成して値を格納する方法を理解しておく必要があります。

6.2 ポリシーのラベル列

ポリシーが表に適用されると、ポリシー・ラベル列が作成されます。

6.2.1 ポリシー・ラベル列について

表に適用される各ポリシーにより、データベースに1列が作成されます。

デフォルトでは、ラベル列のデータ型はNUMBERです。

ポリシーに関する各行のラベルは、文字列書式のラベル値と等価の数値を使用して、その列のタグで表されます。ラベル・タグは、ラベル作成時に管理者が手動で指定しないかぎり自動的に生成されます。

自動ラベル生成は、ラベル・コンポーネントの定義時に管理者が設定したルールに従います。

ノート:

ポリシーの作成自体は、表やスキーマに影響しません。ポリシーは表またはスキーマにのみ適用されます。

6.2.2 ポリシーのラベル列の非表示化

ポリシーを表す列を非表示にするように選択できます。

ノート:

マテリアライズド・ビュー内の列は非表示にできません。
  • 列を非表示にするには、HIDEオプションを表に適用します。
    HIDEを使用するポリシーを表に適用すると、SELECT *またはDESCRIBE操作を実行するユーザーには、ポリシーのラベル列が表示されなくなります。ポリシーのラベル列が非表示でない場合、ラベル・タグはNUMBER型として表示されます。

    次の例に、HR_LABEL列が表示されたEMP表の出力を示します。

    DESCRIBE EMP;
     Name                                      Null?    Type
     ----------------------------------------- -------- --------
     EMPNO                                     NOT NULL NUMBER(4)
     ENAME                                              CHAR(10)
     JOB                                                CHAR(9)
     MGR                                                NUMBER(4)
     SAL                                                NUMBER(7,2)
     DEPTNO                                    NOT NULL NUMBER(2)
     HR_LABEL                                           NUMBER(10)

    HR_LABEL列が非表示の状態で同じ表がどのように表示されるかを次に示します。

    DESCRIBE EMP;
     Name                                      Null?    Type
     ----------------------------------------- -------- --------
     EMPNO                                     NOT NULL NUMBER(4)
     ENAME                                              CHAR(10)
     JOB                                                CHAR(9)
     MGR                                                NUMBER(4)
     SAL                                                NUMBER(7,2)
     DEPTNO                                    NOT NULL NUMBER(2)

6.3 ラベル・タグ

ラベル・コンポーネントを表すラベル・タグは、自動または手動で作成できます。

6.3.1 ラベル・タグについて

ラベル・タグは、ポリシー用に作成されたデータ・ラベルを表します。

データ・ラベルの作成時に、管理者はラベルを構成するコンポーネントの有効な組合せセット、つまり、オプションで1つ以上のグループまたは区分と組み合せたレベルを指定します。

ポリシー内で有効なこれらの各データ・ラベルは、管理者により割り当てられた、または初回使用時に自動的に生成された、関連付けられている数値タグによって一意に識別されます。管理者がラベル・タグを手動で定義すると、ソートや論理比較を行うときのラベル値の順序付けを制御できるというメリットがあります。

ただし、ラベル・タグは、データベース内のすべてのポリシー間で一意であることが必要です。データベース内で複数のポリシーを使用する場合、異なるポリシー内で同じ数値ラベル・タグは使用できません。ラベル・タグはそれぞれが1つのラベルを一意に識別すること、およびデータ行に格納されるのはラベルの文字列表現ではなく、この数値タグであることに注意してください。

6.3.2 手動定義したラベル・タグによるラベルの順序付け

ラベル・タグを手動で定義すると、ラベルを意味のある方法でソートし比較できるようなデータ操作方法を実装できます。

そのためには、保護されたデータに関連付けるラベルをすべて事前に定義し、各ラベルに意味のあるラベル・タグ値を割り当てる必要があります。手動で割り当てることができるラベル・タグは8桁以内です。ラベル・タグの値は1以上である必要があります。

ラベル・タグ値をラベル・コンポーネントの数値に関連付ける方法を実装すると、メリットが得られる場合があります。これにより、タグを使用してデータ行を意味のある方法でグループ化できます。ただし、このアプローチは必須ではありません。機密性の高いラベルのタグは、機密性の低いラベルのタグより大きい数値に設定することをお薦めします。

表6-1に、割り当てられたラベル・タグのセットを示します。

表6-1 管理者が定義したラベル・タグ(例)

ラベル・タグ ラベル文字列

10000

P

20000

C

21000

C:FNCL

21100

C:FNCL,OP

30000

S

31110

S:OP:WR

40000

HS

42000

HS:OP

この例では、PUBLICレベルのラベルは"1"、CONFIDENTIALレベルのラベルは"2"、SENSITIVEレベルのラベルは"3"、HIGHLY_SENSITIVEレベルのラベルは"4"で始まっています。

FINANCIAL区分を持つラベルは1000番台、OP区分を持つラベルは1100番台になっています。10の桁はグループWRなどを示します。

この他に、グループのみに基づく方法などもあります。その場合、タグは3110、3120、3130などとなります。

ただし、ラベル・タグは、個々のラベル・コンポーネントに割り当てられている数値にかかわらず、ラベル全体を識別します。ラベル・タグは、個別に評価される番号の集まりではなく、全体で1つの整数として使用されます。

6.3.3 手動定義したラベル・タグによるデータの操作

管理目的でラベル・タグを定義すると、ラベル文字列全体(つまり、ラベル・コンポーネントの組合せ)を簡単に参照できます。

たとえば、タグ31110は完全なラベル文字列"S:OP:WR"を表すことができます。

ラベル・タグは、データをパーティション化する便利な方法として使用できます。これは、異なるレベルの機密データを異なるディスク・ドライブに格納する必要がある場合に役立ちます。たとえば、範囲1000から1999内のラベルを持つすべてのデータを表領域Aに置き、範囲2000から2999内のラベルを持つすべてのデータを表領域Bに置くことができます。

この最も単純な表記法は、ラベル数が限られていて、それに対して各種操作を実行する必要がある場合にも役立ちます。ある会社が他の多数の会社の人事管理システムを管理している状況を考えます。会社YのユーザーはいずれもラベルC:ALPHA:CYを持ち、そのタグ210が設定されているとします。会社Yのユーザー総数を判断するには、ホスト管理者は次のように入力します:

SELECT * FROM tab1
  WHERE hr_label = 210;

6.3.4 自動的に生成されるラベル・タグ

動的に生成されるラベル・タグは10桁で、ラベル・コンポーネントに割り当てられている番号とは無関係です。

データをラベル別にグループ化することはできません。

表6-2に、自動生成されたラベル・タグの動作を示します。

表6-2 生成されたラベル・タグ(例)

ラベル・タグ ラベル文字列

100000020

P

100000052

C

100000503

C:FNCL

100000132

C:FNCL,OP

100000003

S

100000780

S:OP:WR

100000035

HS

100000036

HS:OP

6.4 データ行へのラベルの割当て

既存のデータ行の場合は、ラベル付けファンクションを作成してラベルを割り当てることができます。

このファンクションでは、挿入するラベルを定義する表と行の条件を正確に指定します。ファンクション名は、表またはスキーマにポリシーを適用するためのコール、または管理者によるUPDATE時に指定できます。

6.5 ラベルの表示

ラベルの検索時に、文字列値を自動的に取得することはありません。

デフォルトでは、ラベル・タグの値が戻されます。2つのラベル操作ファンクションを使用すると、ラベル・タグの値と文字列表現の間で変換できます。

6.5.1 CHAR_TO_LABELを使用した文字列からラベル・タグへの変換

CHAR_TO_LABELファンクションは、文字列をラベル・タグに変換し、指定した文字列のラベル・タグを戻します。

  • 文字列をラベル・タグに変換するには、次のようなCHAR_TO_LABELファンクションの構文を使用します:
    FUNCTION CHAR_TO_LABEL (
         policy_name     IN VARCHAR2,
         label_string    IN VARCHAR2)
    RETURN NUMBER; 

    たとえば:

    INSERT INTO emp (empno,hr_label) 
    VALUES (999, CHAR_TO_LABEL('HR','S:A,B:G5');

6.5.2 LABEL_TO_CHARを使用したラベル・タグから文字列への変換

ラベル・タグを文字列に変換できます。

6.5.2.1 LABEL_TO_CHARを使用したラベル・タグから文字列への変換

LABEL_TO_CHARファンクションは、ラベル・タグを文字列を変換するときにVARCHAR2文字列を戻します。

表またはビューを問い合せて自動的に取得される行は、表またはビュー内の行のうち、問合せの修飾を満たし、問合せを行ったユーザーのラベルに支配される行すべてです。ポリシーのラベル列が非表示に設定されていない場合は、各行のラベル・タグ値が表示されます。各ラベルの文字列値を表示するには、LABEL_TO_CHARファンクションを使用する必要があります。すべての変換は明示的に行う必要があることに注意してください。タグと文字列表現の間の自動的なキャストはありません。
  • ラベル・タグを文字列に変換するには、次のようなLABEL_TO_CHARファンクションの構文を使用します。
    FUNCTION LABEL_TO_CHAR (
         label IN NUMBER)
    RETURN VARCHAR2; 
6.5.2.2 LABEL_TO_CHARの例

Oracleでは、LABEL_TO_CHARの使用例が提供されています。

例: 表またはビューからの行ラベルの取得

表またはビューから行のラベルを取得するには、SELECT文でポリシー・ラベル列を指定します。

SELECT label_to_char (hr_label) AS label, ename FROM tab1
  WHERE ename = 'RWRIGHT';

この文では次のように戻されます。

LABEL          ENAME
------------   ----------
S:A,B:G1       RWRIGHT

例: ポリシー・ラベル列の取得

SELECT文のWHERE句でポリシーのラベル列を指定することもできます。

次の文では、ポリシー・ラベルS:A,B:G1を持つすべての行が表示されます。

SELECT label_to_char (hr_label) AS label,ename FROM emp
  WHERE hr_label = char_to_label ('HR', 'S:A,B:G1');

この文では次のように戻されます。

LABEL           ENAME
-------------   ---------
S:A,B:G1        RWRIGHT
S:A,B:G1        ESTANTON 

また、次のように、より柔軟な文を使用して、HR_LABEL列のテキストに文字列"S:A,B:G1"を含むデータを検索することもできます。

SELECT label_to_char (hr_label) AS label,ename FROM emp
  WHERE label_to_char (hr_label) like '%S:A,B:G1%';

LABEL_TO_CHARファンクションを使用しない場合は、ラベル・タグが表示されます。

例: 数値列データ型の取得

次の例は、数値列データ型(NUMBER)の動的に生成されたラベル・タグですが、LABEL_TO_CHARファンクションを使用していません。LABEL_TO_CHARファンクションを使用しない場合は、ラベル・タグが表示されます。

SQL> select empno, hr_label from emp
     where ename='RWRIGHT';

EMPNO      HR_LABEL
---------- ----------
7839       1000000562
6.5.2.3 ポリシーのラベル列が非表示に設定されている場合の表からのすべての列の取出し

ポリシー・ラベル列が非表示になっている場合、その表に対してSELECT *を実行しても、ポリシー・ラベル列は自動的には戻されません。

  • ラベルを取得することを明示的に指定するには、SELECT文でLABEL_TO_CHARファンクションを使用します。
    たとえば、DEPT表からすべての列を(ポリシーのラベル列の文字列表現を含め)取り出すには、次のように入力します。
    COLUMN LABEL FORMAT a10
    SELECT LABEL_TO_CHAR (hr_label) AS LABEL, DEPT.* FROM DEPT;
    

    これらのSQL文を実行すると、次のデータが戻されます。

    表6-3 サンプルSQL文から戻された非表示列のデータ

    LABEL DEPTNO DNAME LOC

    L1

    10

    ACCOUNTING

    NEW YORK

    L1

    20

    RESEARCH

    DALLAS

    L1

    30

    SALES

    CHICAGO

    L1

    40

    OPERATIONS

    BOSTON

    これに対して、HR_LABEL列を明示的に指定しない場合は、ラベルはまったく表示されません。ポリシー列名はポリシーに基づいて設定されますが、HIDEオプションは表単位で設定されることに注意してください。

6.6 ラベルを使用したデータのフィルタリング

Oracle Label Securityは、SQL文を処理するとき、作成および適用の手順で、データベースで定義されているセキュリティ・ポリシーを呼び出します。

SELECT文の場合、ポリシーはユーザーが表示を認可されているデータ行をフィルタします。INSERTUPDATEおよびDELETE文の場合、Oracle Label Securityはユーザーの認証に基づいて要求された操作を許可または拒否します。

6.6.1 WHERE句での数値ラベル・タグの使用

SELECT文のWHERE句で数値ラベル・タグを使用する際には様々な手法があります。

ラベルをNUMBER形式で使用すると、ラベル・タグのリストで様々なレベルが区別されるようにラベルを設定できます。このような数値ラベル・タグの比較を、ORDER BY処理や論理演算子とともに使用できます。

たとえば、すべてのUNCLASSIFIEDラベルを1000番台、すべてのSENSITIVEラベルを2000番台、すべてのHIGHLY_SENSITIVEラベルを3000番台に割り当てた場合は、すべてのSENSITIVEレコードをリスト表示できます。

SELECT * FROM emp
WHERE hr_label BETWEEN 2000 AND 2999;

すべてのSENSITIVEレコードとUNCLASSIFIEDレコードをリスト表示するには、次のように入力します。

SELECT * FROM emp
WHERE hr_label <3000;

すべてのHIGHLY_SENSITIVEレコードをリスト表示するには、次のように入力します。

SELECT * FROM emp
WHERE hr_label=3000;

ノート:

このような問合せに意味があるのは、管理者が、最初にラベルに割り当てたラベル・タグに、数値による順序付け方法を適用している場合のみであることに注意してください。この方法により、管理者はデータを簡単に送信できます。ただし、ラベル・タグの値が自動的に生成されると、タグの値とラベルの順序に本質的な関係は存在しません。

または、支配関係を使用して順序付け方法を設定することもできます。

6.6.2 ラベル付きデータ行の順序付け

SELECT文のORDER BY句を使用すると、数値ラベル・タグで行を順序付けることができます。

  • ORDER BY操作を実行するには、次のようなSELECT文を使用します。
    SELECT * from emp
    ORDER BY hr_label;
    

    この文にはファンクションは必要ありませんでした。この文は、管理者が設定したラベル・タグを使用できるようにします。

    ノート:

    この場合も、このような問合せが意味を持つのは、管理者が、最初にラベルに割り当てたラベル・タグに、数値による順序付け方法を適用している場合のみです。

6.6.3 ラベルの文字表現による順序付け

LABEL_TO_CHARファンクションは、ラベルの文字表現でデータ行を順序付けます。

  • ラベルの文字列表現でデータ行を順序付けるには、次のような文を使用します。これにより、すべての行が、ラベルのテキスト順序でソートされて戻されます。
    SELECT * FROM emp
    ORDER BY label_to_char (hr_label);

6.6.4 ラベルの上限と下限の決定

Oracle Label Securityには、複数のラベルの最小の上限または最大の下限を決定するファンクションが用意されています。

2つの単一行ファンクションは、問合せから戻される各行を操作します。結果は行ごとに1つずつ戻されます。

ノート:

複数のラベルを取るすべてのファンクションでは、ラベルはすべて同じポリシーに属している必要があります。

6.6.4.1 OLS_LEAST_UBOUNDを使用した最小の上限の検索

OLS_LEAST_UBOUND (OLS_LUBD)ファンクションは、label1およびlabel2:の最小の上限である文字列ラベルを戻します。

つまり、両者を支配している1つのラベルを戻します。最小の上限は、最上位レベル、ラベル内の区分の共用部分およびラベル内のグループの共用部分です。たとえば、HIGHLY_SENSITIVE:ALPHAおよびSENSITIVE:BETAの最小の上限は、HIGHLY_SENSITIVE:ALPHA,BETAです。
  • 最小の上限を検索するには、次の構文を使用します。
    FUNCTION OLS_LEAST_UBOUND (
         label1                    IN NUMBER,
         label2                    IN NUMBER) 
    RETURN VARCHAR2; 

    OLS_LEAST_UBOUNDファンクションが役立つのは、異なるラベルを持つ行を結合する場合です。これは、結合された行の最高水位標ラベルを提供するためです。

    次の問合せでは、各従業員のラベルを所属部署のラベルと比較し、EMP表にあるかDEPT表にあるかに関係なく上位のラベルを戻します。

    SELECT ename,dept.deptno, 
      OLS_LEAST_UBOUND(emp.hr_label,dept.hr_label) as label
      FROM emp, dept
      WHERE emp.deptno=dept.deptno;
    

    この問合せでは次のデータが戻されます。

    表6-4 サンプルSQL文OLS_LEAST_UBOUNDから返されたデータ

    ENAME DEPTNO LABEL

    KING

    10

    L3:M:D10

    BLAKE

    30

    L3:M:D30

    CLARK

    10

    L3:M:D10

    JONES

    20

    L3:M:D20

    MARTIN

    30

    L2:E:D30

6.6.4.2 OLS_GREATEST_LBOUNDを使用した最大の下限の検索

OLS_GREATEST_LBOUND (OLS_GLBD)スタンドアロン・ファンクションは、2つの異なるラベルがある場合、操作に関連付けることができるデータの最下位ラベルを決定します。

このファンクションは、label1およびlabel2の最大の下限である文字列ラベルを返します。最大の下限は、最下位レベルであり、ラベルの区分とラベルのグループの共通部分です。たとえば、HIGHLY_SENSITIVE:ALPHAおよびSENSITIVEの最大の下限はSENSITIVEです。
  • 最大の下限を検索するには、次の構文を使用します。
    FUNCTION OLS_GREATEST_LBOUND (
         label1                  IN NUMBER,
         label2                  IN NUMBER) 
    RETURN VARCHAR2; 

6.6.5 MERGE_LABELファンクションを使用したラベルのマージ

MERGE_LABELファンクションは、2つのラベルをマージします。

これは、2つのラベルの数値書式と、マージ形式の3文字の指定を受け入れます。
  • ラベルをマージするには、次の構文を使用します。
    FUNCTION merge_label (label1 IN number,
                          label2 IN number,
                          merge_format IN VARCHAR2)
    RETURN number;

    有効なマージ形式を次のように3文字の文字列で指定します。

    highest_level_or_lowest_level union_or_intersection_of_compartments union_or_intersection_of_groups
    • 1文字目には、2つのラベルの最上位レベルと最下位レベルのうち、どちらを使用してマージするかを示します。

    • 2文字目には、2つのラベルにある区分の共用部分と共通部分のうち、どちらを使用してマージするかを示します。

    • 3文字目には、2つのラベルにあるグループの共用部分と共通部分のうち、どちらを使用してマージするかを示します。

    表6-5に、MERGE_LABELのフォーマット定数の定義を示します。

    表6-5 MERGE_LABELのフォーマット定数

    フォーマット指定 データ型 定数 意味 フォーマットの使用位置

    max_lvl_fmt

    CONSTANT varchar2(1)

    H

    最大レベル

    第1(レベル)

    min_lvl_fmt

    CONSTANT varchar2(1)

    L

    最小レベル

    第1(レベル)

    union_fmt

    CONSTANT varchar2(1)

    U

    2つのラベルの共用部分。

    第2(区分)および第3(グループ)

    inter_fmt

    CONSTANT varchar2(1)

    I

    2つのラベルの共通部分。

    第2(区分)および第3(グループ)

    minus_fmt

    CONSTANT varchar2(1)

    M

    第1のラベルから第2のラベルを削除します。

    第2(区分)および第3(グループ)

    null_fmt

    CONSTANT varchar2(1)

    N

    区分列に指定すると、区分は戻されません。グループ列に指定すると、グループは戻されません。

    第2(区分)および第3(グループ)

    たとえば、HUIの場合は、2つのラベルの最上位レベル、区分の共用部分、グループの共通部分を指定したことになります。

    MERGE_LABELファンクションが特に役立つのは、開発者がOLS_LEAST_UBOUNDファンクションで意図した結果が得られない場合です。グループを含む2つのラベルにOLS_LEAST__UBOUNDファンクションを使用すると、予期したよりも機密性の低いデータ・ラベルが得られる場合があります。MERGE_LABELファンクションを使用すると、OLS_LEAST_UBOUNDファンクションで得られるグループの共用部分のかわりに、グループの共通部分を計算できます。

    たとえば、グループUNITED_STATESを含むデータ・レコードのラベルと、グループUNITED_KINGDOMを含む別のデータ・レコードのラベルがあり、OLS_LEAST__UBOUNDファンクションを使用してこの2つのラベルの最小の上限を計算すると、結果として得られるラベルには、UNITED_STATESまたはUNITED_KINGDOMについて認可されているユーザーがアクセスできます。

    これに対して、HUIのフォーマット句とともにMERGE_LABELファンクションを使用すると、結果的に得られるラベルには最上位レベルと区分の共用部分は含まれますが、グループは含まれません。これは、UNITED_STATESUNITED_KINGDOMには共通部分がないためです。

6.7 ラベル付きデータの挿入

様々な状況で、ラベル付きデータを挿入できます。

6.7.1 ラベル付きデータの挿入について

Oracle Label Securityポリシーで保護されている表にデータを挿入する場合、数値ラベル値タグを指定する必要があります。

通常、この値はINSERT文そのものに挿入できます。

そのためには、必要なラベルのタグを明示的に指定するか、ラベルの文字列表現を適切なタグに明示的に変換する必要があります。これは新規ラベル・タグの生成を意味するのではなく、適切なラベル・タグの参照を意味することに注意してください。

INSERT文でラベル値を省略できるのは、次のいずれかの場合のみです。

  • ポリシーの適用時にLABEL_DEFAULT強制オプションが指定されている場合

  • ポリシーの適用時に強制オプションが指定されておらず、ポリシーの作成時にLABEL_DEFAULTが指定されている場合

  • ポリシー適用文でラベル付けファンクションが指定されている場合

最初の2つの場合は、ユーザーのセッションのデフォルト行ラベルが、挿入される行のラベルとして使用されます。3つ目の場合、挿入される行のラベルは、そのラベル付けファンクションにより作成されます。

6.7.2 CHAR_TO_LABELを使用したラベルの挿入

行ラベルを挿入するには、ラベル文字列を指定してから、CHAR_TO_LABELファンクションを使用してラベルに変換できます。

CHAR_TO_LABELファンクションは、有効なデータ・ラベルを自動的に作成します。
  • ラベルを挿入するには、INSERT INTO文を使用します。
    次の例に、表empの定義を使用して、明示的なラベルでデータを挿入する方法を示します。
    INSERT INTO emp (ename,empno,hr_label)
    VALUES ('ESTANTON',10,char_to_label ('HR', 'SENSITIVE'));

6.7.3 数値のラベル・タグ値を使用したラベルの挿入

CHAR_TO_LABELファンクションを使用するのではなく、ラベルの数値ラベル・タグ値を使用して、データを挿入できます。

  • 数値のラベル・タグ値を使用してラベルを挿入するには、INSERT INTO文を使用します。
    たとえば、SENSITIVEの数値ラベル・タグが3000の場合、次のようになります。
    INSERT INTO emp (ename, empno, hr_label)
    VALUES ('ESTANTON', 10, 3000);

6.7.4 ラベルを指定しないデータの挿入

INSERT文でラベルを指定する必要がない状況が2つあります。

LABEL_DEFAULTが設定されている場合、または表に適用されているラベル付けファンクションがある場合は、INSERT文でラベルを指定する必要はありません。ラベルは自動的に提供されます。
  • ラベルを指定せずにデータを挿入するには、INSERT INTO文を使用します。
    たとえば:
    INSERT INTO emp (ename, empno)
    VALUES ('ESTANTON', 10);
    

    結果として得られる行ラベルは、デフォルト値に従って(またはラベル付けファンクションにより)設定されます。

6.7.5 ポリシーのラベル列が非表示になっている場合のデータの挿入

ラベル列が非表示の場合、その列の存在はデータの挿入に対して透過的です。

表の列を明示的にリスト表示せず、ラベル列の値を含めないINSERT文を記述できます。データのラベル付けには、セッションの行ラベルまたはラベル付けファンクション(表またはスキーマに対するポリシーの適用時に指定した場合)が使用されます。列名を明示的に指定しなくても、表の非表示でない各列の値を指定すれば、表に挿入できます。次の例は、表に行を挿入する方法を示しています。
  • ポリシーのラベル列が非表示になっている場合にデータを挿入するには、次の構文を使用します。
    INSERT INTO emp
    VALUES ('196','ESTANTON',Technician,RSTOUT,50000,10);
    

    ラベルは、次のいずれかになります。

    • 指定したラベル

    • 適用されているポリシーのLABEL_DEFAULTオプションで設定されるラベル

    • 適用されているポリシーで指定されたラベル付けファンクションにより作成されるラベル

      ノート:

      ポリシー・ラベル列が非表示でない場合は、INSERT文にラベル値(場合によっては、コンマで示されるnull)を明示的に含める必要があります。

6.7.6 TO_DATA_LABELを使用したラベルの挿入

TO_DATA_LABELファンクションでは、新規のラベルを動的に生成できます。

このアプローチを使用すると、データ・ラベルが有効であることを保証できます。
  1. TO_DATA_LABELファンクションに対するEXECUTE権限があることを確認します。
  2. 必要に応じて(INSERT INTO文などで) TO_DATA_LABELを使用します。
    たとえば:
    INSERT INTO emp (ename, empno, hr_label)
    VALUES ('ESTANTON', 10, to_data_label ('HR', 'SENSITIVE'));

    ノート:

    TO_DATA_LABELファンクションを使用するには、個別に明示的に付与する必要があります。また、その使用は厳密に制御する必要があります。

6.8 セッション・ラベルと行ラベルの変更

セッション中、ユーザーは認可と管理者セットに基づいてラベルを変更できます。