プライマリ・コンテンツに移動
Oracle® Label Security管理者ガイド
12cリリース1 (12.1)
E56367-02
目次へ移動
目次
索引へ移動
索引

前
次

E Oracle Label SecurityのPL/SQLパッケージ

Oracle Label Securityでは、一連のPL/SQLパッケージを提供します。

内容は次のとおりです。

関連項目:

追加のスタンドアロンOracle Label Securityファンクションは、「支配ファンクションの使用」を参照してください

SA_AUDIT_ADMIN Oracle Label Security監査PL/SQLパッケージ

非統合監査環境の場合、SA_AUDIT_ADMIN PL/SQLパッケージは、Oracle Label Securityに固有の監査を構成します。

統合監査を使用する場合、Oracle Label Securityの統合監査ポリシーの作成については、『Oracle Databaseセキュリティ・ガイド』を参照してください。統合監査環境では、この項で説明するプロシージャを設定した結果、新しい監査レコードは生成されません。

システム単位の監査を有効化した後に、SA_AUDIT_ADMIN PL/SQLパッケージ・プロシージャを使用して、Oracle Label Securityの監査を有効化または無効化できます。このパッケージを使用するには、SA_AUDIT_ADMINパッケージに対するpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-1に、SA_AUDIT_ADMIN PL/SQLパッケージ・プロシージャを示します。

表E-1 SA_AUDIT_ADMIN PL/SQLパッケージの内容

プロシージャ 説明

SA_AUDIT_ADMIN.AUDIT

ポリシー固有の監査を有効化します。各ポリシーの監査は、他から独立しています。

SA_AUDIT_ADMIN.AUDIT_LABEL

ラベルがポリシーの監査レコードに記録されているかどうかを示します。

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED

ラベルがポリシーの監査レコードに記録されているかどうかを示します。

SA_AUDIT_ADMIN.CREATE_VIEW

DBA_policyname_AUDIT_TRAILという名前の監査証跡ビューを作成します。これには、指定したポリシーのラベル列、およびこのポリシーのかわりに書き込まれた監査証跡内のすべてのエントリが含まれます

SA_AUDIT_ADMIN.DROP_VIEW

指定したポリシーの(SA_AUDIT_ADMIN.CREATE_VIEWプロシージャによって作成された)監査証跡ビューを削除します。

SA_AUDIT_ADMIN.NOAUDIT

Oracle Label Securityのポリシー固有の監査を無効化します。

SA_AUDIT_ADMIN.NOAUDIT_LABEL

ポリシー・ラベルの監査を無効化します。

関連項目:

policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

SA_AUDIT_ADMIN.AUDIT

SA_AUDIT_ADMIN.AUDITプロシージャは、ポリシー固有の監査を有効化します。

各ポリシーの監査は、他から独立しています。監査レコードは、Oracle Label Securityの管理アクションを取得し、ログオン、DML実行および信頼できるストアド・プロシージャ呼出しの際に使用されたOracle Label Securityの権限の使用を取得します。

構文

