ヘッダーをスキップ
Oracle Label Security管理者ガイド
11g リリース1(11.1)
E05728-01
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

7 Oracle Label Securityポリシーの作成

この章では、Oracle Label Securityポリシーの作成方法について説明します。 この章の内容は、次のとおりです。

7.1 Oracle Label Securityの管理タスクの概要

Oracle Label Securityポリシーを作成して実装するには、次のタスクを実行します。各タスクの詳細は、次の各項を参照してください。

7.1.1 ステップ1: ポリシーの作成

次を定義してポリシーを作成します。

  • ポリシー名

  • ポリシー・ラベルの列名

  • ポリシーのデフォルト・オプション

Oracle Enterprise Manager Database ControlまたはGrid Controlインタフェースを使用して、ポリシーを作成できます。

Oracle Enterprise Managerを使用してポリシーを作成する手順は、次のとおりです。

  1. LBACSYSアカウントを使用してOracle Enterprise Manager Database Controlにログインします。

  2. 「サーバー」タブをクリックします。

  3. 「セキュリティ」の下の「Oracle Label Security」をクリックします。 「Label Securityポリシー」ページが表示されます。

  4. 「作成」をクリックし、新しいLabel Securityポリシーの作成を開始します。

    「Label Securityポリシーの作成」ページが表示されます。

  5. ポリシーの名前、ラベル列およびデフォルトのポリシー施行オプションを定義します。

    • 名前: ポリシーの名前を入力します(例: ACCESS_LOCATIONS)。

    • ラベル列: ラベル列の名前を入力します(例: OLS_COLUMN)。 後でポリシーを表に適用するときに、このラベル列がその表に追加されます。 デフォルトでは、ポリシーのラベル列のデータ型はNUMBER(10)です。 NUMBER(10)データ型の既存の表の列をラベル列として使用することもできます。

    • ラベル列の非表示: 列を非表示にする場合に選択します。 ポリシーを初めて作成する場合、ポリシーの開発中は「ラベル列の非表示」を無効にできます。 ポリシーが完成し使用準備が整った時点で、アプリケーションに対して透過的になるように列を非表示にします。

    • 有効: ポリシーを有効または無効に切り替えます。

    • 強制オプション: ポリシーの適用時に、デフォルトのポリシー施行オプションが使用されます。 これらのオプションが、ポリシーを適用するアプリケーションのニーズと一致していることを確認してください。

      次のオプションから選択します。

      • ポリシー強制を適用しない(NO_CONTROL)

      • ポリシー強制の適用

        すべての問合せ用(READ_CONTROL)

        INSERT操作用(INSERT_CONTROL)

        UPDATE操作用(UPDATE_CONTROL)

        ラベル列の更新にセッションのデフォルト・ラベルを使用(LABEL_DEFAULT)

        ラベル列を更新する操作(LABEL_UPDATE)

        読取りアクセスが可能になるUPDATEおよびINSERT操作(CHECK_CONTROL)

  6. 「OK」をクリックします。

    新しいポリシーが「Oracle Label Securityポリシー」ページに表示されます。

また、SA_SYSDBA.CREATE_POLICYコマンドライン・プロシージャを使用してポリシーを作成する方法もあります。

書式 ステップ2: ラベル・コンポーネントの定義

新規ポリシーのラベル・コンポーネントを形成するレベル、区分およびグループを定義します。

Oracle Enterprise Managerを使用してラベル・コンポーネントを作成する手順は、次のとおりです。

  1. 「Oracle Label Securityポリシー」ページで、前述のステップで作成したポリシーを選択します。 「編集」をクリックします。

  2. 「Label Securityポリシーの編集」ページで、「ラベル・コンポーネント」タブを選択します。

  3. 「レベル」の下の「5行追加」をクリックし、ポリシーのレベルを追加します。 作成する各レベルに対して詳細名、短縮名および数値タグを入力します。 この数値タグは、レベルの機密性に対応しています。 レベルをさらに作成する場合は、「5行追加」を再度クリックします。 同じ手順を使用して区分とグループを作成します。 区分とグループの場合、数値タグは機密性に対応していません。

    少なくとも1つのレベル(SECRETなど)を作成する必要があります。 区分とグループの作成はオプションです。

    レベル番号は、対応しているラベルの機密性レベルを示します。 番号が大きいほど機密性が大きいことを意味します。 セキュリティ・ポリシーに追加のレベルが必要になる場合に備えて、後で拡張できるような数値の範囲を選択します。 たとえば、レベルをPUBLIC(7000)とSENSITIVE(8000)として作成すると、後でCONFIDENTIALという中間レベルを作成することになった場合に、このレベルに対して7500という数値を割り当てることができます。

    区分は、データに関連付けられているカテゴリを識別し、レベル内にさらに細分化したレベルを提供します。 たとえば、1つの表に様々な部門に対応するデータがあり、そのデータを分類するために区分が必要な場合があります。区分はオプションです。

    グループは、データを所有する組織またはデータにアクセスする組織を識別します。グループは、データを制御された方法で送信したり、組織の変更に適切なタイミングで対処する場合に役立ちます。 グループはオプションです。

  4. 「適用」をクリックします。

また、コマンドラインからSA_COMPONENTSパッケージを使用してラベル・コンポーネントを作成する方法もあります。

7.1.3 ステップ3: 有効なデータ・ラベルのセットの識別

ポリシーをサポートする有効なラベルのセットを指定します。レベル、区分およびグループの可能なすべての組合せから、データに割り当てることができるラベルを定義する必要があります。