SA_AUDIT_ADMIN.AUDIT (
     policy_name     IN VARCHAR2,
     users           IN VARCHAR2 DEFAULT NULL,
     audit_option    IN VARCHAR2 DEFAULT NULL,
     audit_type      IN VARCHAR2 DEFAULT NULL,
     success         IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-2 SA_AUDIT_ADMIN.AUDITのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

users

オプション。監査するユーザー名のカンマ区切りのリストは、次のとおりです。

  • OLS管理アクションを監査している場合、入力したユーザーにOracle Label Securityのパッケージに対するpolicy_DBAロールおよびEXECUTE権限があることを確認してください。

  • OLS権限の使用を監査している場合、これらのユーザーはOLS管理者である必要がありません。

  • どのユーザーも指定していない場合、すべてのユーザーが監査されます。

Oracle Label Securityのポリシーを変更する権限を持つユーザーを検索するには、DBA_SA_USERSビューのUSER_NAME列を問い合せます。

audit_option

オプション。監査するオプションのカンマ区切りのリストです。オプションは次のとおりです。

  • APPLY: 表およびスキーマに対する指定したOracle Label Securityのポリシーの適用を監査します。

  • REMOVE: 表およびスキーマからの指定したOracle Label Securityのポリシーの削除を監査します。

  • SET: ユーザー認証およびユーザーとプログラムの権限の設定を監査します。

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

指定しない場合、すべてのデフォルト・オプション(つまり権限を含まないオプション)が監査されます。すべての権限の監査オプションを設定するPRIVILEGESオプションを指定して、権限付き操作の監査オプションを明示的に設定する必要があります。

audit_type

オプション。BY ACCESSまたはBY SESSION。指定しない場合、監査レコードはセッション別に書き込まれます。

success

オプション。アクションが成功した場合はSUCCESSFUL、それ以外の場合はNOT SUCCESSFULです。指定しない場合は、両方の監査が書き込まれます。

次の例では、ユーザーpsmithおよびrlaytonによる失敗したAPPLYおよびREMOVEの試行を監査します。

BEGIN
 SA_AUDIT_ADMIN.AUDIT(
  policy_name      => 'hr_ols_pol',
  users            => 'jjones, rlayton',
  audit_option     => 'apply, remove',
  audit_type       => 'by access',
  success          => 'not successful');
END;
/

監査オプションを指定しない場合は、権限関連のオプションを除き、すべてのオプションが監査されます。権限の監査を明示的に指定する必要があります。たとえば、次の文を入力した場合、hr_ols_polポリシーにデフォルト・オプションが設定されます。

EXEC SA_AUDIT_ADMIN.AUDIT ('hr_ols_pol');

監査を有効化すると、アクションの成否に関係なく、すべてのユーザーについてセッション別に実行されます。

監査パラメータおよびオプションを設定すると、新しい値は現行セッションではなく後続のセッションにのみ適用されます。

あるSA_AUDIT_ADMIN.AUDITコール(ユーザー指定なし)で全ユーザーについてAPPLY操作の監査を有効化し、2番目のコールで特定のユーザーについてREMOVE操作の監査を有効化する場合を考えます。次に例を示します。

EXEC SA_AUDIT_ADMIN.AUDIT ('hr_ols_pol', null, 'apply');
EXEC SA_AUDIT_ADMIN.AUDIT ('hr_ols_pol', 'scott', 'remove');

この場合、SCOTTAPPLY操作とREMOVE操作の両方について監査対象となります。

SA_AUDIT_ADMIN.AUDIT_LABEL

SA_AUDIT_ADMIN.AUDIT_LABELプロシージャは、監査中にポリシー・ラベルを記録します。

このプロシージャにより、ユーザーのセッション・ラベルが監査表に格納されます。

構文

SA_AUDIT_ADMIN.AUDIT_LABEL (
     policy_name     IN VARCHAR2);

パラメータ

表E-3 SA_AUDIT_ADMIN.AUDIT_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、Oracle Label Securityのラベルがhr_ols_polポリシーに対して監査されているかどうかを示す出力を書き込みます。

BEGIN
 SA_AUDIT_ADMIN.AUDIT_LABEL(
  policy_name      => 'hr_ols_pol');
END;
/

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLEDファンクションは、ラベルがポリシーの監査レコードに記録されているかどうかを示します。

構文

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED ( 
  policy_name IN VARCHAR2)
RETURN BOOLEAN;

パラメータ

表E-4 SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLEDのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、Oracle Label Securityのラベルがhr_ols_polポリシーに対して監査されているかどうかを示す出力を書き込みます。

SET SERVEROUTPUT ON
BEGIN 
 IF SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED('hr_ols_pol')  
  THEN DBMS_OUTPUT.PUT_LINE('OLS hr_ols_pol labels are being audited.');
 ELSE 
  DBMS_OUTPUT.PUT_LINE('OLS hr_ols_pol labels not being audited.'); 
 END IF; 
END;
/

SA_AUDIT_ADMIN.CREATE_VIEW

SA_AUDIT_ADMIN.CREATE_VIEWプロシージャは、DBA_policyname_AUDIT_TRAILという名前の監査証跡ビューを作成します。

このビューには、指定したポリシーのラベル列、およびこのポリシーのかわりに書き込まれた監査証跡内のすべてのエントリが含まれます。ビュー名がデータベースの制限である30文字を超えた場合、ユーザーはオプションで短いビュー名を指定できます。

関連項目:

DBA_policyname_AUDIT_TRAILビューに含まれている列を検索するには、「Oracle Label Securityのユーザー作成の監査ビュー」を参照してください

構文

SA_AUDIT_ADMIN.CREATE_VIEW (
     policy_name     IN VARCHAR2,
     view_name       IN VARCHAR2    DEFAULT NULL);

パラメータ

表E-5 SA_AUDIT_ADMIN.CREATE_VIEWのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

view_name

オプション。ビューの名前を指定します。この設定を省略した場合、名前はDBA_policyname_AUDIT_TRAILにデフォルト設定されます。

次の例では、hr_ols_polポリシーのhr_ols_pol_viewと呼ばれるビューを作成します。

BEGIN
 SA_AUDIT_ADMIN.CREATE_VIEW(
  policy_name      => 'hr_ols_pol',
  view_name        => 'hr_ols_pol_view');
END;
/

SA_AUDIT_ADMIN.DROP_VIEW

SA_AUDIT_ADMIN.DROP_VIEWプロシージャは、指定したポリシーの監査証跡ビューを削除します。

構文

SA_AUDIT_ADMIN.DROP_VIEW (
     policy_name     IN VARCHAR2,
     view_name       IN VARCHAR2    DEFAULT NULL);

パラメータ

表E-6 SA_AUDIT_ADMIN.DROP_VIEWのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

view_name

既存のビューの名前を指定します。このビューを検索するには、まず、ALL_SA_POLICIESデータ・ディクショナリ・ビューを問い合せて、ビューの基になったポリシーの名前を検索し、次にALL_VIEWSデータ・ディクショナリ・ビューを問い合せて、そのポリシーの名前を持つビューを検索します。

次の例では、hr_ols_polポリシーからhr_ols_pol_viewと呼ばれるビューを削除します。

BEGIN
 SA_AUDIT_ADMIN.DROP_VIEW(
  policy_name      => 'hr_ols_pol',
  view_name        => 'hr_ols_pol_view');
END;
/

SA_AUDIT_ADMIN.NOAUDIT

SA_AUDIT_ADMIN.NOAUDITプロシージャは、Oracle Label Securityのポリシー固有の監査を無効化します。

構文

SA_AUDIT_ADMIN.NOAUDIT (
     policy_name     IN VARCHAR2,
     users           IN VARCHAR2 DEFAULT NULL,
     audit_option    IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-7 SA_AUDIT_ADMIN.NO_AUDITのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

users

オプション。監査されたユーザーのカンマ区切りのリストです。指定しない場合は、すべてのユーザーの監査が無効化されます。

Oracle Label Securityのポリシーを変更する権限を持つユーザーを検索するには、ALL_SA_AUDIT_OPTIONSビューのUSER_NAME列を問い合せます。

audit_option

オプション。無効化するオプションのカンマ区切りのリストです。オプションは次のとおりです。

  • APPLY: 表およびスキーマに対する指定したOracle Label Securityのポリシーの適用を監査します。

  • REMOVE: 表およびスキーマからの指定したOracle Label Securityのポリシーの削除を監査します。

  • SET: ユーザー認証およびユーザーとプログラムの権限の設定を監査します。

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

指定しない場合、すべてのデフォルト・オプションが無効化されます。権限は明示的に無効化する必要があります。

次の例では、ユーザーpsmithおよびrlaytonによる失敗したAPPLYおよびREMOVEの試行の監査を無効化します。

BEGIN
 SA_AUDIT_ADMIN.NOAUDIT(
  policy_name      => 'hr_ols_pol',
  users            => 'jjones',
  audit_option     => 'apply, remove');
END;
/

有効化されているすべてのオプション、またはそのサブセットのみについて監査を無効化できます。指定したオプションに対するすべての監査が、指定した全ユーザー(または、usersパラメータがNULLの場合は全ユーザー)について無効化されます。たとえば、次の文では、ユーザーJohn、MaryおよびScottについて、APPLYおよびREMOVE操作の監査が無効化されます。

EXEC SA_AUDIT_ADMIN.NOAUDIT ('HR', 'JOHN, MARY, SCOTT', 'APPLY, REMOVE');

あるAUDITコールで特定のユーザーの監査を有効化し、2番目のコール(ユーザー指定なし)で全ユーザーの監査を有効化する場合を考えます。次に例を示します。

EXEC SA_AUDIT_ADMIN.AUDIT ('HR', 'SCOTT');
EXEC SA_AUDIT_ADMIN.AUDIT ('HR');

この場合、(次の文のように)ユーザーを指定せずに後続のNOAUDITへのコールを行うと、最初のコールで明示的にSCOTTに対して設定された監査は無効になりません。したがって、SCOTTの監査は引き続き実行されます。

EXEC SA_AUDIT_ADMIN.NOAUDIT ('HR');

このため、すべてのユーザーに対してSA_AUDIT_ADMIN.NOAUDITを設定しても、Oracle Label Securityでは監査が明示的に設定されているユーザーは引き続き監査されます。

権限付き操作の監査は明示的に指定する必要があります。オプションを指定せずにSA_AUDIT_ADMIN.NOAUDITを実行しても、Oracle Label Securityでは権限付き操作が引き続き監査されます。たとえば、監査を有効にして次のように入力すると、

EXEC SA_AUDIT_ADMIN.NOAUDIT ('HR');

権限付き操作(WRITEDOWNなど)については引き続き監査が実行されます。

設定したSA_AUDIT_ADMIN.NOAUDITパラメータおよびオプションは、現行セッションではなく後続のセッションにのみ適用されます。

設定済の監査オプションの有効化を試みたり、設定されていない監査オプションの無効化を試みると、Oracle Label Securityでは文は処理され、エラーは表示されません。 無効なオプションの指定を試みると、エラー・メッセージが表示されます。ALL_SA_AUDIT_OPTIONSデータ・ディクショナリ・ビューを問い合せることで、監査オプションのステータスを検索できます。

SA_AUDIT_ADMIN.NOAUDIT_LABEL

SA_AUDIT_ADMIN.NOAUDIT_LABELプロシージャは、ポリシー・ラベルの監査を無効化します。

構文

SA_AUDIT_ADMIN.NOAUDIT_LABEL (
   policy_name     IN VARCHAR2);

パラメータ

表E-8 SA_AUDIT_ADMIN.NO_AUDIT_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーの監査を無効化します。

BEGIN
 SA_AUDIT_ADMIN.NOAUDIT_LABEL(
  policy_name      => 'hr_ols_pol');
END;
/

SA_COMPONENTSラベル・コンポーネントPL/SQLパッケージ

SA_COMPONENTS PL/SQLパッケージでは、Oracle Label Securityのラベルのコンポーネント定義を管理します。

SA_COMPONENTS.ALTER_COMPARTMENT

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

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

構文

SA_COMPONENTS.ALTER_COMPARTMENT (
   policy_name       IN VARCHAR2,
   comp_num          IN NUMBER(38),
   new_short_name    IN VARCHAR2,
   new_long_name     IN VARCHAR2);

SA_COMPONENTS.ALTER_COMPARTMENT (
   policy_name       IN VARCHAR2,
   short_name        IN VARCHAR2 DEFAULT NULL,
   new_long_name     IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-9 SA_COMPONENTS.ALTER_COMPARTMENTのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

comp_num

変更する区分の番号を指定します。既存の区分番号のリストを検索するには、ALL_SA_COMPARTMENTSビューのCOMP_NUM列を問い合せます。

short_name

変更する区分の短縮名(30文字以内)を指定します。現行の区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

new_short_name

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

new_long_name

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

次の例では、hr_ols_polポリシーを変更します。

BEGIN
  SA_COMPONENTS.ALTER_COMPARTMENT (
   policy_name         => 'hr_ols_pol',
   comp_num            => '48',
   new_short_name      => 'FIN',
   new_long_name       => 'FINANCE');
END;
/

SA_COMPONENTS.ALTER_GROUP

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

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

構文

SA_COMPONENTS.ALTER_GROUP (
   policy_name    IN VARCHAR2,
   group_num      IN NUMBER(38),
   new_short_name IN VARCHAR2 DEFAULT NULL,
   new_long_name  IN VARCHAR2 DEFAULT NULL);

SA_COMPONENTS.ALTER_GROUP (
   policy_name    IN VARCHAR2,
   short_name     IN VARCHAR2,
   new_long_name  IN VARCHAR2);

パラメータ

表E-10 SA_COMPONENTS.ALTER_GROUPのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

変更する既存のグループ番号を指定します。既存のグループ番号を検索するには、ALL_SA_GROUPSビューのGROUP_NUM列を問い合せます。

short_name

変更する既存のグループの短縮名を指定します。既存の短縮名を検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

new_short_name

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

new_long_name

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

次の例では、hr_ols_polポリシーのlong_name設定を変更します。

BEGIN
  SA_COMPONENTS.ALTER_GROUP (
   policy_name     => 'hr_ols_pol',
   short_name      => 'ER_FIN',
   new_long_name   => 'ER_FINANCES');
END;
/

SA_COMPONENTS.ALTER_GROUP_PARENT

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

構文

SA_COMPONENTS.ALTER_GROUP_PARENT (
   policy_name     IN VARCHAR2,
   group_num       IN NUMBER(38),
   new_parent_num  IN NUMBER(38));

SA_COMPONENTS.ALTER_GROUP_PARENT (
   policy_name     IN VARCHAR2,
   group_num       IN NUMBER(38),
   new_parent_name IN VARCHAR2);

SA_COMPONENTS.ALTER_GROUP_PARENT (
   policy_name     IN VARCHAR2,
   short_name      IN VARCHAR2,
   new_parent_name IN VARCHAR2);

パラメータ

表E-11 SA_COMPONENTS.ALTER_GROUP_PARENTのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

変更する既存のグループ番号を指定します。既存のグループ番号を検索するには、ALL_SA_GROUPSビューのGROUP_NUM列を問い合せます。

short_name

変更する既存のグループの短縮名を指定します。既存の短縮名を検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

new_parent_num

既存グループの番号を親グループとして指定します。既存の親グループを検索するには、ALL_SA_GROUPSビューのPARENT_NUM列を問い合せます。

new_parent_name

既存グループの短縮名を親グループとして指定します。既存のグループを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

次の例では、hr_ols_polポリシーの親の名前を変更します。

BEGIN
  SA_COMPONENTS.ALTER_GROUP_PARENT (
   policy_name         => 'hr_ols_pol',
   group_num           => 2100,
   new_parent_name     => 'ER');
END;
/

SA_COMPONENTS.ALTER_LEVEL

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

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

構文

SA_COMPONENTS.ALTER_LEVEL (
   policy_name     IN VARCHAR2,
   level_num       IN NUMBER(38),
   new_short_name  IN VARCHAR2 DEFAULT NULL,
   new_long_name   IN VARCHAR2 DEFAULT NULL);

SA_COMPONENTS.ALTER_LEVEL (
   policy_name     IN VARCHAR2,
   short_name      IN VARCHAR2,
   new_long_name   IN VARCHAR2);

パラメータ

表E-12 SA_COMPONENTS.ALTER_LEVELのパラメータ

パラメータ 説明

policy_name

存在するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

level_num

変更するレベルの番号を指定します。既存のレベルを検索するには、ALL_SA_LEVELSビューのLEVEL_NUM列を問い合せます。

short_name

既存のレベルの短縮名を指定します。既存のレベルの短縮名を検索するには、ALL_SA_LEVELSビューのSHORT_NAME列を問い合せます。

new_short_name

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

new_long_name

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

次の例では、hr_ols_polポリシー・レベルの短縮名および詳細名を変更します。

BEGIN
 SA_COMPONENTS.ALTER_LEVEL (
   policy_name     => 'hr_ols_pol',
   level_num       => 40,
   new_short_name  => 'TS',
   new_long_name   => 'TOP_SECRET');
END;
/

SA_COMPONENTS.CREATE_COMPARTMENT

SA_COMPONENTS.CREATE_COMPARTMENTプロシージャは、区分を作成し、その短縮名と詳細名を指定します。

comp_numパラメータにより、区分がラベルの文字列表現にリスト表示される順序が決定されます。

構文

SA_COMPONENTS.CREATE_COMPARTMENT (
   policy_name IN VARCHAR2,
   comp_num    IN NUMBER(38),
   short_name  IN VARCHAR2,
   long_name   IN VARCHAR2);

パラメータ

表E-13 SA_COMPONENTS.CREATE_COMPARTMENTのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

comp_num

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

short_name

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

long_name

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

次の例では、hr_ols_polポリシーの区分を作成します。

BEGIN
  SA_COMPONENTS.CREATE_COMPARTMENT (
   policy_name     => 'hr_ols_pol',
   comp_num        => '48',
   short_name      => 'FIN',
   long_name       => 'FINANCE');
END;
/

SA_COMPONENTS.CREATE_GROUP

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

構文

SA_COMPONENTS.CREATE_GROUP (
   policy_name IN VARCHAR2,
   group_num   IN NUMBER(38),
   short_name  IN VARCHAR2,
   long_name   IN VARCHAR2,
   parent_name IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-14 SA_COMPONENTS.CREATE_GROUPのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

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

short_name

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

long_name

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

parent_name

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

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

次の例では、最初に親グループERを作成し、次にその親グループに含まれる2番目のグループを作成します。

BEGIN
  SA_COMPONENTS.CREATE_GROUP (
   policy_name     => 'hr_ols_pol',
   group_num       => 2000,
   short_name      => 'ER',
   long_name       => 'EAST_REGION');
END;
/
 
BEGIN
  SA_COMPONENTS.CREATE_GROUP (
   policy_name     => 'hr_ols_pol',
   group_num       => 2100,
   short_name      => 'ER_FIN',
   long_name       => 'ER_FINANCES',
   parent_name     => 'ER');
END;
/

SA_COMPONENTS.CREATE_LEVEL

SA_COMPONENTS.CREATE_LEVELプロシージャは、レベルを作成し、その短縮名と詳細名を指定します。

level_numパラメータに割り当てる数値により、機密性のランキングが決定されます(つまり、番号が小さいほど機密性の低いデータを示します)。

構文

SA_COMPONENTS.CREATE_LEVEL (
   policy_name       IN VARCHAR2,
   level_num         IN NUMBER(38),
   short_name        IN VARCHAR2,
   long_name         IN VARCHAR2);

パラメータ

表E-15 SA_COMPONENTS.CREATE_LEVELのパラメータ

パラメータ 説明

policy_name

存在するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

level_num

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

short_name

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

long_name

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

次の例では、hr_ols_polポリシーのレベルを作成します。

BEGIN
 SA_COMPONENTS.CREATE_LEVEL (
   policy_name   => 'hr_ols_pol',
   level_num     => 40,
   short_name    => 'HS',
   long_name     => 'HIGHLY_SENSITIVE');
END;
/

SA_COMPONENTS.DROP_COMPARTMENT

SA_COMPONENTS.DROP_COMPARTMENTプロシージャは、区分を削除します。

既存のラベルで区分が使用されている場合、それは削除できませんALL_SA_DATA_LABELSデータ・ディクショナリ・ビューのLABEL列を問い合せることで、既存のすべてのラベルを検索できます。

構文

SA_COMPONENTS.DROP_COMPARTMENT (
   policy_name IN VARCHAR2,
   comp_num    IN INTEGER);

SA_COMPONENTS.DROP_COMPARTMENT (
   policy_name IN VARCHAR2,
   short_name  IN VARCHAR2);

パラメータ

表E-16 SA_COMPONENTS.DROP_COMPARTMENTのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

comp_num

ポリシーの既存の区分の番号を指定します。既存の区分番号を検索するには、DBA_SA_COMPARTMENTSビューのCOMP_NUM列を問い合せます。

short_name

ポリシーの既存の区分の短縮名を指定します。既存の区分の短縮名を検索するには、DBA_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

次の例では、hr_ols_polポリシーからFIN区分を削除します。

BEGIN
  SA_COMPONENTS.DROP_COMPARTMENT (
   policy_name     => 'hr_ols_pol',
   short_name      => 'FIN');
END;
/

SA_COMPONENTS.DROP_GROUP

SA_COMPONENTS.DROP_GROUPプロシージャは、グループを削除します。

既存のラベルでグループが使用されている場合、それは削除できません。

構文

SA_COMPONENTS.DROP_GROUP (
   policy_name IN VARCHAR2,
   group_num   IN NUMBER(38));

SA_COMPONENTS.DROP_GROUP (
   policy_name IN VARCHAR2,
   short_name  IN VARCHAR2);

パラメータ

表E-17 SA_COMPONENTS.DROP_GROUPのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

ポリシーの既存のグループの番号を指定します。既存のグループ番号を検索するには、ALL_SA_GROUPSビューのGROUP_NUM列を問い合せます。

short_name

既存のグループの短縮名を指定します。既存のグループの短縮名を検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

次の例では、hr_ols_polポリシーのグループ番号に基づいて、グループを削除します。

BEGIN
  SA_COMPONENTS.DROP_GROUP (
   policy_name     => 'hr_ols_pol',
   group_num       => 2000);
END;
/

SA_COMPONENTS.DROP_LEVEL

SA_COMPONENTS.DROP_LEVELプロシージャは、レベルを削除します。

既存のラベルに使用されているレベルは削除できません。

構文

SA_COMPONENTS.DROP_LEVEL (
   policy_name IN VARCHAR2,
   level_num   IN NUMBER(38));

SA_COMPONENTS.DROP_LEVEL (
   policy_name IN VARCHAR2,
   short_name  IN VARCHAR2);

パラメータ

表E-18 SA_COMPONENTS.DROP_LEVELのパラメータ

パラメータ 説明

policy_name

存在するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

level_num

ポリシーの既存のレベルの番号を指定します。既存のレベル番号を検索するには、ALL_SA_LEVELSビューのLEVEL_NUM列を問い合せます。

short_name

レベルを表す短縮名(30文字以内)を指定します。既存のレベルの短縮名を検索するには、ALL_SA_LEVELSビューのSHORT_NAME列を問い合せます。

次の例では、hr_ols_polポリシーからレベル40を削除します。

BEGIN
 SA_COMPONENTS.DROP_LEVEL (
   policy_name     => 'hr_ols_pol',
   level_num       => 40);
END;
/

SA_LABEL_ADMINラベル管理PL/SQLパッケージ

SA_LABEL_ADMIN PL/SQLパッケージは、ポリシーで使用されるラベルを管理する管理インタフェースを提供します。

このパッケージを使用するには、SA_LABEL_ADMINパッケージでのpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-19に、SA_LABEL_ADMINパッケージ・プロシージャを示します。

表E-19 SA_LABEL_ADMIN PL/SQLパッケージの内容

プロシージャ 説明

SA_LABEL_ADMIN.ALTER_LABEL

既存のラベルを変更します。

SA_LABEL_ADMIN.CREATE_LABEL

データ・ラベルを作成します。

SA_LABEL_ADMIN.DROP_LABEL

ラベルを削除します。

SA_LABEL_ADMIN.ALTER_LABEL

SA_LABEL_ADMIN.ALTER_LABELプロシージャは、ラベル・タグに関連付けられている文字列ラベルの定義を変更します。

ラベル・タグ自体は変更できません。

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

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

構文

SA_LABEL_ADMIN.ALTER_LABEL (
   policy_name       IN VARCHAR2,
   label_tag         IN BINARY_INTEGER,
   new_label_value   IN VARCHAR2 DEFAULT NULL,
   new_data_label    IN BOOLEAN  DEFAULT NULL);

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

パラメータ

表E-20 SA_LABEL_ADMIN.ALTER_LABELのパラメータ

パラメータ 説明

policy_name

既存のポリシーの名前を指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label_tag

変更するラベルに割り当てられている整数タグを識別します。既存のラベル・タグを検索するには、ALL_SA_LABELSビューのLABEL_TAG列を問い合せます。

label_value

変更するラベルの既存の文字列表現を識別します。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

new_label_value

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

new_data_label

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

次の例では、hr_ols_polポリシーのlabel_tagおよびlabel_value設定を変更します。

BEGIN
  SA_LABEL_ADMIN.ALTER_LABEL (
   policy_name       => 'hr_ols_pol',
   label_tag         => 1111,
   new_label_value   => 'HS',
   new_data_label    => TRUE);
END;
/

SA_LABEL_ADMIN.CREATE_LABEL

SA_LABEL_ADMIN.CREATE_LABEL プロシージャは、データ・ラベルを作成します。

構文

SA_LABEL_ADMIN.CREATE_LABEL (
   policy_name IN VARCHAR2,
   label_tag   IN BINARY_INTEGER,
   label_value IN VARCHAR2,
   data_label  IN BOOLEAN DEFAULT TRUE);

パラメータ

表E-21 SA_LABEL_ADMIN.CREATE_LABELのパラメータ

パラメータ 説明

policy_name

既存のポリシーの名前を指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label_tag

ラベルのソート順を他のポリシー・ラベルとの相対で表す一意の整数値(0から99999999)を指定します。この値の長さは1桁から8桁である必要があります。

label_value

作成するラベルの文字列表現を指定します。レベル、区分およびグループの短縮名を使用します。ALL_SA_LEVELSALL_SA_COMPARTMENTSおよびALL_SA_GROUPSビューのSHORT_NAME列を問い合せることで、これらの値を検索できます。

data_label

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

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

次の例では、hr_ols_polポリシーのラベルを作成します。

BEGIN
  SA_LABEL_ADMIN.CREATE_LABEL (
   policy_name     => 'hr_ols_pol',
   label_tag       => 1111,
   label_value     => 'HS:FIN',
   data_label      => TRUE);
END;
/

注意:

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

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

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

SA_LABEL_ADMIN.DROP_LABEL

SA_LABEL_ADMIN.DROP_LABELプロシージャは、指定したポリシー・ラベルを削除します。

それ以後のラベルへの参照(データ行内、ユーザー・ラベル内またはプログラム・ユニット・ラベル内)では、無効なラベルによるエラーが発生します。

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

構文

SA_LABEL_ADMIN.DROP_LABEL (
   policy_name       IN VARCHAR2,
   label_tag         IN BINARY_INTEGER);

SA_LABEL_ADMIN.DROP_LABEL (
   policy_name       IN VARCHAR2,
   label_value       IN VARCHAR2);

パラメータ

表E-22 SA_LABEL_ADMIN.DROP_LABELのパラメータ

パラメータ 説明

policy_name

既存のポリシーの名前を指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label_tag

削除するラベルに割り当てられている整数タグを指定します。既存のラベル・タグを検索するには、ALL_SA_LABELSビューのLABEL_TAG列を問い合せます。

label_value

削除するラベルの文字列値を指定します。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

警告:

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

次の例では、label_tag設定に基づいて、hr_ols_polポリシー・ラベルを削除します。

BEGIN
  SA_LABEL_ADMIN.DROP_LABEL (
   policy_name     => 'hr_ols_pol',
   label_tag       => 1111);
END;
/

SA_POLICY_ADMINポリシー管理PL/SQLパッケージ

SA_POLICY_ADMIN PL/SQLパッケージは、Oracle Label Securityポリシー全体を管理します。

表E-23で、SA_POLICY_ADMIN PL/SQLパッケージ・プロシージャについて説明します

このパッケージを使用するには、SA_POLICY_ADMINパッケージに対するpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-23 SA_POLICY_ADMIN PL/SQLパッケージの内容

プロシージャ 説明

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY

ポリシーのデフォルトの強制オプションを変更します。

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

指定したポリシーをスキーマ内の既存の(まだポリシーが適用されていない)すべての表に適用し、各表に対するポリシーを有効化します。

SA_POLICY_ADMIN.APPLY_TABLE_POLICY

指定したポリシーを表に追加します。

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY

強制オプション、ラベル付けファンクションまたは述語の値を変更せずに、指定したスキーマ内のすべての表に対するポリシーの強制を無効化します。

SA_POLICY_ADMIN.DISABLE_TABLE_POLICY

強制オプション、ラベル付けファンクションまたは述語の値を変更せずに、指定した表のポリシーの強制を無効化します。

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY

RLS述語とDMLトリガーを再適用して、指定したスキーマ内の表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

SA_POLICY_ADMIN.ENABLE_TABLE_POLICY

RLS述語とDMLトリガーを再適用して、指定した表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

SA_POLICY_ADMIN.POLICY_SUBSCRIBE

Oracle Internet Directory構成の場合、APPLY_TABLE_POLICYおよびAPPLY_SCHEMA_POLICYで使用できるようにポリシーにサブスクライブします。

SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE

Oracle Internet Directoryの場合、APPLY_TABLE_POLICYおよびAPPLY_SCHEMA_POLICYで使用できるようにポリシーからサブスクライブ解除します。

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY

指定したポリシーをスキーマから削除します。

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY

指定したポリシーを表から削除します。

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICYプロシージャは、ポリシーのデフォルト強制オプションを変更します。

スキーマ内で新規に作成した表には、新規の施行オプションが自動的に適用されます。スキーマ内の既存の表は影響を受けません。

スキーマではなく表に対する施行オプションを変更するには、最初に表からポリシーを削除し、必要な変更を行ってから、ポリシーを再適用する必要があります。

スキーマに対する施行オプションを変更すると、変更結果は次回にそのスキーマに表を作成するときに有効になります。したがって、スキーマ内の表ごとに異なるポリシー施行オプションが有効になる場合があります。

構文

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY (
  policy_name         IN VARCHAR2,
  schema_name         IN VARCHAR2,
  default_options     IN VARCHAR2);

パラメータ

表E-24 SA_POLICY_ADMIN.ALTER_SCHEMAのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

表を含むスキーマです。このポリシーに関連付けられている既存のスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

default_options

スキーマ内の新規の表に使用するデフォルト・オプションです。各オプションはカンマで区切ります。

デフォルトの強制オプションのリストは、表8-2を参照してください。

次の例では、UPDATE_CONTROLデフォルト・オプションをHRスキーマに追加します。

BEGIN 
 SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY(
  policy_name      => 'hr_ols_pol',
  schema_name      => 'HR',
  default_options  => 'read_control, write_control, update_control');
END;
/

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYプロシージャは、スキーマ内のすべての表にポリシーを適用し、その表のポリシーを有効にします。

つまり、まだポリシーが適用されていない表に適用します。その後は、スキーマに新規の表が作成されるたびに、スキーマのデフォルト・オプションを使用して、その表に自動的にポリシーが適用されます。スキーマ内の既存の表で、すでにポリシーが適用されているものは変更されません。

構文

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY (
  policy_name        IN VARCHAR2,
  schema_name        IN VARCHAR2,
  default_options    IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-25 SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

保護する表を含むスキーマです。

default_options

スキーマ内の表に使用するデフォルト・オプションです。各オプションはカンマで区切ります。default_optionsパラメータがNULLの場合、ポリシーのデフォルト・オプションを使用してポリシーがスキーマ内の表に適用されます。

デフォルトの強制オプションのリストは、表8-2を参照してください。

次の例では、HRスキーマにREAD_CONTROLおよびWRITE_CONTROLオプションを適用します。

BEGIN 
 SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY(
  policy_name      => 'hr_ols_pol',
  schema_name      => 'HR',
  default_options  => 'read_control, write_control');
END;
/

SA_POLICY_ADMIN.APPLY_TABLE_POLICY

SA_POLICY_ADMIN.APPLY_TABLE_POLICYプロシージャは、指定したポリシーを表に追加します。

ポリシーのラベル列が存在しない場合は表に追加され、NULLに設定されます。ポリシーは、適用すると自動的に有効化されます。表のオプション、ラベル付けファンクションまたは述語を変更するには、最初にポリシーを削除してから再適用する必要があります。

構文

SA_POLICY_ADMIN.APPLY_TABLE_POLICY (
  policy_name       IN VARCHAR2,
  schema_name       IN VARCHAR2,
  table_name        IN VARCHAR2,
  table_options     IN VARCHAR2 DEFAULT NULL,
  label_function    IN VARCHAR2 DEFAULT NULL,
  predicate         IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-26 SA_POLICY_ADMIN.APPLY_TABLE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

ポリシーが保護する表を含むスキーマです。

table_name

ポリシーで保護される表です。

table_options

表に使用するポリシー施行オプションのカンマ区切りのリストです。NULLの場合は、ポリシーのデフォルト・オプションが使用されます。

デフォルトの強制オプションのリストは、表8-2を参照してください。

label_function

デフォルトとして使用するラベル値を戻すファンクションをコールする文字列です。たとえば、my_label(:new.dept,:new.status)を指定すると、行のDEPT列とSTATUS列の新規の値に基づいてラベルが計算されます。

predicate

READ_CONTROLのラベルベースの述語と(ANDまたはORを使用して)結合する追加の述語です。

次の文では、HRスキーマのEMPLOYEES表にhr_ols_polポリシーを適用します。

BEGIN
 SA_POLICY_ADMIN.APPLY_TABLE_POLICY(
  policy_name    => 'hr_ols_pol',
  schema_name    => 'HR',
  table_name     => 'EMPLOYEES',
  table_options  => NULL,
  label_function => 'hs(:new.dept,:new.status)',
  predicate      => 'no_control');
END;
/

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYプロシージャは、スキーマのすべての表でポリシーの強制を無効化します。

ただし、強制オプション、ラベル付けファンクションまたは述語の値は変更されません。

このプロシージャは、行レベルのセキュリティ述語とDMLトリガーを、スキーマ内のすべての表から削除します。

構文

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY (
  policy_name    IN VARCHAR2,
  schema_name    IN VARCHAR2);

パラメータ

表E-27 SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

このポリシーの表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

次の例では、HRスキーマのhr_ols_polポリシーを無効化します。

BEGIN
 SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY(
  policy_name      => 'hr_ols_pol',
  schema_name      => 'HR');
END;
/

SA_POLICY_ADMIN.DISABLE_TABLE_POLICY

SA_POLICY_ADMIN.DISABLE_TABLE_POLICYプロシージャは、強制オプション、ラベル付けファンクションまたは述語の値を変更せずに、表のポリシーの強制を無効化します。

このプロシージャは、行レベルのセキュリティ述語とDMLトリガーを、表から削除します。

構文

SA_POLICY_ADMIN.DISABLE_TABLE_POLICY (
  policy_name      IN VARCHAR2,
  schema_name      IN VARCHAR2,
  table_name       IN VARCHAR2);

パラメータ

表E-28 SA_POLICY_ADMIN.DISABLE_TABLE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

table_name

schema_nameで指定されたスキーマ内の表です。この表を検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMESCHEMA_NAMEおよびTABLE_NAME列を問い合せます。

次の文では、HRスキーマのEMPLOYEES表でのhr_ols_posポリシーを無効化します。

BEGIN
 SA_POLICY_ADMIN.DISABLE_TABLE_POLICY(
  policy_name   => 'hr_ols_pol',
  schema_name   => 'HR',
  table_name    => 'EMPLOYEES');
END;
/

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYプロシージャは、指定したスキーマ内の表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

これを行うには、行レベルのセキュリティ述語とDMLトリガーを再適用します。結果は1つの表に対するポリシーを有効化しているように見えますが、スキーマ内のすべての表が対象となります。

構文

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY (
  policy_name    IN VARCHAR2,
  schema_name    IN VARCHAR2);

パラメータ

表E-29 SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーおよびそのステータスを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列を問い合せます。

schema_name

表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

次の例では、HRスキーマのhr_ols_polポリシーを有効化します。

BEGIN
 SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY(
  policy_name      => 'hr_ols_pol',
  schema_name      => 'HR');
END;
/

SA_POLICY_ADMIN.ENABLE_TABLE_POLICY

SA_POLICY_ADMIN.ENABLE_TABLE_POLICYプロシージャは、指定した表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

これを行うには、行レベルのセキュリティ述語とDMLトリガーを再適用します。

構文

SA_POLICY_ADMIN.ENABLE_TABLE_POLICY (
  policy_name     IN VARCHAR2,
  schema_name     IN VARCHAR2,
  table_name      IN VARCHAR2);

パラメータ

表E-30 SA_POLICY_ADMIN.ENABLE_TABLE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列です。

schema_name

表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

table_name

schema_nameで指定されたスキーマ内の表です。この表を検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMESCHEMA_NAMEおよびTABLE_NAME列を問い合せます。

次の文では、HRスキーマのEMPLOYEES表でのhr_ols_polポリシーを再有効化します。

BEGIN 
 SA_POLICY_ADMIN.ENABLE_TABLE_POLICY(
  policy_name   => 'hr_ols_pol',
  schema_name   => 'HR',
  table_name    => 'EMPLOYEES');
END;
/

SA_POLICY_ADMIN.POLICY_SUBSCRIBE

Oracle Internet Directory対応Oracle Label Security構成では、SA_POLICY_ADMIN.POLICY_SUBSCRIBEプロシージャは、SA_POLICY_ADMIN.APPLY_TABLE_POLICYおよびSA_POLICY_ADMIN.APPLY_SCHEMA_POLICYで使用できるようにポリシーにサブスクライブします。

ポリシーに対してこのプロシージャをコールしてから、そのポリシーを表またはスキーマに適用する必要があります。サブスクライブは1回のみで、表またはスキーマ内でポリシーを使用するたびにサブスクライブする必要はありません。

サブスクライブされたポリシーは、適用先の表またはスキーマからそのポリシーを削除してからサブスクライブ解除しないかぎり、削除することはできません。

構文

SA_POLICY.POLICY_SUBSCRIBE(
  policy_name     IN VARCHAR2);

パラメータ

表E-31 SA_POLICY_ADMIN.POLICY_SUBSCRIBEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

注意:

このプロシージャをポリシーの使用前に使用する必要があるのは、Oracle Internet Directory対応Oracle Label Security構成の場合のみです。スタンドアロンOracle Label Securityの場合は、APPLY_TABLE_POLICYおよびAPPLY_SCHEMA_POLICYでポリシーを直接使用でき、サブスクライブは不要です。

次の文では、表およびスキーマに適用して使用できるように、データベースをhr_ols_polポリシーにサブスクライブします。

BEGIN
 SA_POLICY_ADMIN.POLICY_SUBSCRIBE(
  policy_name   => 'hr_ols_pol');
END;
/

SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE

Oracle Internet Directory対応Oracle Label Security構成では、SA_POLICY_ADMIN.POLICY_UNSUBSCRIBEプロシージャはポリシーにサブスクライブ解除します。

このプロシージャを使用できるのは、ポリシーが使用されていない場合、つまり、表またはスキーマに適用されていない場合のみです。(表またはスキーマに適用されている場合は、すべての表またはスキーマから削除してから、サブスクライブ解除する必要があります。)Oracle Internet Directoryでポリシーを削除できるのは、そのOracle Internet Directoryに登録したデータベースでサブスクライブされていない場合のみです。(詳細は、「olsadmintool dropprofile」を参照してください。)

サブスクライブされたポリシーは、適用先の表またはスキーマからそのポリシーを削除してからサブスクライブ解除しないかぎり、削除することはできません。

構文

SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE(
  policy_name  IN VARCHAR2);

パラメータ

表E-32 SA_POLICY_ADMIN.POLICY_UNSUBSCRIBEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の文では、hr_ols_polポリシーにデータベースをサブスクライブ解除します。

BEGIN
 SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE(
  policy_name   => 'hr_ols_pol');
END;
/

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICYプロシージャは、指定したポリシーをスキーマから削除します。

ポリシーはスキーマ内のすべての表から削除され、オプションでポリシーのラベル列がすべての表から削除されます。

構文

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY (
  policy_name     IN VARCHAR2,
  schema_name     IN VARCHAR2,
  drop_column     IN BOOLEAN DEFAULT FALSE);

パラメータ

表E-33 SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

このポリシーに関連付けられている表を含むスキーマです。このスキーマを検索するには、ALL_SA_SCHEMA_POLICIESビューのSCHEMA_NAMEを問い合せます。

drop_column

TRUEの場合、ポリシーの列が表から削除され、それ以外の場合、列は削除されません。

次の例では、HRスキーマからhuman_resourceポリシーの列を削除します。

BEGIN
 SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY(
  policy_name      => 'hr_ols_pol',
  schema_name      => 'HR',
  drop_column      => TRUE);
END;
/

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY

SA_POLICY_ADMIN.REMOVE_TABLE_POLICYプロシージャは、指定したポリシーを表から削除します。

ポリシーの述語とDMLトリガーが表から削除され、ポリシーのラベル列をオプションで削除できます。ポリシーは、それにより保護されているスキーマに属する表から削除できます。

構文

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY (
policy_name        IN VARCHAR2,
schema_name        IN VARCHAR2,
table_name         IN VARCHAR2,
drop_column        IN BOOLEAN DEFAULT FALSE);

パラメータ

表E-34 SA_POLICY_ADMIN.REMOVE_TABLE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

このポリシーに関連付けられている表を含むスキーマです。このスキーマを検索するには、ALL_SA_SCHEMA_POLICIESビューのSCHEMA_NAMEを問い合せます。

table_name

schema_nameで指定されたスキーマ内の表です。この表を検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMESCHEMA_NAMEおよびTABLE_NAME列を問い合せます。

drop_column

列を削除するかどうかを指定します。TRUEの場合はポリシーの列が表から削除され、それ以外の場合は削除されません。

次の文では、HRスキーマのEMPLOYEES表からhr_ols_polポリシーを削除します。

BEGIN
 SA_POLICY_ADMIN.REMOVE_TABLE_POLICY(
  policy_name    => 'hr_ols_pol',
  schema_name    => 'HR',
  table_name     => 'EMPLOYEES',
  drop_column    => TRUE);
END;
/

SA_SESSIONセッション管理PL/SQLパッケージ

SA_SESSION PL/SQLパッケージは、ユーザー認証のセッション動作を管理します。

ユーザーは、管理者により設定された認可の範囲内で、セッション中にラベルを変更できます。

このパッケージを使用するために特別な権限は必要ありません。

表E-35に、SA_SESSION PL/SQLパッケージ・プロシージャおよびファンクションを示します。

表E-35 SA_SESSSION PL/SQLパッケージの内容

ファンクション 説明

SA_SESSION.COMP_READ

ユーザーが読取りを認可されている区分のカンマ区切りのリストを戻します。

SA_SESSION.COMP_WRITE

ユーザーが書込みを認可されている区分のカンマ区切りのリストを戻します。

SA_SESSION.GROUP_READ

ユーザーが読取りを認可されているグループのカンマ区切りのリストを戻します。

SA_SESSION.GROUP_WRITE

ユーザーが書込みを認可されているグループのカンマ区切りのリストを戻します。

SA_SESSION.LABEL

指定したOracle Label Securityポリシーに関連付けられているラベルを戻します。

SA_SESSION.MAX_LEVEL

セッションについて認可されたOracle Label Securityの最大レベルを戻します。

SA_SESSION.MAX_READ_LABEL

ユーザーが認可される最大読取りラベルの初期化に使用されたラベル文字列を戻します。

SA_SESSION.MAX_WRITE_LABEL

ユーザーが認可される最小書込みラベルの初期化に使用されたラベル文字列を戻します。

SA_SESSION.MIN_LEVEL

セッションについて認可された最小レベルを戻します。

SA_SESSION.MIN_WRITE_LABEL

ラベルに対する最小書込み権限を戻します。

SA_SESSION.PRIVS

現行セッションの権限セットをカンマ区切りのリスト形式で戻します。

SA_SESSION.RESTORE_DEFAULT_LABELS

現行のセッション・ラベルと行ラベルを、格納されているデフォルト設定にリセットします。

SA_SESSION.ROW_LABEL

現行セッションのポリシーに関連付けられている行ラベルの名前を戻します。

SA_SESSION.SA_USER_NAME

現行のOracle Label Securityセッションに関連付けられているユーザー名を戻します。

SA_SESSION.SAVE_DEFAULT_LABELS

ユーザーは、現行のセッション・ラベルと行ラベルを将来のセッションのデフォルトとして格納できます。

SA_SESSION.SET_ACCESS_PROFILE

データベース・セッションのOracle Label Securityでの認可と権限を、指定したユーザーの認証と権限に設定します。

SA_SESSION.SET_LABEL

読取りアクセス権を持つ新規レベル、新規区分およびグループを設定します。

SA_SESSION.SET_ROW_LABEL

新規の行に適用するデフォルトの行ラベルを設定します

関連項目:

数値ラベル・タグおよびブール値を戻す追加のファンクションは、「SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ」を参照してください

SA_SESSION.COMP_READ

SA_SESSION.COMP_READファンクションは、ユーザーが読取りを認可されている区分のカンマ区切りのリストを戻します。

構文

SA_SESSION.COMP_READ ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-36 SA_SESSION.COMP_READのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、ユーザーがhr_ols_polポリシーに対して読取りが可能な区分を戻します。

SELECT SA_SESSION.COMP_READ ('hr_ols_pol') FROM DUAL; 

SA_SESSION.COMP_WRITE

SA_SESSION.COMP_WRITEファンクションは、ユーザーが書込みを認可されている区分のカンマ区切りのリストを戻します。

このファンクションは、SA_SESSION.COMP_READのサブセットです。

構文

SA_SESSION.COMP_WRITE ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-37 SA_SESSION.COMP_WRITEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、ユーザーがhr_ols_polポリシーに対して変更が可能な区分を戻します。

SELECT SA_SESSION.COMP_WRITE ('hr_ols_pol') FROM DUAL;

SA_SESSION.GROUP_READ

SA_SESSION.GROUP_READファンクションは、ユーザーが読取りを認可されているグループのカンマ区切りのリストを戻します。

構文

SA_SESSION.GROUP_READ ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-38 SA_SESSION.GROUP_READのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、ユーザーがhr_ols_polポリシーに対して読取りが可能なグループのリストを戻します。

SELECT SA_SESSION.GROUP_READ ('hr_ols_pol') FROM DUAL;

SA_SESSION.GROUP_WRITE

SA_SESSION.GROUP_WRITEファンクションは、ユーザーが書込みを認可されているグループのカンマ区切りのリストを戻します。

このファンクションは、SA_SESSION.GROUP_READのサブセットです。

構文

SA_SESSION.GROUP_WRITE ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-39 SA_SESSION.GROUP_WRITEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、ユーザーがhr_ols_polポリシーに対する変更を認可されているグループを戻します。

SELECT SA_SESSION.GROUP_WRITE ('hr_ols_pol') FROM DUAL;

SA_SESSION.LABEL

SA_SESSION.LABELファンクションは、現行セッションの指定したポリシーに関連付けられているラベルを戻します。

構文

SA_SESSION.LABEL ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-40 SA_SESSION.LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに関連付けられているラベルを戻します。

SELECT SA_SESSION.LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MAX_LEVEL

SA_SESSION.MAX_LEVELファンクションは、セッションが認可されているOracle Label Securityの最大レベルを戻します。

構文

SA_SESSION.MAX_LEVEL ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-41 SA_SESSION.MAX_LEVELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーが認可されているOracle Label Securityの最大レベルを戻します。

SELECT SA_SESSION.MAX_LEVEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MAX_READ_LABEL

SA_SESSION.MAX_READ_LABELファンクションは、ユーザーが認可される最大読取りラベルの初期化に使用されたラベル文字列を戻します。

戻り文字列は、ユーザーの最大レベル、読取りアクセスが認可される区分、および読取りアクセスが認可されるグループで構成されます。

構文

SA_SESSION.MAX_READ_LABEL ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-42 SA_SESSION.MAX_READ_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに対する最大読取りラベル権限を戻します。

SELECT SA_SESSION.MAX_READ_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MAX_WRITE_LABEL

SA_SESSION.MAX_WRITE_LABELファンクションは、ユーザーが認可される最大書込みラベルの初期化に使用されたラベル文字列を戻します。

この戻り文字列は、ユーザーの最大レベル、書込みアクセスが認可される区分、および書込みアクセスが認可されるグループで構成されます。

構文

SA_SESSION.MAX_WRITE_LABEL ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-43 SA_SESSION.MAX_WRITE_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに対する最大書込みラベル権限を戻します。

SELECT SA_SESSION.MAX_WRITE_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MIN_LEVEL

SA_SESSION.MIN_LEVELファンクションは、セッションが認可されているOracle Label Securityの最小レベルを戻します。

構文

SA_SESSION.MIN_LEVEL ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-44 SA_SESSION.MIN_LEVELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーの現行の最小レベルを戻します。

SELECT SA_SESSION.MIN_LEVEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MIN_WRITE_LABEL

SA_SESSION.MIN_WRITE_LABELファンクションは、ユーザーが認可される最小書込みラベルの初期化に使用されたラベル文字列を取得します。

戻り文字列にはレベルのみが含まれ、区分やグループは含まれません。

構文

SA_SESSION.MIN_WRITE_LABEL ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-45 SA_SESSION.MIN_WRITE_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに対する最大書込みラベル権限を戻します。

SELECT SA_SESSION.MIN_WRITE_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.PRIVS

SA_SESSION.PRIVSファンクションは、現行セッションの権限セットをカンマ区切りのリスト形式で戻します。

構文

SA_SESSION.PRIVS ( 
  policy_name IN VARCHAR2) 
RETURN VARCHAR2;

パラメータ

表E-46 SA_SESSION.Privsのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに対する現行セッションの権限を戻します。

SELECT SA_SESSION.PRIVS ('hr_ols_pol') FROM DUAL;

SA_SESSION.RESTORE_DEFAULT_LABELS

SA_SESSION.RESTORE_DEFAULT_LABELSプロシージャは、セッション・ラベルと行ラベルを、データ・ディクショナリに格納されているそれらのラベルでリストアします。

このコマンドが役立つのは、SA_SESSION.SET_LABELコマンドが処理された後に値をリセットする場合です。

構文

SA_SESSION.RESTORE_DEFAULT_LABELS (
 policy_name in VARCHAR2); 

パラメータ

表E-47 SA_SESSION.RESTORE_DEFAULT_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーのデフォルト・ラベルをリストアします。

BEGIN
 SA_SESSION.RESTORE_DEFAULT_LABELS (
  policy_name         => 'hr_ols_pol');
END;
/

SA_SESSION.ROW_LABEL

SA_SESSION.ROW_LABELファンクションは、現行セッションのポリシーに関連付けられている行ラベルの名前を戻します。

構文

SA_SESSION.ROW_LABEL ( 
  policy_name IN VARCHAR2)
RETURN VARCHAR2; 

パラメータ

表E-48 SA_SESSION.ROW_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに関連付けられている行ラベルを戻します。

SELECT SA_SESSION.ROW_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.SET_LABEL

SA_SESSION.SET_LABELプロシージャは、現行データベース・セッションのラベルを設定します。

セッション・ラベルは次のように設定できます。

  • 最大レベル以下で、かつ最小レベル以上のレベルに設定する。

  • 認可された区分リストにある区分を含むように設定する。

  • 認可されたグループ・リストにあるグループを含むように設定する。(認可グループのサブグループは、認可リストに暗黙的に含まれます。)

セッション・ラベルを変更すると、そのセッションの行ラベルの値に影響する場合があることに注意してください。セッションの行ラベルには、ユーザーが書込みアクセス権を持っている区分とグループのサブセットが含まれています。これは、セッション・ラベルと等価の場合と、等価でない場合があります。たとえば、SA_SESSION.SET_LABELプロシージャを使用して現行セッション・ラベルをC:A,B:USに設定した場合に、A区分に対する書込みアクセス権しか持っていなければ、行ラベルはC:Aに設定されます。

構文

SA_SESSION.SET_LABEL (
 policy_name IN VARCHAR2,
 label       IN VARCHAR2); 

パラメータ

表E-49 SA_SESSION.SET_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

ラベルとして設定する値

次の例では、hr_ols_polポリシーのラベルを設定します。

BEGIN
 SA_SESSION.SET_LABEL (
  policy_name         => 'hr_ols_pol',
  label               => 'C:A,B:US');
END;
/

SA_SESSION.SA_USER_NAME

SA_SESSION.SA_USER_NAMEファンクションは、SA_SESSION.SET_ACCESS_PROFILEプロシージャで設定された(またはログイン時に設定された)現行のOracle Label Securityユーザーの名前を戻します。

これにより、現行ユーザーの識別情報をOracleログイン名ではなくOracle Label Securityに関連付けて判断できます。

構文

SA_SESSION.SA_USER_NAME ( 
  policy_name IN VARCHAR2)
RETURN VARCHAR2; 

パラメータ

表E-50 SA_SESSION.SA_USER_NAMEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーのOracle Label Securityユーザーの名前を検索します。

SELECT SA_SESSION.SA_USER_NAME ('hr_ols_pol') FROM DUAL;

SA_SESSION.SAVE_DEFAULT_LABELS

SA_SESSION.SAVE_DEFAULT_LABELSプロシージャは、現行のセッション・ラベルと行ラベルを、初期セッション・ラベルおよびデフォルトの行ラベルとして格納します。

このプロシージャは、現行のセッション・ラベルと行ラベルを反映するようにデフォルトを変更できます。保存されたラベルは、将来のセッションの初期デフォルト設定として使用されます。

データベースへのログイン時には、デフォルトのセッション・ラベルと行ラベルを使用して、セッション・ラベルと行ラベルが初期化されます。管理者は最初にユーザーのOracle Label Securityのラベルを認可するときに、ユーザーのデフォルト・レベル、デフォルト区分およびデフォルト・グループも定義しています。セッション・ラベルと行ラベルを変更し、その値をデフォルト・ラベルとして保存する場合は、SA_SESSION.SAVE_DEFAULT_LABELSプロシージャを使用できます。

このプロシージャが役立つのは、複数のセッションがあり、すべての追加セッションに同じラベルが使用されるようにする必要がある場合です。現行ラベルをデフォルトとして保存し、将来のすべてのセッションに初期ラベルとして使用できます。

Oracle Formsを通じてデータベースに接続し、レポートを実行する必要がある場合を考えます。Oracle Reportsをコールする前に現行セッション・ラベルをデフォルトとして保存すると、Oracle ReportsではOracle Formsで使用中のものと確実に同じラベルで初期化されます。

構文

SA_SESSION.SAVE_DEFAULT_LABELS ( 
  policy_name IN VARCHAR2); 

パラメータ

表E-51 SA_SESSION.SAVE_DEFAULT_LABELSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーのラベルのデフォルトを保存します。

BEGIN
 SA_SESSION.SAVE_DEFAULT_LABELS (
  policy_name       => 'hr_ols_pol');
END;
/

注意:

SA_SESSION.SAVE_DEFAULT_LABELSプロシージャは、管理者が確立した設定をオーバーライドします。

SA_SESSION.SET_ACCESS_PROFILE

SA_SESSION.SET_ACCESS_PROFILEプロシージャは、データベース・セッションのOracle Label Securityでの認可と権限を、指定したユーザーの認証と権限に設定します。

元のユーザーは引き続きPROFILE_ACCESS権限を持つことに注意してください。

SA_SESSION.SET_ACCESS_PROFILEプロシージャを実行するユーザーは、PROFILE_ACCESS権限を持つ必要があります。ログインしたデータベース・ユーザー(OracleユーザーID)は変わりません。そのユーザーには、指定のユーザーの認証と権限のみが想定されます。これに対して、Oracle Label Securityのユーザー名は変更されます

この管理プロシージャは、次のように様々なタスクに役立ちます。

  • SA_SESSION.SET_ACCESS_PROFILEを使用すると、特定ユーザーの認証と権限の設定結果を確認できます。

  • アプリケーションがラベル付きデータにアクセスするには、プロキシ・アカウントをアプリケーション・ユーザーとして接続(その識別情報を想定)させる必要があります。プロキシ・アカウントは、SA_SESSION.SET_ACCESS_PROFILE権限を使用して、アプリケーション・ユーザーのかわりに操作できます。

構文

SA_SESSION.SET_ACCESS_PROFILE (
  policy_name IN VARCHAR2
  user_name   IN VARCHAR2); 

パラメータ

表E-52 SA_SESSION.SET_ACCESS_PROFILEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

認可および権限を想定する必要があるユーザーの名前(通常、このポリシーに関連付けられてたユーザー)。このユーザーを検索するには、DBA_SA_USERSビューのUSER_NAMEおよびPOLICY_NAME列を問い合せます。

次の例では、ユーザーpsmithは、データベース・セッションに対するOracle Label Securityの認可と権限を持つことができるようになります。

BEGIN
 SA_SESSION.SET_ACCESS_PROFILE (
  policy_name       => 'hr_ols_pol',
  user_name         => 'jjones');
END;
/

SA_SESSION.SET_ROW_LABEL

SA_SESSION.SET_ROW_LABELプロシージャは、現行データベース・セッションのデフォルトの行ラベル値を設定します。

ラベルの区分とグループは、ユーザーが書込みアクセス権を持つセッション・ラベルの区分およびグループのサブセットであることが必要です。LABEL_DEFAULTオプションが設定されている場合は、ユーザーがラベルを明示的に指定しなければ、この行ラベル値が挿入時に使用されます。

SA_SESSION.SET_ROW_LABELプロシージャを使用してデフォルトの行ラベル値を設定しない場合、この値はセッション・ラベルから自動的に導出されます。これには、セッション・ラベルのレベルと、ユーザーが書込みアクセス認可を持つセッション・ラベルの区分とグループのサブセットが含まれています。

セッション・ラベルに変更があると、行ラベルは自動的にリセットされます。たとえば、セッション・レベルをHIGHLY_SENSITIVEからSENSITIVEに変更すると、行ラベルのレベル・コンポーネントは自動的にSENSITIVEに変更されます。

ユーザーは、独自に行ラベルを設定できますが、含めることができるのは次の要素のみです。

  • セッション・ラベルのレベル以下で、かつ、ユーザーの最小レベル以上のレベル。

  • ユーザーが書込みアクセス権を持つように認可されているセッション・ラベルからの、区分とグループのサブセット。

ユーザーが行ラベルに無効な値の設定を試みると、操作は許可されず、その行ラベル値は変更されません。

構文

SA_SESSION.SET_ROW_LABEL (
 policy_name   IN VARCHAR2,
 row_label     IN VARCHAR2); 

パラメータ

表E-53 SA_SESSION.SET_ROW_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

デフォルトの行ラベルとして設定する値

次の例では、hr_ols_polポリシーの行ラベルを設定します。

BEGIN
 SA_SESSION.SET_ROW_LABEL (
  policy_name     => 'hr_ols_pol',
  label           => 'HR');
END;
/

SA_SYSDBAポリシー管理PL/SQLパッケージ

SA_SYSDBA PL/SQLパッケージは、Oracle Label Securityポリシー(作成、変更または無効化など)を管理します。

表E-54に、SA_SYSDBAパッケージのプロシージャを示します。

このパッケージを使用するには、SA_SYSDBAパッケージでのLBAC_DBAロールおよびEXECUTE権限が付与されている必要があります。SA_SYSDBAパッケージは実行者の権限パッケージであるため、このパッケージを使用する前に、次のINHERIT PRIVILEGES権限をユーザーSYSに付与する必要があります。

GRANT INHERIT PRIVILEGES ON USER SYS TO LBACSYS;

この権限はユーザーSYSにのみ付与する必要があります。他のユーザーに付与する必要はありません。

表E-54 SA_SYSDBA PL/SQLパッケージの内容

プロシージャ 説明

SA_SYSDBA.ALTER_POLICY

Oracle Label Securityポリシーを変更します。

SA_SYSDBA.CREATE_POLICY

Oracle Label Securityポリシーを作成します。

SA_SYSDBA.DISABLE_POLICY

Oracle Label Securityポリシーを無効化します。

SA_SYSDBA.DROP_POLICY

Oracle Label Securityポリシーを削除します。

SA_SYSDBA.ENABLE_POLICY

Oracle Label Securityポリシーを有効化します。

SA_SYSDBA.ALTER_POLICY

SA_SYSDBA.ALTER_POLICYプロシージャは、ポリシーに関連付けられている列名を設定および変更します。

SA_SYSDBA.ALTER_POLICYは、どのユーザー表またはスキーマにも適用されていないポリシーの列名を変更するためにのみ使用できます。それ以外の場合は、このエラーが表示されます。

12474, 00000, "cannot change column name for a policy in use"

構文

SA_SYSDBA.ALTER_POLICY (
   policy_name       IN  VARCHAR2,
   default_options   IN  VARCHAR2 DEFAULT NULL,
   column_name       IN  VARCHAR2 DEFAULT NULL);

パラメータ

表E-55 SA_SYSDBA.ALTER_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

default_options

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

デフォルトの強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

column_name

ポリシーに関連付けられている列名を指定します。この列名を検索するには、ALL_SA_POLICIESビューのCOLUMN_NAME列を問い合せます。

次の例では、異なるデフォルト・オプションのセットを使用するようにhr_ols_polポリシーを更新します。列の名前は変更する必要がないため、column_nameパラメータは省略されます。

BEGIN
 SA_SYSDBA.ALTER_POLICY ( 
  policy_name      => 'hr_ols_pol',
  default_options  => 'read_control, delete_control');
END;
/

SA_SYSDBA.CREATE_POLICY

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

ポリシーを作成すると、そのロールが作成され、ユーザーに付与されます。ロール名の形式は、policy_DBAです(たとえば、my_ols_pol_DBA)。

構文

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

パラメータ

表E-56 SA_SYSDBA.CREATE_POLICYのパラメータ

パラメータ 説明

policy_name

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

既存のポリシーのリストを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

column_name

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

default_options

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

デフォルトの強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

次の例では、デフォルト・オプションがREAD_CONTROLおよびWRITE_CONTROLのポリシー・コンテナを作成します。WRITE_CONTROLオプションは、INSERT_CONTROLUPDATE_CONTROLおよびDELETE_CONTROLオプションを囲みます。

BEGIN
 SA_SYSDBA.CREATE_POLICY ( 
  policy_name      => 'hr_ols_pol',
  column_name      => 'ols_col',
  default_options  => 'read_control, write_control');
END;
/

関連項目:

SA_SYSDBA.DISABLE_POLICY

SA_SYSDBA.DISABLE_POLICYプロシージャは、データベースから削除せずにポリシーの強制をオフにします。

それ以降のデータベースへのすべてのアクセスには、ポリシーは施行されません。

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

注意:

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

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

構文

SA_SYSDBA.DISABLE_POLICY (
 policy_name IN VARCHAR2);

パラメータ

表E-57 SA_SYSDBA.DISABLE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーおよびそのステータスを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列を問い合せます。

次の例では、hr_ols_polポリシーを無効化します。

EXEC SA_SYSDBA.DISABLE_POLICY ('hr_ols_pol');

SA_SYSDBA.DROP_POLICY

SA_SYSDBA.DROP_POLICYプロシージャは、ポリシーおよび関連付けられているユーザー・ラベルとデータ・ラベルをデータベースから削除します。

このプロシージャは、そのポリシーおよびこれらの関連付けを、システム全体からパージします。オプションで、そのポリシーにより制御されているすべての表からラベル列を削除することもできます。ポリシーは、削除する前に無効化する必要はありません。

構文

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

パラメータ

表E-58 SA_SYSDBA.DROP_POLICYのパラメータ

パラメータ 説明

policy_name

削除するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

drop_column

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

次の例では、hr_ols_polポリシーを削除します。

EXEC SA_SYSDBA.DROP_POLICY ('hr_ols_pol');

SA_SYSDBA.ENABLE_POLICY

SA_SYSDBA.ENABLE_POLICYプロシージャは、ポリシーで保護されている表およびスキーマにアクセス制御を強制します。

ポリシーは、作成時に自動的に有効化されます。作成または有効化した後は、ポリシーで保護されている表に対する以降のすべてのアクセスに対して、そのポリシーが強制されます。

構文

SA_SYSDBA.ENABLE_POLICY (policy_name IN VARCHAR2);

パラメータ

表E-59 SA_SYSDBA.ENABLE_POLICYのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーおよびそのステータスを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列を問い合せます。

次の例では、hr_ols_polポリシーを有効化します。

EXEC SA_SYSDBA.ENABLE_POLICY('hr_ols_pol');

SA_USER_ADMIN PL/SQLパッケージ

SA_USER_ADMIN PL/SQLパッケージは、ユーザー・ラベルをラベル・コンポーネント別に管理します。

表E-60に、SA_USER_ADMIN PL/SQLパッケージ・プロシージャを示します。

このパッケージを使用するには、SA_USER_ADMINパッケージでのpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-60 SA_USER_ADMIN PL/SQLパッケージの内容

プロシージャまたはファンクション 説明

SA_USER_ADMIN.ADD_COMPARTMENTS

ユーザーの認証に区分を追加し、その区分が読取りとともに書込みについても認可されるかどうかを指定します。

SA_USER_ADMIN.ADD_GROUPS

ユーザーにグループを追加し、そのグループが読取りとともに書込みについても認可されるかどうかを指定します。

SA_USER_ADMIN.ALTER_COMPARTMENTS

リストにある各区分について、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

SA_USER_ADMIN.ALTER_GROUPS

リストにある各グループについて、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS

すべての区分をユーザーの認証から削除します。

SA_USER_ADMIN.DROP_ALL_GROUPS

すべてのグループをユーザーの認証から削除します。

SA_USER_ADMIN.DROP_COMPARTMENTS

指定した区分をユーザーの認証から削除します。

SA_USER_ADMIN.DROP_GROUPS

指定したグループをユーザーの認証から削除します。

SA_USER_ADMIN.DROP_USER_ACCESS

指定したユーザーからOracle Label Securityのすべての認可と権限を削除します。

SA_USER_ADMIN.SET_COMPARTMENTS

ユーザーに区分を割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

SA_USER_ADMIN.SET_DEFAULT_LABEL

ユーザーの初期セッション・ラベルを指定のラベルに設定します。

SA_USER_ADMIN.SET_GROUPS

ユーザーにグループを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

SA_USER_ADMIN.SET_LEVELS

ユーザーに最小レベルと最大レベルを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

SA_USER_ADMIN.SET_PROG_PRIVS

プログラム・ユニットに対するポリシー固有の権限を設定します。

SA_USER_ADMIN.SET_ROW_LABEL

ユーザーの初期の行ラベルを指定のラベルに設定します。

SA_USER_ADMIN.SET_USER_LABELS

個々のコンポーネントではなくラベル・セットを使用して、ユーザーのレベル、区分およびグループを設定します。

SA_USER_ADMIN.SET_USER_PRIVS

ユーザーに対するポリシー固有の権限を設定します。

SA_USER_ADMIN.ADD_COMPARTMENTS

SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャは、ユーザーの認証に区分を追加し(割り当てて)、その区分が書込みおよび読取り権限について認可されるかどうかを指定します。

このプロシージャが役立つのは、SA_USER_ADMIN.SET_COMPARTMENTSプロシージャをユーザーに対してすでに使用しているが、その後に、追加の区分に対してこのユーザー認証を付与するか、または現行の区分のセットを更新することを決定した場合です。これを、SA_USER_ADMIN.SET_COMPARTMENTSのかわりに使用することもできます。

構文

SA_USER_ADMIN.ADD_COMPARTMENTS ( 
policy_name    IN VARCHAR2,
user_name      IN VARCHAR2,
comps          IN VARCHAR2,
access_mode    IN VARCHAR2 DEFAULT NULL,
in_def         IN VARCHAR2 DEFAULT NULL,
in_row         IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-61 SA_USER_ADMIN.ADD_COMPARTMENTSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このユーザーは、新規ユーザー、またはこのポリシーの区分がすでに認可されたユーザーのいずれかです。既存のユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

comps

短縮名のみによる、追加する区分のカンマ区切りのリストです。既存の区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数の一方です。変数名、値および意味は次のとおりです。

  • SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

  • SA_UTL.READ_WRITEは、書込みが認可されることを示します。

  • access_modeNULLの場合は、SA_UTL.READ_ONLYに設定されます。

in_def

指定した区分がデフォルト区分内にあることが必要かどうか(Y/N)を指定します。

in_defNULLの場合は、Yに設定されます。

in_row

指定した区分が行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowNULLの場合は、Nに設定されます。

次の例では、hr_ols_polポリシーに区分を追加します。

BEGIN 
 SA_USER_ADMIN.ADD_COMPARTMENTS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones',
  comps          => 'FIN',
  access_mode    => SA_UTL.READ_ONLY,
  in_def         => 'y',
  in_row         => 'y');
END;
/

SA_USER_ADMIN.ADD_GROUPS

SA_USER_ADMIN.ADD_GROUPSプロシージャは、ユーザーにグループを追加し(割り当てて)、そのグループが書込みおよび読取り権限について認可されるかどうかを指定します。

このプロシージャが役立つのは、SA_USER_ADMIN.SET_GROUPSプロシージャをユーザーに対してすでに使用しているが、その後に、追加のグループに対してこのユーザー認証を付与するか、または現行のグループのセットを更新することを決定した場合です。これを、SA_USER_ADMIN.SET_GROUPSのかわりに使用することもできます。

構文

SA_USER_ADMIN.ADD_GROUPS ( 
  policy_name       IN VARCHAR2,
  user_name         IN VARCHAR2,
  groups            IN VARCHAR2,
  access_mode       IN VARCHAR2 DEFAULT NULL,
  in_def            IN VARCHAR2 DEFAULT NULL,
  in_row            IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-62 SA_USER_ADMIN.ADD_GROUPSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザーを指定します。このユーザーは、新規ユーザー、またはこのポリシーのグループがすでに認可されたユーザーのいずれかです。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAME列を問い合せます。

groups

短縮名のみによる、追加するグループのカンマ区切りのリストです。既存のグループのリストを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数の一方です。変数名、値および意味は次のとおりです。

  • SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

  • SA_UTL.READ_WRITEは、書込みが認可されることを示します。

  • access_modeNULLの場合、access_modeSA_UTL.READ_ONLYに設定されます。

in_def

指定したグループがデフォルト・グループ内にあることが必要かどうか(Y/N)を指定します。

in_defNULLの場合は、Yに設定されます。

in_row

指定したグループが行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowNULLの場合は、Nに設定されます。

次の例では、hr_ols_polポリシーに複数のグループを追加します。

BEGIN 
 SA_USER_ADMIN.ADD_GROUPS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones',
  groups         => 'ER_FIN, SR_FIN, NR_FIN, WR_FIN',
  access_mode    => SA_UTL.READ_WRITE,
  in_def         => 'y',
  in_row         => 'y');
END;
/

SA_USER_ADMIN.ALTER_COMPARTMENTS

SA_USER_ADMIN.ALTER_COMPARTMENTSプロシージャは、指定された区分について、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

構文

SA_USER_ADMIN.ALTER_COMPARTMENTS (
  policy_name  IN VARCHAR2,
  user_name    IN VARCHAR2,
  comps        IN VARCHAR2,
  access_mode  IN VARCHAR2 DEFAULT NULL,
  in_def       IN VARCHAR2 DEFAULT NULL,
  in_row       IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-63 SA_USER_ADMIN.ALTER_COMPARTMENTSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分について認可されているユーザーを指定します。認可されたユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

comps

短縮名のみを使用した、変更する区分のカンマ区切りのリストです。既存の区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数の一方です。変数名、値および意味は次のとおりです。

SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

SA_UTL.READ_WRITEは、書込みが認可されることを示します。

access_modeNULLの場合、区分のaccess_modeは変更されません。

in_def

指定した区分がデフォルト区分内にあることが必要かどうか(Y/N)を指定します。

in_defNULLの場合、区分のin_defは変更されません。

in_row

指定した区分が行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowNULLの場合、区分のin_rowは変更されません。

in_defNの場合、in_rowYにすることはできません。これは、行ラベル区分はセッション・ラベル区分のサブセットにする必要があるためです。

次の例では、hr_ols_polポリシーの区分を変更します。

BEGIN 
 SA_USER_ADMIN.ALTER_COMPARTMENTS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones',
  comps          => 'FIN',
  access_mode    => SA_UTL.READ_ONLY,
  in_def         => 'y',
  in_row         => 'y');
END;
/

SA_USER_ADMIN.ALTER_GROUPS

SA_USER_ADMIN.ALTER_GROUPSプロシージャは、指定されたグループについて、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

構文

SA_USER_ADMIN.ALTER_GROUPS ( 
  policy_name      IN VARCHAR2,
  user_name        IN VARCHAR2,
  groups           IN VARCHAR2,
  access_mode      IN VARCHAR2 DEFAULT NULL,
  in_def           IN VARCHAR2 DEFAULT NULL,
  in_row           IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-64 SA_USER_ADMIN.ALTER_GROUPSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

グループについて認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAMEおよびGRP列を問い合せます。

groups

短縮名のみによる、変更するグループのカンマ区切りのリストです。既存のグループを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数です。変数名、値および意味は次のとおりです。

SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

SA_UTL.READ_WRITEは、書込みが認可されることを示します。

access_modeNULLの場合、グループのaccess_modeは変更されません。

in_def

指定したグループがデフォルト・グループ内にあることが必要かどうか(Y/N)を指定します。

in_defNULLの場合、グループのin_defは変更されません。

in_row

指定したグループが行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowNULLの場合、グループのin_rowは変更されません。

in_defNの場合、in_rowYにすることはできません。これは、行ラベル・グループはセッション・ラベル・グループのサブセットにする必要があるためです。

次の例では、既存のグループのアクセス・モードを読取り専用に設定します。

BEGIN 
 SA_USER_ADMIN.ALTER_GROUPS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones',
  groups         => 'ER',
  access_mode    => SA_UTL.READ_ONLY);
END;
/

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS プロシージャは、すべての区分をユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS (
 policy_name  IN VARCHAR2,
 user_name    IN VARCHAR2);

パラメータ

表E-65 SA_USER_ADMIN.DROP_ALL_COMPARTMENTSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分について認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

次の例では、ユーザーjjoneshr_ols_polポリシーのすべての区分を削除します。

BEGIN 
 SA_USER_ADMIN.DROP_ALL_COMPARTMENTS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones');
END;
/

SA_USER_ADMIN.DROP_ALL_GROUPS

SA_USER_ADMIN.DROP_ALL_GROUPS プロシージャは、すべてのグループをユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_ALL_GROUPS (
  policy_name IN VARCHAR2,
  user_name   IN VARCHAR2);

パラメータ

表E-66 SA_USER_ADMIN.DROP_ALL_GROUPSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

グループについて認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAMEおよびGRP列を問い合せます。

次の例では、ユーザーjjoneshr_ols_polポリシーからすべてのグループを削除します。

BEGIN 
 SA_USER_ADMIN.DROP_ALL_GROUPS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones');
END;
/

SA_USER_ADMIN.DROP_COMPARTMENTS

SA_USER_ADMIN.DROP_COMPARTMENTSプロシージャは、指定した区分をユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_COMPARTMENTS ( 
  policy_name     IN VARCHAR2,
  user_name       IN VARCHAR2,
  comps           IN VARCHAR2);

パラメータ

表E-67 SA_USER_ADMIN.DROP_COMPARTMENTSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分について認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

comps

削除する区分のカンマ区切りのリストです。このポリシーのすべての区分を検索するには、DBA_SA_USER_COMPARTMENTSビューのPOLICY_NAMEおよびCOMP列を問い合せます。

次の例では、hr_ols_polポリシーからFINANCIAL区分を削除します。

BEGIN 
 SA_USER_ADMIN.DROP_COMPARTMENTS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones',
  comps          => 'HR');
END;
/

SA_USER_ADMIN.DROP_GROUPS

SA_USER_ADMIN.DROP_GROUPS プロシージャは、指定したグループをユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_GROUPS ( 
  policy_name IN VARCHAR2,
  user_name   IN VARCHAR2,
  groups      IN VARCHAR2);

パラメータ

表E-68 SA_USER_ADMIN.DROP_GROUPSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

グループについて認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAMEおよびGRP列を問い合せます。

groups

短縮名のみによる、削除するグループのカンマ区切りのリストです。グループのリストを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

次の例では、hr_ols_polポリシーからNR_FINグループを削除します。

BEGIN 
 SA_USER_ADMIN.DROP_GROUPS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones',
  groups         => 'ER');
END;
/

SA_USER_ADMIN.DROP_USER_ACCESS

SA_USER_ADMIN.DROP_USER_ACCESSプロシージャは、指定したユーザーからOracle Label Securityのすべての認可と権限を削除します。

構文

SA_USER_ADMIN.DROP_USER_ACCESS (
  policy_name      IN VARCHAR2,
  user_name        IN VARCHAR2); 

パラメータ

表E-69 SA_USER_ADMIN.DROP_USER_ACCESSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このポリシーに関連付けられているすべてのユーザーを検索するには、DBA_SA_USER_PRIVSビューのUSER_NAMEおよびPOLICY_NAME列を問い合せます。

次の例では、hr_ols_polポリシーに対するユーザーjjonesの認可を削除します。

BEGIN 
 SA_USER_ADMIN.DROP_USER_ACCESS (
  policy_name       => 'hr_ols_pol',
  user_name         => 'jjones');
END;
/

SA_USER_ADMIN.SET_COMPARTMENTS

SA_USER_ADMIN.SET_COMPARTMENTSプロシージャは、ユーザーに区分を割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

区分を設定した後で、SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャを使用して追加の区分を構成できます。(「SA_USER_ADMIN.ADD_COMPARTMENTS」を参照してください。)

レベルが設定されているユーザーのみが、認可された区分を確立できます。

書込み区分を指定する場合は、読取り区分のサブセットにする必要があります。(書込み区分は、ユーザーが書込みアクセス権を必要とする区分です。)

構文

SA_USER_ADMIN.SET_COMPARTMENTS (
  policy_name   IN VARCHAR2,
  user_name     IN VARCHAR2,
  read_comps    IN VARCHAR2,
  write_comps   IN VARCHAR2 DEFAULT NULL,
  def_comps     IN VARCHAR2 DEFAULT NULL,
  row_comps     IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-70 SA_USER_ADMIN.SET_COMPARTMENTSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分を割り当てるユーザー名を指定します。

read_comps

短縮名のみによる、読取りアクセスが認可されている区分のカンマ区切りのリストです。

すべての区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

write_comps

短縮名のみによる、書込みアクセスが認可されている区分のカンマ区切りのリストです(read_compsのサブセット)。write_compsNULLの場合は、read_compsに設定されます。

def_comps

短縮名のみで、デフォルトの区分を指定します。この区分はread_compsのサブセットであることが必要です。def_compsNULLの場合は、read_compsに設定されます。

row_comps

短縮名のみで、行の区分を指定します。この区分は、write_compsおよびdef_compsのサブセットであることが必要です。row_compsNULLの場合は、書込みアクセスが認可されているdef_comps内のコンポーネントに設定されます。

次の例では、hr_ols_polポリシーの区分を設定します。

BEGIN
 SA_USER_ADMIN.SET_COMPARTMENTS (
  policy_name   => 'hr_ols_pol',
  user_name     => 'jjones', 
  read_comps    => 'FIN',
  write_comps   => 'FIN',
  def_comps     => 'FIN',
  row_comps     => 'FIN');
END;
/

SA_USER_ADMIN.SET_DEFAULT_LABEL

SA_USER_ADMIN.SET_DEFAULT_LABEL プロシージャは、ユーザーの初期セッション・ラベルを指定のラベルに設定します。

行ラベルが新規の書込みラベルで支配されていれば、セッション・ラベルを次のように設定できます。

  • 各自の最大ラベル以下で、かつ各自の最小ラベル以上のレベルに設定する。

  • 認可された区分リストにある区分を含むように設定する。

  • 認可されたグループ・リストにあるグループを含むように設定する。(認可グループのサブグループは、認可リストに暗黙的に含まれます。)

行ラベルは、セッション・ラベルのリセットによって得られる新規の書込みラベルで支配される必要があります。この条件に該当しない場合は、SET_DEFAULT_LABELプロシージャが失敗します。

たとえば、現行の行ラベルがS:A,Bで、両方の区分への書込みアクセス権を持っているとします。新規のデフォルト・ラベルをC:A,Bに設定する操作を試みると、SET_LABELプロシージャは失敗します。これは、新規の書込みラベルはC:A,Bとなり、現行の行ラベルを支配しないためです。

この場合にセッション・ラベルを正常にリセットするには、最初に行ラベルをリセット後のセッション・ラベルで支配されるように下位の値にする必要があります。

構文

SA_USER_ADMIN.SET_DEFAULT_LABELS (
  policy_name  IN VARCHAR2,
  user_name    IN VARCHAR2,
  def_label    IN VARCHAR2);

パラメータ

表E-71 SA_USER_ADMIN.SET_DEFAULT_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ラベル・コンポーネントで認可されているユーザーを指定します。このユーザーを検索するには、ALL_SA_USER_LABELSビューのUSER_NAME列を問い合せます。

def_label

ユーザーのデフォルト・ラベルの初期化に使用するラベル文字列を指定します。このラベルには、読取りアクセスが認可されている区分とグループであれば、どれでも含めることができます。既存のラベルを検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

次の例では、ユーザーjjoneshr_ols_polのデフォルト・ラベルを設定します。

BEGIN 
 SA_USER_ADMIN.SET_DEFAULT_LABEL (
  policy_name       => 'hr_ols_pol',
  user_name         => 'jjones',
  def_label         => 'HS');
END;
/

SA_USER_ADMIN.SET_GROUPS

SA_USER_ADMIN.SET_GROUPS プロシージャは、ユーザーにグループを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

レベルが設定されているユーザーのみが、認可されたグループを確立できます。DBA_SA_USER_LEVELSデータ・ディクショナリ・ビューを問い合せることで、ユーザーのレベル認可に関する情報を検索できます。

構文

SA_USER_ADMIN.SET_GROUPS (policy_name IN VARCHAR2,
  user_name        IN VARCHAR2,
  read_groups      IN VARCHAR2,
  write_groups     IN VARCHAR2 DEFAULT NULL,
  def_group        IN VARCHAR2 DEFAULT NULL,
  row_groups       IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-72 SA_USER_ADMIN.SET_GROUPSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このユーザーはグループ認可の初回ユーザーですが、そのユーザーはすでにレベルが認可されている必要があります。レベルについて認可されているユーザーを検索するには、DBA_SA_USER_LEVELSビューのUSER_NAME列を問い合せます。

read_groups

短縮名のみによる、読取りが認可されているグループのカンマ区切りのリストです。

既存のグループを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

write_groups

短縮名のみによる、書込みが認可されているグループのカンマ区切りのリストです。これは、read_groupsのサブセットであることが必要です。NULLに設定された場合、これはread_groupsにデフォルト設定されます。

def_groups

短縮名のみで、デフォルトのグループを指定します。これは、read_groupsのサブセットであることが必要です。NULLに設定された場合、これはread_groupsにデフォルト設定されます。

row_groups

短縮名のみで、行のグループを指定します。これは、write_groupsおよびdef_groupsのサブセットであることが必要です。NULLに設定すると、この設定は、書込みアクセスが認可されているdef_groups内のグループにデフォルト設定されます。

次の例では、hr_ols_polポリシーのグループを定義します。

BEGIN 
 SA_USER_ADMIN.SET_GROUPS (
  policy_name    => 'hr_ols_pol',
  user_name      => 'jjones', 
  read_groups    => 'ER_FIN',
  write_groups   => 'ER_FIN',
  def_groups     => 'ER_FIN',
  row_groups     => 'ER_FIN');
END;
/

SA_USER_ADMIN.SET_LEVELS

SA_USER_ADMIN.SET_LEVELSプロシージャは、ユーザーに最小レベルと最大レベルを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

構文

SA_USER_ADMIN.SET_LEVELS (policy_name IN VARCHAR2,
   user_name        IN VARCHAR2,
   max_level        IN VARCHAR2,
   min_level        IN VARCHAR2 DEFAULT NULL,
   def_level        IN VARCHAR2 DEFAULT NULL,
   row_level        IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-73 SA_USER_ADMIN.SET_LEVELSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このプロシージャを実行する場合に、このユーザーはOracle Label Securityの認可を持っている必要はありません。

max_level

短縮名のみによる、読取りアクセスと書込みアクセスの最上位レベルです。

既存のレベルを検索するには、ALL_SA_LEVELSビューのSHORT_NAME列を問い合せます。

min_level

短縮名のみによる、書込みアクセスの最下位レベルです。NULLに設定された場合、デフォルトはポリシーの最下位レベルになります。

def_level

デフォルト・レベル(最小レベル以上、かつ最大レベル以下)を指定します。短縮名のみを使用します。NULLに設定された場合、デフォルトはmax_levelになります。

row_level

行レベル(最小レベル以上、かつデフォルト・レベル以下)を指定します。短縮名のみを使用します。NULLに設定された場合、def_levelに設定されます。

次の例では、hr_ols_polポリシーのレベルを設定します。

BEGIN
  SA_USER_ADMIN.SET_LEVELS (
   policy_name     => 'hr_ols_pol',
   user_name       => 'jjones',
   max_level       => 'PUB',
   min_level       => 'HS');
END;
/

SA_USER_ADMIN.SET_PROG_PRIVS

SA_USER_ADMIN.SET_PROG_PRIVSプロシージャは、プログラム・ユニットのポリシー固有の権限を設定します。

privilegesパラメータがNULLの場合は、ポリシーに対するプログラム・ユニットの権限が削除されます。

ストアド・プログラム・ユニットに権限を付与するには、SA_USER_ADMIN.SA_USER_ADMINパッケージでのpolicy_DBAロールおよびEXECUTE許可が必要です。SA_USER_ADMINパッケージまたはOracle Enterprise Managerのいずれかを使用して、Oracle Label Securityの権限を管理できます。

構文

SA_USER_ADMIN.SET_PROG_PRIVS (
  policy_name           IN VARCHAR2,
  schema_name           IN VARCHAR2,
  program_unit_name     IN VARCHAR2,
  privileges            IN VARCHAR2);

パラメータ

表E-74 SA_SESSION.SET_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

プログラム・ユニットを含むスキーマの名前です。

program_unit_name

権限を付与するプログラム・ユニットを指定します。

privileges

カンマで区切ったポリシー固有の権限の文字列です。権限をNULLに設定した場合は、ポリシーに対するプログラム・ユニットの権限が削除されます。

付与できる権限のリストは、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください。

次の例では、SUM_PURCHASESファンクションにREAD権限を付与します(「トラステッド・ストアド・プログラム・ユニットの例」を参照)。

BEGIN
 SA_USER_ADMIN.SET_PROG_PRIVS (
  policy_name         => 'hr_ols_pol',
  schema_name         => 'HR',
  program_unit_name   => 'check_emp_hours',
  privileges          => 'READ');
END;
/

check_emp_hoursプロシージャがコールされると、現行ユーザーのOracle Label Securityの権限に加えてREAD権限で実行されます。このテクニックを使用すると、ユーザーには、個々の従業員がかかった時間を知らせずに、従業員がかかった合計時間の値を検索するように許可できます。

SA_USER_ADMIN.SET_ROW_LABEL

SA_USER_ADMIN.SET_ROW_LABELプロシージャは、ユーザーの初期行ラベルを指定のラベルに設定します。

ユーザーは、独自に行ラベルを設定できますが、含めることができるのは次の要素のみです。

  • セッション・ラベルのレベル以下で、かつ、ユーザーの最小レベル以上のレベル。

  • ユーザーが書込みアクセス権を持つように認可されているセッション・ラベルからの、区分とグループのサブセット。

ユーザーが行ラベルに無効な値の設定を試みると、操作は許可されず、その行ラベル値は変更されません。

構文

SA_USER_ADMIN.SET_ROW_LABEL (
  policy_name   IN VARCHAR2,
  user_name     IN VARCHAR2,
  row_label     IN VARCHAR2);

パラメータ

表E-75 SA_USER_ADMIN.SET_ROW_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このユーザーは、十分な区分、グループおよびレベル認可を持っている必要があります。このユーザーを検索するには、DBA_SA_USER_COMPARTMENTSDBA_SA_USER_GROUPSおよびDBA_SA_USER_LEVELSビューのUSER_NAME列を問い合せます。

row_label

ユーザーの行ラベルの初期化に使用するラベル文字列を指定します。ラベルには、書込みアクセスが認可されるデフォルト・ラベルからの区分とグループのみを含める必要があります。既存の区分およびグループを検索するには、ALL_SA_COMPARTMENTSおよびALL_SA_GROUPSビューを問い合せます。

次の例では、ユーザーjjoneshr_ols_polポリシーの行ラベルを設定します。

BEGIN 
 SA_USER_ADMIN.SET_ROW_LABEL (
  policy_name       => 'hr_ols_pol',
  user_name         => 'jjones',
  row_label         => 'HS');
END;
/

SA_USER_ADMIN.SET_USER_LABELS

SA_USER_ADMIN.SET_USER_LABELSプロシージャは、個々のコンポーネントではなくラベル・セットを使用して、ユーザーのレベル、区分およびグループを設定します。

構文

SA_USER_ADMIN.SET_USER_LABELS (
  policy_name      IN VARCHAR2,
  user_name        IN VARCHAR2,
  max_read_label   IN VARCHAR2,
  max_write_label  IN VARCHAR2 DEFAULT NULL,
  min_write_label  IN VARCHAR2 DEFAULT NULL,
  def_label        IN VARCHAR2 DEFAULT NULL,
  row_label        IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-76 SA_USER_ADMIN.SET_USER_LABELSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このプロシージャを実行する場合、このユーザーにはOracle Label Securityの認可は必要ありません。

max_read_label

ユーザーが認可される最大読取りラベルの初期化に使用するラベル文字列を指定します。この文字列は、ユーザーの最大レベル、読取りアクセスが認可される区分およびグループで構成されます。

これらの設定に関する情報を検索するには、DBA_SA_USERSデータ・ディクショナリ・ビューを問い合せます。

max_write_label

ユーザーが認可される最大書込みラベルの初期化に使用するラベル文字列を指定します。この文字列は、ユーザーの最大レベル、書込みアクセスが認可される区分およびグループで構成されます。max_write_labelを指定しない場合は、max_read_labelに設定されます。

min_write_label

ユーザーが認可される最小書込みラベルの初期化に使用するラベル文字列を指定します。この文字列にはレベルのみが含まれ、区分やグループは含まれません。min_write_labelを指定しない場合は、ポリシーに定義されている最下位レベルに設定され、区分やグループは含まれません。

def_label

レベル、区分、グループなど、ユーザーのセッション・ラベルの初期化に使用するラベル文字列(max_read_labelのサブセット)を指定します。default_labelを指定しない場合は、max_read_labelに設定されます。

row_label

プログラムの行ラベルの初期化に使用するラベル文字列を指定します。この文字列には、レベル、区分およびグループ、つまりmax_write_labelおよびdef_labelのサブセットが含まれます。row_labelを指定しない場合は、def_labelに設定され、書込みアクセスが認可される区分とグループのみが含まれます。

次の例では、ユーザーjjoneshr_ols_polポリシーのユーザー・ラベルを設定します。

BEGIN 
 SA_USER_ADMIN.SET_USER_LABELS (
  policy_name       => 'hr_ols_pol',
  user_name         => 'jjones',
  max_read_label    => 'HS:FIN',
  max_write_label   => 'HS',
  def_label         => 'HS',
  row_label         => 'HS');
END;
/

SA_USER_ADMIN.SET_USER_PRIVS

SA_USER_ADMIN.SET_USER_PRIVSプロシージャは、ユーザーに対してポリシー固有の権限を設定します。

これらの権限は、次回にユーザーがデータベースにログインするまで有効になりません。既存の権限は、すべて新しい権限セットで置き換えられます。権限パラメータの値がNULLの場合は、そのユーザーのポリシーに対する権限が削除されます。

ユーザーにポリシー権限を割り当てるには、SA_USER_ADMINパッケージに対するEXECUTE権限を持ち、policy_DBAロールが付与されている必要があります。

構文

SA_USER_ADMIN.SET_USER_PRIVS (
  policy_name     IN VARCHAR2,
  user_name       IN VARCHAR2,
  privileges      IN VARCHAR2);

パラメータ

表E-77 SA_USER_ADMIN.SET_USER_PRIVSのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

権限を付与するユーザーの名前です。このユーザーは、ポリシー・レベル、区分およびグループについてすでに認可されている必要があります。このユーザーを検索するには、DBA_SA_USER_COMPARTMENTSDBA_SA_USER_GROUPSおよびDBA_SA_USER_LABELSビューのUSER_NAME列を問い合せます。

privileges

カンマで区切ったポリシー固有の権限の文字列です。付与できる権限のリストは、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください。

次の例では、ユーザーjgodfreyに、hr_ols_polポリシー設定に対する完全な権限を付与します。

BEGIN 
 SA_USER_ADMIN.SET_USER_PRIVS (
  policy_name       => 'hr_ols_pol',
  user_name         => 'jgodfrey',
  privileges        => 'FULL');
END;
/

SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ

SA_UTL PL/SQLパッケージには、PL/SQLプログラムで使用されるユーティリティ・ファンクションおよびプロシージャが含まれています。

これらのプログラムは、セッションのセキュリティ属性の現在の値に関する情報を、数値のラベル値として戻します。これらは、主にトラステッド・ストアド・プログラム・ユニットで使用するためのものです。このパッケージを使用するために特別な権限は必要ありません。

表E-78に、SA_UTL PL/SQLパッケージのファンクションおよびプロシージャを示します。

表E-78 SA_UTL PL/SQLパッケージの内容

ファンクションまたはプロシージャ 説明

SA_UTL.CHECK_LABEL_CHANGE

ユーザーがポリシーで保護されている表の行に対するデータ・ラベルを変更できるかどうかをチェックします。

SA_UTL.CHECK_READ

ユーザーがポリシーで保護されている表の行を読み取ることができるかどうかをチェックします。

SA_UTL.CHECK_WRITE

ユーザーがポリシーで保護されている表の行データの挿入、更新または削除を実行できるかどうかをチェックします。

SA_UTL.DATA_LABEL

ラベルがデータ・ラベルである場合、TRUEを戻します。

SA_UTL.GREATEST_LBOUND

2つのラベルの引数の最大の下限であるラベルを戻します。

SA_UTL.LEAST_UBOUND

ラベルの引数の最小の上限であるラベルを戻します。

SA_UTL.NUMERIC_LABEL

現行のセッション・ラベルを戻します。

SA_UTL.NUMERIC_ROW_LABEL

現行の行ラベルを戻します。

SA_UTL.SET_LABEL

現行データベース・セッションのラベルを設定します。

SA_UTL.SET_ROW_LABEL

現行データベース・セッションの行ラベルを設定します。

SA_UTL.CHECK_LABEL_CHANGE

SA_UTL.CHECK_LABEL_CHANGEファンクションは、ユーザーがポリシーで保護されている表の行に対するデータ・ラベルを変更できるかどうかをチェックします。

ユーザーがデータ・ラベルを変更できる場合、このファンクションは1を戻します。ユーザーがデータ・ラベルを変更できない場合、これは0を戻します。入力値は、ポリシー名、現在のデータ・ラベルおよび新しいデータ・ラベルです。

構文

SA_UTL.CHECK_LABEL_CHANGE (
  policy_name     IN VARCHAR2,
  current_label   IN NUMBER,
  new_label       IN NUMBER)
RETURN NUMBER; 

注意:

表にデータを書き込むには、その表に対する更新権限を持っている必要があります。

パラメータ

表E-79 SA_UTL.CHECK_LABEL_CHANGEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

current_label

ラベルの現在の値です。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

new_label

ラベルの新しい値です。

次の例では、ユーザーがポリシーで保護されている行のデータ・ラベルを変更できるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
  IF SA_UTL.CHECK_LABEL_CHANGE('hr_ols_pol',2000, 2200) = 1 
   THEN DBMS_OUTPUT.PUT_LINE('Users can chagne data labels in policy-protected rows.');
  ELSE
   DBMS_OUTPUT.PUT_LINE('Users cannot change data labels in policy-protected rows.');
  END IF;
END;
/

SA_UTL.CHECK_READ

SA_UTL.CHECK_READファンクションは、ユーザーがポリシーで保護されている表の行を読み取ることができるかどうかをチェックします。

ユーザーが表の行を読み取ることができる場合、このファンクションは1を戻します。ユーザーが表の行を読み取ることができない場合、これは0を戻します。

注意:

表のデータを読み取るには、ユーザーは、その表に対するSELECT権限を持っている必要があります。

構文

SA_UTL.CHECK_READ (
  policy_name     IN VARCHAR2,
  label           IN NUMBER) 
RETURN NUMBER; 

パラメータ

表E-80 SA_UTL.CHECK_READのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

チェックするラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

次の例では、ユーザーがポリシーで保護されている行を読み取ることができるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
  IF SA_UTL.CHECK_READ('hr_ols_pol',2000) = 1 
   THEN DBMS_OUTPUT.PUT_LINE('Users can read policy-protected rows.');
  ELSE
   DBMS_OUTPUT.PUT_LINE('Users cannot read policy-protected rows.');
  END IF;
END;
/

SA_UTL.CHECK_WRITE

SA_UTL.CHECK_WRITEファンクションは、ユーザーがポリシーで保護されている表の行データの挿入、更新または削除を実行できるかどうかをチェックします。

表にデータを書き込むには、ユーザーは、その表に対するUPDATE権限を持っている必要があります。ユーザーが表の行に書き込むことができる場合、このファンクションは1を戻します。ユーザーが表の行に書き込むことができない場合、これは0を戻します。入力値はポリシー名と行のデータ・ラベルです。

構文

SA_UTL.CHECK_WRITE (
  policy_name     IN VARCHAR2,
  label           IN NUMBER) 
RETURN NUMBER; 

パラメータ

表E-81 SA_UTL.CHECK_WRITEのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

チェックするラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

次の例では、ユーザーがポリシーで保護されている行に書き込むことができるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
  IF SA_UTL.CHECK_WRITE('hr_ols_pol',2000) = 1 
   THEN DBMS_OUTPUT.PUT_LINE('Users can write to policy-protected rows.');
  ELSE
   DBMS_OUTPUT.PUT_LINE('Users cannot write to policy-protected rows.');
  END IF;
END;
/

SA_UTL.DATA_LABEL

SA_UTL.DATA_LABELファンクションは、ラベルがデータ・ラベルの場合はTRUEを戻します。

構文

SA_UTL.DATA_LABEL( 
 label IN NUMBER) 
RETURN BOOLEAN;

パラメータ

表E-82 SA_UTL.DATA_LABELのパラメータ

パラメータ 説明

label

チェックするラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

次の例では、ラベル2000がデータ・ラベルであるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN 
 IF SA_UTL.DATA_LABEL(2000)
  THEN DBMS_OUTPUT.PUT_LINE('Label 2000 is a data label.');
 ELSE 
  DBMS_OUTPUT.PUT_LINE('Label 2000 is not a data label.'); 
 END IF; 
END;
/

SA_UTL.GREATEST_LBOUND

SA_UTL.GREATEST_LBOUNDファンクションは、2つのラベルの引数の最大の下限であるラベルを戻します。

構文

SA_UTL.GREATEST_LBOUND (
 label1 IN NUMBER,
 label2 IN NUMBER)
RETURN NUMBER; 

パラメータ

表E-83 SA_UTL.GREATEST_LBOUNDのパラメータ

パラメータ 説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

次の例では、既存のラベル・タグ31103111を比較しています。

SELECT SA_UTL.GREATEST_LBOUND(3110,3111) FROM DUAL;

SA_UTL.GREATEST_LBOUND(3110,3111)
---------------------------------
                             3111

SA_UTL.LEAST_UBOUND

SA_UTL.LEAST_UBOUNDファンクションは、ラベルの引数の最小の上限であるラベルを戻します。

構文

SA_UTL.LEAST_UBOUND (
 label1 IN NUMBER,
 label2 IN NUMBER)
RETURN NUMBER; 

パラメータ

表E-84 SA_UTL.LEAST_UBOUNDのパラメータ

パラメータ 説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

次の例では、既存のラベル31103111を比較しています。

SELECT SA_UTL.LEAST_UBOUND(3110,3111) FROM DUAL;

SA_UTL.LEAST_UOUND(3110,3111)
-----------------------------
                         3110

関連項目:

ラベルの上限と下限の決定。前述のファンクションは第6章で説明したファンクションと同じですが、文字列ではなく番号を戻します。

SA_UTL.NUMERIC_LABEL

SA_UTL.NUMERIC_LABELファンクションは、現行のセッション・ラベルを戻します。

このファンクションは、入力パラメータとしてポリシー名を取り、NUMBER値を戻します。

構文

SA_UTL.NUMERIC_LABEL ( 
  policy_name) 
RETURN NUMBER;

パラメータ

表E-85 SA_UTL.NUMERIC_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、現在データベース・インスタンスに接続されているユーザーのセッション数値ラベルを戻します。

SET SERVEROUTPUT ON
DECLARE
 num_label number;
BEGIN 
 num_label := SA_UTL.NUMERIC_LABEL('hr_ols_pol'); 
 DBMS_OUTPUT.PUT_LINE('Numeric label: '||num_label);
END;
/

SA_UTL.NUMERIC_ROW_LABEL

SA_UTL.NUMERIC_ROW_LABELファンクションは、現行の行ラベルを戻します。

このファンクションは、入力パラメータとしてポリシー名を取り、NUMBER値を戻します

構文

SA_UTL.NUMERIC_ROW_LABEL ( 
  policy_name) 
RETURN NUMBER;

パラメータ

表E-86 SA_UTL.NUMERIC_ROW_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

次の例では、現在データベース・インスタンスに接続されているユーザーのセッション数値行ラベルを戻します。

SET SERVEROUTPUT ON
DECLARE
 num_row number;
BEGIN 
 num_row := SA_UTL.NUMERIC_ROW_LABEL('hr_ols_pol'); 
 DBMS_OUTPUT.PUT_LINE('Numeric row label: '||num_row);
END;
/

SA_UTL.SET_LABEL

SA_UTL.SET_LABELプロシージャは、現行データベース・セッションのラベルを設定します。

セッションの書込みラベルと行ラベルは、書込みアクセスが認可されているラベルの区分とグループのサブセットに設定されます。

構文

SA_UTL.SET_LABEL (
 policy_name IN VARCHAR2,
 label       IN LBAC_LABEL); 

パラメータ

表E-87 SA_UTL.SET_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

セッション・ラベルとして設定するラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

ラベルの文字形式をLBAC_LABEL型に変換する、TO_LBAC_DATA_LABELファンクションの出力として、このパラメータを渡す必要があります。(次の項の例で、これを行う方法を示します。)

「Oracle Label Securityのポリシーでのラベル付けファンクションの動作」も参照してください。

次の例では、hr_ols_polポリシーのラベルを設定します。

BEGIN
  SA_UTL.SET_LABEL (
    policy_name => 'hr_ols_pol',
    label       => to_lbac_data_label('hr_ols_pol','hs:pii'));
END;
/

SA_UTL.SET_ROW_LABEL

SA_UTL.SET_ROW_LABELプロシージャは、現行データベース・セッションの行ラベルを設定します。

ラベルの区分とグループは、書込みアクセスが認可されているセッション・ラベルの区分およびグループのサブセットであることが必要です。

構文

SA_UTL.SET_ROW_LABEL (
 policy_name IN VARCHAR2,
 label       IN BINARY_INTEGER); 

パラメータ

表E-88 SA_UTL.SET_ROW_LABELのパラメータ

パラメータ 説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

セッションのデフォルト行ラベルとして設定するラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

次の例では、hr_ols_polポリシーの行ラベルを3000に設定します。

BEGIN
 SA_UTL.SET_ROW_LABEL (
  policy_name         => 'hr_ols_pol',
  label               => 1111);
END;
/