ポリシーのデータ・ラベルを作成する手順は、次のとおりです。

  1. 「Label Securityポリシー」ページで、ラベルをレベルにリンクする必要のあるポリシーを選択します。

  2. 「アクション」ボックスで、「データ・ラベル」を選択します。 「実行」をクリックします。

    「データ・ラベル」ページが表示されます。

  3. 「追加」をクリックします。

    「データ・ラベルの作成」ページが表示されます。

  4. 次の情報を入力します。

    • 数値タグ: ラベルを一意に識別する番号を入力します。 この番号は、すべてのポリシーにわたって一意である必要があります。

    • レベル: リストからレベルを選択します。

  5. 必要に応じて、ラベルに追加する区分を選択できます。 区分を追加するには、「区分」の下の「追加」をクリックします。 ラベルに追加する区分を選択します。 「選択」をクリックして区分を追加します。

  6. 必要に応じて、ラベルに追加するグループを選択できます。 グループを追加するには、「グループ」の下の「追加」をクリックします。 ラベルに追加するグループを選択します。 「選択」をクリックしてグループを追加します。

  7. 「データ・ラベルの作成」ページの「OK」をクリックします。

    データ・ラベルが「データ・ラベル」ページに表示されます。

  8. 追加のデータ・ラベルを作成するには、ステップ37を繰り返します。

また、SA_LABEL_ADMINパッケージを使用してラベル・コンポーネントを作成する方法もあります。

データ・ラベルを実行時に動的に作成する必要のあるアプリケーションでは、TO_DATA_LABELファンクションを使用する方法もあります。


注意:

Oracle Label SecurityがOracle Internet Directoryで動作するようにインストールされている場合、ラベルはOracle Internet Directoryでolsadmintoolコマンドを使用して集中管理されるため、動的ラベル生成は許可されません。付録B「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。

したがって、Oracle Label SecurityがOracle Internet Directory対応の場合、このTO_DATA_LABELファンクションは使用できず、使用するとエラー・メッセージが生成されます。


7.1.4 ステップ4: 表およびスキーマへのポリシーの適用

個々のデータベース表およびスキーマに、ポリシーを適用して保護します。 このプロセス中に、各表およびスキーマのポリシー施行レベルを、アプリケーションのセキュリティ要件が反映されるようにカスタマイズできます。

ポリシーをデータベース表に適用する手順は、次のとおりです。

  1. 「Label Securityポリシー」ページで、表に適用する必要があるポリシーを選択します。

  2. 「アクション」ボックスから「適用」を選択します。 「実行」をクリックします。

    「適用」ページが表示されます。

  3. ポリシーを表に適用するには、「表」タブを選択します。


    注意:

    ポリシーをスキーマに適用する場合は「スキーマ」タブを選択します。手順は、ポリシーを表に適用する場合と同じです。

  4. 「作成」をクリックします。

    「表の追加」ページが表示されます。

  5. 「表」ボックスの横にある懐中電灯アイコンをクリックします。

  6. 「検索と選択」ウィンドウの「検索」の下に、次の情報を入力します。

    • スキーマ: 表が表示されるスキーマの名前を入力します。 このフィールドを空のままにすると、すべてのスキーマの表が表示されます。

    • 名前: 必要に応じて表の名前を入力します。 このボックスを空のままにすると、スキーマ内のすべての表が表示されます。

    ワイルドカードを使用して検索範囲を絞り込むには、パーセント(%)符号を使用します。 たとえば、Oの文字で開始する表をすべて検索するには、O%と入力します。

  7. 表を選択し、「選択」をクリックします。

    「表の追加」ページが表示されます。

  8. 次の情報を入力します。

    • ポリシー強制オプション: 必要に応じて施行オプションを選択します。 これらのオプションは、「ステップ1: ポリシーの作成」でポリシーを作成したときに選択した施行オプションに加えて表に適用されます。

      施行オプションを変更しない場合、つまり、前述のステップで作成した内容と同じ施行オプションを使用する場合は、「デフォルトのポリシー強制を使用」を選択します。 施行オプションをさらに追加する場合は、リストされている他のオプションを選択します。

    • ラベル付けファンクション: 必要に応じてラベル付けファンクションを指定し、新規の行または更新した行に関連付けるラベルを自動的に計算します。 以降は、このファンクションが常にコールされ、ポリシーに基づいて書き込まれたデータ・ラベルが提供されます。これは、アクティブなラベル付けファンクションはラベルを提供する他の手段よりも優先されるためです。

    • 述語: 必要に応じて、READ_CONTROLのラベルベースの述語と(ANDまたはORを使用して)結合する追加の述語を指定します。

  9. 「OK」をクリックします。

また、SA_POLICY_ADMINパッケージを使用して、表およびスキーマにポリシーを適用する方法もあります。

7.1.5 ステップ5: ユーザーの認証

個々のユーザーごとに、各ユーザーがセッション・アクセスに使用する認可を定義します。適切な認可を持っていないユーザーは、保護されているデータにアクセスできません。

オプションで、特定のユーザーがジョブの実行に必要とする特殊な権限を割り当てることができます。Oracle Label Securityの権限が必要になるのは、特殊なジョブを実行する場合のみであることに注意してください。

OLSポリシーに対してユーザーを認可する手順は、次のとおりです。

  1. 「Label Securityポリシー」ページで、認可が必要なポリシーを選択します。

  2. 「アクション」ボックスで、「認可」を選択します。 「実行」をクリックします。

    「認可」ページが表示されます。 「ユーザー」タブが選択されていることを確認します。

  3. 「ユーザーの追加」をクリックします。

    「ユーザーの追加」ページが表示されます。

  4. 次の手順でユーザーを追加します。

    • 「データベース・ユーザー」については、その下の「追加」をクリックします。 「検索と選択」ウィンドウで、目的のユーザーを選択して「選択」をクリックします。

    • 「データベース以外のユーザー」については、その下の「5行追加」をクリックし、追加対象となるデータベース以外のユーザーのユーザー名を追加します。ほとんどのアプリケーション・ユーザーは、データベース以外のユーザーと考えられます。 データベース以外のユーザーはデータベースには存在しません。 ユーザー名には、Oracle Label Securityのネーミング規格を満たし、VARCHAR2(30)の長さのフィールドに収まる任意の名前を指定できます。 ただし、アプリケーションがデータベースに接続する際、データベース以外のユーザーに関するセキュリティ情報は自動的に構成されないことに注意してください。 この場合、アプリケーションでは、Oracle Label Securityのファンクションをコールして、実質的なデータベース・ユーザーでない特定ユーザーのラベル認可を想定する必要があります。

  5. 「ユーザーの作成」ページで、認可するユーザーを選択します。 「次へ」をクリックします。 複数のユーザーが同じ認可を必要としている場合は、同じ認可を必要とするすべてのユーザーを選択します。 「次へ」をクリックします。

    「権限」ステップが表示されます。

  6. ここでは、前述のステップで選択したユーザーに権限を割り当てることができます。 権限によって、データベース・ユーザーはポリシーで施行される特定の制約をバイパスできます。 付与する権限を選択します。 「次へ」をクリックします。

    ユーザーに権限を割り当てない場合は、権限を選択せずに「次へ」をクリックします。

    「レベル、区分およびグループ」ステップが表示されます。

  7. 次に、ユーザーのユーザー・ラベルを作成する必要があります。 「レベル」の下にある懐中電灯アイコンを使用して、次のフィールドに入力する値を選択します。

    • 最大レベル: このユーザーに対する読取りおよび書込みアクセスの最上位レベルを入力します。

    • 最小レベル: 書込みアクセスの最下位レベルを入力します。

    • デフォルト・レベル: ユーザーがログインする際のデフォルトのレベルを入力します。

      最小レベル以上かつ最大レベル以下の値を指定します。

    • 行レベル: ユーザーが表に書き込む際の、行に指定されるレベルを入力します。

  8. 「区分」の下の「追加」をクリックし、区分をユーザー・ラベルに追加します。 追加する区分を選択し、「選択」をクリックします。

  9. 追加する各区分については、次のプロパティを選択できます。

    • 書込み: ユーザーは、その区分をラベルの一部として持つデータに書込みができます。

    • デフォルト: その区分を、ユーザーのデフォルトのセッション・ラベルに追加します。

    • : ユーザーが表に書き込む際に、その区分をデータ・ラベルに追加します。

  10. 「グループ」の下の「追加」をクリックし、グループをユーザー・ラベルに追加します。 グループを選択し、「選択」をクリックします。

  11. 追加する各グループについては、次のプロパティを選択できます。

    • 書込み: ユーザーは、そのグループをラベルの一部として持つデータに書込みができます。

    • デフォルト: そのグループを、ユーザーのデフォルトのセッション・ラベルに追加します。

    • : ユーザーが表に書き込む際に、そのグループをデータ・ラベルに追加します。

  12. 「次へ」をクリックします。

    「監査」ステップが表示されます。

  13. ここでは、選択したユーザーに対してポリシー監査オプションを設定できます。 監査オプションは、次の操作に対して設定できます。

    • 適用されたポリシー:

      「成功時に監査」では、表またはスキーマへのポリシー適用で、成功した適用について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

      「失敗時に監査」では、表またはスキーマへのポリシーの適用で、失敗した適用について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

    • 削除されたポリシー:

      「成功時に監査」では、表またはスキーマからのポリシーの削除で、成功した削除について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

      「失敗時に監査」では、表またはスキーマからのポリシーの削除で、失敗した削除について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

    • 設定されたラベルと権限:

      「成功時に監査」では、ユーザーの認証および権限の設定で、成功した設定について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

      「失敗時に監査」では、ユーザーの認証および権限の設定で、失敗した設定について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

    • すべてのポリシー固有の権限:

      「成功時に監査」では、ポリシー権限の使用で、成功した使用について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

      「失敗時に監査」では、ポリシー権限の使用で、失敗した使用について監査します。 アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

  14. 「次へ」をクリックします。

  15. ポリシー認可設定を確認できます。 ポリシー認可を作成するには、「終了」をクリックします。 「戻る」をクリックして、認可設定を変更することもできます。

また、SA_POLICY_ADMINパッケージを使用してユーザーを認可する方法もあります。

7.1.6 ステップ6: トラステッド・プログラム・ユニットの作成と認可(オプション)

トラステッド・プログラム・ユニットは、Oracle Label Security権限を付与されているファンクション、プロシージャまたはパッケージです。 トラステッド・ストアド・プログラム・ユニットの作成方法は、標準的なプロシージャ、ファンクションまたはパッケージを作成する場合と同じで、CREATE PROCEDURECREATE FUNCTIONまたはCREATE PACKAGEおよびCREATE PACKAGE BODYの各文を使用します。 プログラム・ユニットは、Oracle Label Security権限を付与するとトラステッド・プログラム・ユニットになります。

プログラム・ユニットの権限を設定する手順は、次のとおりです。

  1. 「Label Securityポリシー」ページで、認可が必要なポリシーを選択します。

  2. 「アクション」ボックスで、「認可」を選択します。 「実行」をクリックします。

    「認可」ページが表示されます。

  3. 「トラステッド・プログラム・ユニット」タブをクリックします。

  4. 「追加」をクリックして、プロシージャ、ファンクションまたはパッケージに対するOracle Label Security権限を追加します。

    「プログラム・ユニットの作成」ページが表示されます。

  5. 「プログラム・ユニット」フィールドに、権限を付与する必要があるプロシージャ、ファンクションまたはパッケージの名前を入力します。 「検索」アイコンを使用して、プロシージャ、ファンクションまたはパッケージを検索することもできます。

  6. プログラム・ユニットに付与する必要があるポリシー固有の権限を1つ以上選択します。 「OK」をクリックします。

    「認可」ページに、トラステッド・プログラム・ユニットが追加されます。

また、SA_USER_ADMINパッケージを使用してトラステッド・プログラム・ユニットを認可する方法もあります。

7.1.7 ステップ7: 監査の構成(オプション)

必要な場合は、管理タスクと権限の使用を監視するように構成します。

既存のOracle Label Securityポリシーの監査設定を構成する手順は、次のとおりです。

  1. 「Label Securityポリシー」ページで、構成する必要があるポリシーを選択します。

  2. 「編集」をクリックします。

    Label Securityポリシー設定の編集ページが表示されます。

  3. 「拡張」タブをクリックします。 「監査」セクションの下の監査設定を編集します。

  4. ユーザー・セッション・ラベルを監査表に含める場合は、「監査ラベル」の下の「ラベルを監査証跡に含める」を選択します。

  5. 「監査設定」の下で、監査する「操作」を選択します。 次の操作から選択できます。

    • 適用されたポリシー: 表またはスキーマに対するポリシーの適用を監査します。

    • 削除されたポリシー: 表またはスキーマからのポリシーの削除を監査します。

    • 設定されたラベルと権限: ユーザーの認証と権限の設定を監査します。

    • すべてのポリシー固有の権限: ポリシー権限の使用を監査します。

  6. 「適用されたポリシー」の下の「追加」をクリックして、前述のステップで選択した「操作」に対して監査されるユーザーを追加します。

    「検索と選択」ウィンドウが表示されます。

  7. 追加する必要があるユーザーを選択します。「選択」をクリックします。

  8. 追加するユーザーごとに、「成功時に監査」および「失敗時に監査」の値を選択します。

    追加したユーザーごとに、選択した操作の成功したインスタンスの監査および失敗したインスタンスの監査を選択できます。 アクセスごとに監査するか、セッションごとに監査するかも選択できます。

  9. 監査する操作ごとに、ステップ58を繰り返します。

7.2 Oracle Label Security管理者のロールの編成

Oracle Label Securityポリシーを管理するには、様々な方法があります。 新規ポリシーの作成時にはpolicy_DBAロールが作成されます。管理タスクの実行が必要な各スタッフに、このロールを付与する必要があります。ただし、各管理者を管理タスクのサブセットに限定できるように、管理パッケージに対するEXECUTE権限を他のユーザーに付与できます。

たとえば、ラベル定義を管理するユーザーまたはロールにはSA_COMPONENTSおよびSA_LABEL_ADMINに対するEXECUTE権限を付与し、ユーザー・ラベルおよび権限を管理する別のユーザーまたはロールにはSA_USER_ADMINに対するEXECUTE権限を付与できます。また、すべての管理パッケージに対するEXECUTE権限をpolicy_DBAロールに付与することもできます。policy_DBAロールを持つユーザーは、すべての管理タスクを実行できます。

7.3 Oracle Label Securityの管理インタフェースの選択

Oracle Label Securityの開発および管理タスクは、次のインタフェースのどちらでも実行できます。

7.3.1 Oracle Label Securityのパッケージ

Oracle Label Securityのパッケージでは、簡単に管理できるように、直接のコマンドライン・インタフェースを提供します。 管理パッケージを次に示します。

表7-1 Oracle Label Securityの管理パッケージ

パッケージ 用途

SA_SYSDBA

Oracle Label Securityポリシーの作成、変更および削除。

SA_COMPONENTS

ポリシーのレベル、区分およびグループの定義。

SA_LABEL_ADMIN

ラベルの作成など、標準的なラベルのポリシー管理タスクの実行。

SA_POLICY_ADMIN

スキーマおよび表へのポリシーの適用。

SA_USER_ADMIN

レベル、区分およびグループに関するユーザー認証とプログラム・ユニットの権限の管理。ユーザー権限も管理します。

SA_AUDIT_ADMIN

管理タスクと権限使用の監査オプションの設定。


7.3.1.1 Oracle Label Securityのデモンストレーション・ファイル

提供されるパッケージを使用してOracle Label Securityポリシーを作成および開発する方法を示すデモンストレーションについては、ORACLE_HOME/rdbms/demoディレクトリにあるolsdemo.sqlファイルを参照してください。

7.3.2 Oracle Enterprise Manager

Oracle Enterprise Manager Database ControlまたはGrid Controlで提供されるWebインタフェースを使用して、Oracle Label Securityを管理できます。図7-1に、Oracle Enterprise Managerインタフェースを示す代表的なスクリーンショットを示します。

図7-1 Enterprise Managerを使用したOracle Label Securityポリシーの構成

スクリーンショット

関連項目:

  • Oracle Label Securityの管理にEnterprise Managerを使用する方法の詳細は、第4章「Oracle Label Securityスタート・ガイド」を参照してください。



  • Enterprise Manager Database ControlまたはGrid Controlインタフェースの使用方法の詳細は、Enterprise Managerのオンライン・ヘルプを参照してください。


7.4 SA_SYSDBAパッケージを使用したセキュリティ・ポリシーの管理

この項では、SA_SYSDBAパッケージを使用してポリシーを管理する方法について説明します。 この項の内容は、次のとおりです。

7.4.1 SA_SYSDBAパッケージを使用できるユーザー

ユーザーがSA_SYSDBAパッケージを使用してポリシーを作成、変更および削除するには、次のロールおよび権限が必要です。

  • LBAC_DBAロール

  • SA_SYSDBAパッケージに対するEXECUTE権限

7.4.2 ポリシーを管理できるユーザー

ポリシーを作成すると、policy_DBAというロールが自動的に作成されます。このロールを使用して、ポリシーの管理プロシージャの実行を認可されたユーザーを制御できます。

たとえば、人事管理ポリシーHRを作成すると、HR_DBAロールが自動的に作成されます。ユーザーがどの管理パッケージを使用するにも、HR_DBAロールが必要になります。JoanがHRポリシーの管理者で、DavidがFINポリシーの管理者の場合、JoanはHR_DBAロール、DavidはFIN_DBAロールを持ちます。 各ユーザーが管理できるのは、policy_DBAロールを持っているポリシーです。

ポリシーを作成するユーザーには、ADMINオプション付きのpolicy_DBAロールが自動的に付与され、このロールを他のユーザーに付与できます。

7.4.3 ポリシー指定に有効な文字

すべてのポリシー指定に有効な文字には、英数字、アンダースコアおよびデータベースのキャラクタ・セットからの有効な文字が含まれます。

7.4.4 SA_SYSDBA.CREATE_POLICYを使用したポリシーの作成

CREATE_POLICYプロシージャを使用してOracle Label Securityの新規ポリシーを作成し、ポリシー固有の列名を定義し、デフォルトのポリシー・オプション・セットを指定します。

構文:

PROCEDURE CREATE_POLICY (
   policy_name       IN VARCHAR2,
   column_name       IN VARCHAR2 DEFAULT NULL,
   default_options   IN VARCHAR2 DEFAULT NULL);

表7-2 SA_SYSDBA.CREATE_POLICYのパラメータ

パラメータ名 説明

policy_name

データベース内で一意のポリシー名を指定します。policy_nameは30文字以内ですが、最初の26文字のみが有効です。2つのポリシーでpolicy_nameの最初の26文字に同じ値を指定することはできません。

column_name

ポリシーで保護されている表に追加する列の名前を指定します。NULLを指定すると、デフォルト名SA_LABELが使用されます。2つのOracle Label Securityポリシーが同じ列名を共有することはできません。

default_options

ポリシーを適用し、表またはスキーマ固有のオプションを指定しない場合に使用するデフォルト・オプションを指定します。 これには、施行オプションとラベル列を非表示にするオプションが含まれます。



関連項目:


7.4.5 SA_SYSDBA.ALTER_POLICYを使用したポリシー・オプションの変更

ALTER_POLICYプロシージャを使用して、ポリシーのデフォルト・オプションを設定し、変更します。

構文:

PROCEDURE ALTER_POLICY (
   policy_name       IN  VARCHAR2,
   default_options   IN  VARCHAR2 DEFAULT NULL);

表7-3 SA_SYSDBA.ALTER_POLICYのパラメータ

パラメータ名 説明

policy_name

ポリシー名を指定します。

default_options

ポリシーを適用し、表またはスキーマ固有のオプションを指定しない場合に使用するデフォルト・オプションを指定します。 これには、施行オプションとラベル列を非表示にするオプションが含まれます。


7.4.6 SA_SYSDBA.DISABLE_POLICYを使用したポリシーの無効化

DISABLE_POLICYプロシージャを使用して、データベースから削除せずにポリシーの施行をオフにします。それ以降のデータベースへのすべてのアクセスには、ポリシーは施行されません。

ポリシーを無効化すると、そのポリシーで保護されている表およびスキーマにはアクセス制御が施行されなくなります。管理者は、ポリシーが無効化されている間も、引き続き管理操作を実行できます。

構文:

PROCEDURE DISABLE_POLICY (policy_name IN VARCHAR2);

表7-4 SA_SYSDBA.DISABLE_POLICYのパラメータ

パラメータ名 説明

policy_name

無効化するポリシーを指定します。



注意:

この機能はきわめて強力であり、慎重に使用する必要があります。ポリシーを無効化すると、データベースのすべての接続ユーザーが、通常はポリシーで保護されている全データにアクセスできるようになります。したがって、サイトではこの機能の使用に関するガイドラインを設定する必要があります。

通常は、データを管理するためにポリシーを無効化しないでください。ただし、管理者は、アプリケーションのデバッグ・タスクを実行するために、ポリシーを無効化することが必要となる場合があります。この場合は、データベースをシングル・ユーザー・モードで実行してください。たとえば、開発環境では、ポリシーをオンにせずにデータ処理操作を監視することが必要な場合があります。ポリシーを再び有効化すると、選択したすべての施行オプションも再び有効になります。

7.4.7 SA_SYSDBA.ENABLE_POLICYを使用したポリシーの有効化

ENABLE_POLICYプロシージャを使用して、ポリシーで保護されている表およびスキーマにアクセス制御を施行します。ポリシーは、作成時に自動的に有効化されます。作成または有効化した後は、ポリシーで保護されている表に対する以降のすべてのアクセスに対して、そのポリシーが施行されます。

構文:

PROCEDURE ENABLE_POLICY (policy_name IN VARCHAR2);

表7-5 SA_SYSDBA.ENABLE_POLICYのパラメータ

パラメータ名 説明

policy_name

有効化するポリシーを指定します。


7.4.8 SA_SYSDBA.DROP_POLICYを使用したポリシーの削除

DROP_POLICYプロシージャを使用して、ポリシーおよび対応付けられているユーザー・ラベルとデータ・ラベルすべてをデータベースから削除します。そのポリシーは、システム全体からパージされます。オプションで、そのポリシーにより制御されているすべての表からラベル列を削除することもできます。

構文:

PROCEDURE DROP_POLICY (policy_name IN VARCHAR2,
   drop_column  BOOLEAN DEFAULT FALSE);

表7-6 SA_SYSDBA.DROP_POLICYのパラメータ

パラメータ名 説明

policy_name

削除するポリシーを指定します。

drop_column

保護されている表からポリシー列を削除する必要があることを示します(TRUE)。


7.5 SA_COMPONENTSパッケージを使用したラベル・コンポーネントの定義

このパッケージでは、Oracle Label Securityのラベルのコンポーネント定義を管理します。各ポリシーでは、それぞれ異なる方法でコンポーネントを定義します。この項の内容は、次のとおりです。

7.5.1 オーバーロードされるプロシージャの使用

Oracle Label Securityでは、オーバーロードされるサブプログラム名を使用できます。つまり、様々な数、順序またはデータ型ファミリの仮パラメータを持つ複数の異なるプロシージャに同じ名前を使用できます。

たとえば、SA_COMPONENTS.ALTER_LEVELプロシージャを次のようにコールできます。

PROCEDURE ALTER_LEVEL (policy_name IN VARCHAR2,
   level_num       IN INTEGER,
   new_short_name  IN VARCHAR2 DEFAULT NULL,
   new_long_name   IN VARCHAR2 DEFAULT NULL);

または、次のようにコールすることもできます。

PROCEDURE ALTER_LEVEL (policy_name IN VARCHAR2,
   short_name      IN VARCHAR2,

new_long_name IN VARCHAR2);

この2つのプロシージャの処理は同じであるため、同じ名前を与えるのが論理的な方法です。 PL/SQLでは、この2つのうちどちらのプロシージャをコールするかが、仮パラメータをチェックすることで判断されます。前述の例では、PL/SQLで使用されるinitializeのバージョンは、プロシージャのコール時にlevel_numパラメータとshort_nameパラメータのどちらを指定したかに応じて異なります。

7.5.2 SA_COMPONENTS.CREATE_LEVELを使用したレベルの作成

CREATE_LEVELプロシージャを使用してレベルを作成し、その短縮名と詳細名を指定します。level_numパラメータに割り当てる数値により、機密性のランキングが決定されます(つまり、番号が小さいほど機密性の低いデータを示します)。

構文:

PROCEDURE CREATE_LEVEL (policy_name IN VARCHAR2,
   level_num         IN INTEGER,
   short_name        IN VARCHAR2,
   long_name         IN VARCHAR2);

表7-7 SA_COMPONENTS.CREATE_LEVELのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

level_num

レベル番号(0〜9999)を指定します。

short_name

レベルを表す短縮名(30文字以内)を指定します。

long_name

レベルを表す詳細名(80文字以内)を指定します。


7.5.3 SA_COMPONENTS.ALTER_LEVELを使用したレベルの変更

ALTER_LEVELプロシージャを使用して、レベルに関連付けられている短縮名および詳細名を変更します。

レベル番号は、一度定義すると変更できません。レベルが既存のラベルで使用されている場合、その短縮名は変更できませんが、詳細名は変更できます。

構文:

PROCEDURE ALTER_LEVEL (policy_name IN VARCHAR2,
   level_num       IN INTEGER,
   new_short_name  IN VARCHAR2 DEFAULT NULL,
   new_long_name   IN VARCHAR2 DEFAULT NULL);

PROCEDURE ALTER_LEVEL (policy_name IN VARCHAR2,
   short_name      IN VARCHAR2,
   new_long_name   IN VARCHAR2);

表7-8 SA_COMPONENTS.ALTER_LEVELのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

level_num

変更するレベル番号を指定します。

short_name

レベルを表す短縮名(30文字以内)を指定します。

new_short_name

レベルを表す新規の短縮名(30文字以内)を指定します。

new_long_name

レベルを表す新規の詳細名(80文字以内)を指定します。


7.5.4 SA_COMPONENTS.DROP_LEVELを使用したレベルの削除

DROP_LEVELプロシージャを使用してレベルを削除します。既存のラベルに使用されているレベルは削除できません。

構文:

PROCEDURE DROP_LEVEL (policy_name IN VARCHAR2,
   level_num   IN INTEGER);

PROCEDURE DROP_LEVEL (policy_name IN VARCHAR2,
   short_name  IN VARCHAR2);

表7-9 SA_COMPONENTS.DROP_LEVELのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

level_num

ポリシーの既存レベル番号を指定します。

short_name

レベルを表す短縮名(30文字以内)を指定します。


7.5.5 SA_COMPONENTS.CREATE_COMPARTMENTを使用した区分の作成

CREATE_COMPARTMENTプロシージャを使用して区分を作成し、その短縮名と詳細名を指定します。comp_numパラメータにより、区分がラベルの文字列表現にリスト表示される順序が決定されます。

構文:

PROCEDURE CREATE_COMPARTMENT (policy_name IN VARCHAR2,
   comp_num    IN INTEGER,
   short_name  IN VARCHAR2,
   long_name   IN VARCHAR2);

表7-10 SA_COMPONENTS.CREATE_COMPARTMENTのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

comp_num

区分番号(0〜9999)を指定します。

short_name

区分を表す短縮名(30文字以内)を指定します。

long_name

区分を表す詳細名(80文字以内)を指定します。


7.5.6 SA_COMPONENTS.ALTER_COMPARTMENTを使用した区分の変更

ALTER_COMPARTMENTプロシージャを使用して、区分に関連付けられている短縮名および詳細名を変更します。

comp_numパラメータは、一度設定すると変更できません。comp_numパラメータが既存のラベルに使用されている場合、その短縮名は変更できませんが、詳細名は変更できます。

構文:

PROCEDURE ALTER_COMPARTMENT (policy_name IN VARCHAR2,
   comp_num          IN INTEGER,
   new_short_name    IN VARCHAR2 DEFAULT NULL,
   new_long_name     IN VARCHAR2 DEFAULT NULL);

PROCEDURE ALTER_COMPARTMENT (policy_name IN VARCHAR2,
   short_name        IN VARCHAR2,
   new_long_name     IN VARCHAR2);

表7-11 SA_COMPONENTS.ALTER_COMPARTMENTのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

comp_num

変更する区分番号を指定します。

short_name

変更する区分の短縮名(30文字以内)を指定します。

new_short_name

区分の新規の短縮名(30文字以内)を指定します。

new_long_name

区分の新規の詳細名(80文字以内)を指定します。


7.5.7 SA_COMPONENTS.DROP_COMPARTMENTを使用した区分の削除

DROP_COMPARTMENTプロシージャを使用して区分を削除します。既存のラベルに使用されている区分は削除できません。

構文:

PROCEDURE DROP_COMPARTMENT (policy_name IN VARCHAR2,
   comp_num    IN INTEGER);

PROCEDURE DROP_COMPARTMENT (policy_name IN VARCHAR2,
   short_name  IN VARCHAR2);

表7-12 SA_COMPONENTS.DROP_COMPARTMENTのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

comp_num

ポリシーの既存の区分番号を指定します。

short_name

ポリシーの既存の区分の短縮名を指定します。


7.5.8 SA_COMPONENTS.CREATE_GROUPを使用したグループの作成

CREATE_GROUPプロシージャを使用してグループを作成し、その短縮名と詳細名、およびオプションで親グループを指定します。

構文:

PROCEDURE CREATE_GROUP (policy_name IN VARCHAR2,
   group_num   IN INTEGER,
   short_name  IN VARCHAR2,
   long_name   IN VARCHAR2,
   parent_name IN VARCHAR2 DEFAULT NULL);

表7-13 SA_COMPONENTS.CREATE_GROUPのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

group_num

グループ番号(0〜9999)を指定します。

short_name

グループを表す短縮名(30文字以内)を指定します。

long_name

グループを表す詳細名(80文字以内)を指定します。

parent_name

既存グループの短縮名を親グループとして指定します。NULLを指定すると、このグループはトップレベル・グループになります。


グループ番号は、ラベルの選択時にグループが表示される順序に影響することに注意してください。


関連項目:

グループ

7.5.9 SA_COMPONENTS.ALTER_GROUPを使用したグループの変更

ALTER_GROUPプロシージャを使用して、グループに関連付けられている短縮名および詳細名を変更します。

group_numパラメータは、一度設定すると変更できません。既存のラベルでグループが使用されている場合、その短縮名は変更できませんが、詳細名は変更できます。

構文:

PROCEDURE ALTER_GROUP (policy_name IN VARCHAR2,
   group_num      IN INTEGER,
   new_short_name IN VARCHAR2 DEFAULT NULL,
   new_long_name  IN VARCHAR2 DEFAULT NULL);

PROCEDURE ALTER_GROUP (policy_name IN VARCHAR2,
   short_name     IN VARCHAR2,
   new_long_name  IN VARCHAR2);

表7-14 SA_COMPONENTS.ALTER_GROUPのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

group_num

変更する既存のグループ番号を指定します。

short_name

変更する既存のグループの短縮名を指定します。

new_short_name

グループを表す新規の短縮名(30文字以内)を指定します。

new_long_name

グループを表す新規の詳細名(80文字以内)を指定します。


7.5.10 SA_COMPONENTS.ALTER_GROUP_PARENTを使用したグループの親の変更

ALTER_GROUP_PARENTプロシージャを使用して、特定のグループに関連付けられている親グループを変更します。

構文:

PROCEDURE ALTER_GROUP_PARENT (policy_name IN VARCHAR2,
   group_num   IN INTEGER,
   parent_name IN VARCHAR2);

PROCEDURE ALTER_GROUP_PARENT (policy_name IN VARCHAR2,
   group_num   IN INTEGER,
   parent_num  IN INTEGER);

PROCEDURE ALTER_GROUP_PARENT (policy_name IN VARCHAR2,
   short_name  IN VARCHAR2,
   parent_name IN VARCHAR2);

表7-15 SA_COMPONENTS.ALTER_GROUP_PARENTのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

group_num

変更する既存のグループ番号を指定します。

short_name

変更する既存のグループの短縮名を指定します。

parent_num

既存グループの番号を親グループとして指定します。

parent_name

既存グループの短縮名を親グループとして指定します。


7.5.11 SA_COMPONENTS.DROP_GROUPを使用したグループの削除

DROP_GROUPプロシージャを使用してグループを削除します。既存のラベルに使用されているグループは削除できません。

構文:

PROCEDURE DROP_GROUP (policy_name IN VARCHAR2,
   group_num   IN INTEGER);

PROCEDURE DROP_GROUP (policy_name IN VARCHAR2,
   short_name  IN VARCHAR2);

表7-16 SA_COMPONENTS.DROP_GROUPのパラメータ

パラメータ名 説明

policy_name

ポリシーを指定します。

group_num

ポリシーの既存のグループの番号を指定します。

short_name

既存のグループの短縮名を指定します。


7.6 SA_LABEL_ADMINパッケージを使用した有効なラベルの指定

SA_LABEL_ADMINパッケージは、ポリシーで使用されるラベルを管理する管理インタフェースを提供します。 そのために、ユーザーはSA_LABEL_ADMINパッケージに対するEXECUTE権限を持ち、policy_DBAロールを付与されている必要があります。

この項の内容は、次のとおりです。

7.6.1 SA_LABEL_ADMIN.CREATE_LABELを使用した有効なデータ・ラベルの作成

SA_LABEL_ADMIN.CREATE_LABELプロシージャを使用して、有効なデータ・ラベルを作成します。長さ1〜8桁のラベル・タグ値を手動で指定する必要があります。

構文:

PROCEDURE CREATE_LABEL (
   policy_name IN VARCHAR2,
   label_tag   IN INTEGER,
   label_value IN VARCHAR2,
   data_label  IN BOOLEAN DEFAULT TRUE);

表7-17 SA_LABEL_ADMIN.CREATE_LABELのパラメータ

パラメータ名 説明

policy_name

既存のポリシーの名前を指定します。

label_tag

ラベルのソート順を他のポリシー・ラベルとの相対で表す一意の整数値(1〜99999999)を指定します。

label_value

作成するラベルの文字列表現を指定します。

data_label

ラベルを行データのラベル付けに使用できる場合はTRUEです。この値を使用し、ラベルをデータに有効として定義します。


ラベルを指定するときには、レベル、区分およびグループの短縮名を使用します。

有効なラベルを識別するときには、表中のデータのラベル付けに使用できるレベル、区分およびグループに可能なすべての組合せを指定します。


注意:

TO_DATA_LABELプロシージャを使用して新規ラベルを作成すると、10桁のシステム生成ラベル・タグが自動的に生成されます。

ただし、Oracle Label SecurityがOracle Internet Directoryで動作するようにインストールされている場合、ラベルはOracle Internet Directoryでolsadmintoolコマンドを使用して集中管理されるため、動的ラベル生成は許可されません。付録B「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。

したがって、Oracle Label SecurityがOracle Internet Directory対応の場合、TO_DATA_LABELファンクションは使用できず、使用するとエラー・メッセージが生成されます。


7.6.2 SA_LABEL_ADMIN.ALTER_LABELを使用したラベルの変更

ALTER_LABELプロシージャを使用して、ラベル・タグに関連付けられている文字列ラベルの定義を変更します。ラベル・タグ自体は変更できないことに注意してください。

ラベル・タグに関連付けられている文字列を変更すると、行のデータの機密性もそれに応じて変更されます。たとえば、ラベル・タグ値4001に関連付けられているラベル文字列TS:AをラベルTS:Bに変更すると、そのデータへのアクセス権もそれに応じて変更されます。これは、ラベル・タグ値(4001)に変更がない場合も同じです。この方法で、すべての行を更新せずにデータの機密性を変更できます。

変更するラベルを指定するときには、ラベル・タグまたは文字列値で参照できることを確認してください。

構文:

PROCEDURE ALTER_LABEL (
   policy_name       IN VARCHAR2,
   label_tag         IN INTEGER,
   new_label_value   IN VARCHAR2 DEFAULT NULL,
   new_data_label    IN BOOLEAN  DEFAULT NULL);

PROCEDURE ALTER_LABEL (
   policy_name       IN VARCHAR2,
   label_value       IN VARCHAR2,
   new_label_value   IN VARCHAR2 DEFAULT NULL,
   new_data_label    IN BOOLEAN  DEFAULT NULL);

表7-18 SA_LABEL_ADMIN.ALTER_LABELのパラメータ

パラメータ名 説明

policy_name

既存のポリシーの名前を指定します。

label_tag

変更するラベルに割り当てられている整数タグを識別します。

label_value

変更するラベルの既存の文字列表現を識別します。

new_label_value

ラベル値の新規の文字列表現を指定します。NULLを指定すると、既存の値は変更されません。

new_data_label

ラベルを行データのラベル付けに使用できる場合はTRUEです。NULLを指定すると、既存の値は変更されません。


7.6.3 SA_LABEL_ADMIN.DROP_LABELを使用したラベルの削除

SA_LABEL_ADMIN.DROP_LABELプロシージャを使用して、指定したポリシーのラベルを削除します。それ以後のラベルへの参照(データ行内、ユーザー・ラベル内またはプログラム・ユニット・ラベル内)では、無効なラベルによるエラーが発生します。

構文:

PROCEDURE DROP_LABEL (
   policy_name       IN VARCHAR2,
   label_tag         IN INTEGER);

PROCEDURE DROP_LABEL (
   policy_name       IN VARCHAR2,
   label_value       IN VARCHAR2);

表7-19 SA_LABEL_ADMIN.DROP_LABELのパラメータ

パラメータ名 説明

policy_name

既存のポリシーの名前を指定します。

label_tag

削除するラベルに割り当てられている整数タグを指定します。

label_value

削除するラベルの文字列値を指定します。



注意:

データベース内で使用中のラベルは削除しないでください。


このプロシージャを使用するのは、データを移入する前のラベルの設定中のみです。使用するラベルを意図せずに削除した場合は、ポリシーを無効化し、問題を解決し、ポリシーを再び有効化すればリカバリできます。