11.6 XS_DIAGパッケージ

XS_DIAGパッケージには、プリンシパル、セキュリティ・クラス、ACL、データ・セキュリティ・ポリシー、ネームスペースおよびワークスペース内のすべてのオブジェクトのデータ・セキュリティの潜在的な問題を診断するサブプログラムが含まれます。すべてのサブプログラムは、オブジェクトが有効な場合にTRUEを戻し、それ以外の場合にそれぞれFALSEを戻します。識別された各不整合について、error_limitパラメータで指定した不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、この検証表を問い合せて、メッセージ・コード、エラーの説明、無効なオブジェクトに通じるパス、不整合の性質を識別するのに役立つ可能性のあるその他の有用な情報などの情報について識別された不整合を判断できます。

この項には次のトピックが含まれます:

11.6.1 セキュリティ・モデル

XS_DIAGパッケージは、SYSスキーマに作成されます。コール元には、このパッケージに対する実行者の権限があり、XS_DIAGパッケージを実行するにはADMIN_ANY_SEC_POLICYシステム権限が必要です。XS_DIAGパッケージに対するEXECUTE権限がPUBLICに付与されます。XS$VALIDATION_TABLE検証表に対するSELECT権限がPUBLICに付与されます。

11.6.2 XS_DIAGサブプログラムの要約

表11-8 XS_DIAGサブプログラムの要約

サブプログラム 説明

VALIDATE_PRINCIPALファンクション

プリンシパルを検証します。

VALIDATE_SECURITY_CLASSファンクション

セキュリティ・クラスを検証します。

VALIDATE_ACLファンクション

ACLを検証します。

VALIDATE_DATA_SECURITYファンクション

データ・セキュリティ・ポリシーを検証するか、特定の表に対してデータ・セキュリティ・ポリシーを検証します。

VALIDATE_NAMESPACE_TEMPLATEファンクション

ネームスペース・テンプレートを検証します。

VALIDATE_WORKSPACEファンクション

ワークスペース全体を検証します。

この項では次のXS_DIAGサブプログラムについて説明します。

11.6.2.1 VALIDATE_PRINCIPALファンクション

VALIDATE_PRINCIPALファンクションは、プリンシパルを検証します。このファンクションは、オブジェクトが有効な場合にTRUEを戻し、それ以外の場合にFALSEを戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。

構文

validate_principal(name         IN VARCHAR2, 
                   error_limit  IN PLS_INTEGER := 1) 
   RETURN BOOLEAN;

パラメータ

パラメータ 説明

name

検証するオブジェクトの名前。

error_limit

検証表に格納できる不整合の最大数。

プリンシパル、ユーザーuser1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_principal('user1', 100) then
    dbms_output.put_line('The user is valid.');
  else
    dbms_output.put_line('The user is invalid.');
  end if;
end;
/
select * from xs$validation_table;

プリンシパル、ロールrole1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_principal('role1', 100) then
    dbms_output.put_line('The role is valid.');
  else
    dbms_output.put_line('The role is invalid.');
  end if;
end;
/
select * from xs$validation_table;

11.6.2.2 VALIDATE_SECURITY_CLASSファンクション

VALIDATE_SECURITY_CLASSファンクションは、セキュリティ・クラスを検証します。このファンクションは、オブジェクトが有効な場合にTRUEを戻し、それ以外の場合にFALSEを戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。

構文

validate_security_class(name         IN VARCHAR2, 
                        error_limit  IN PLS_INTEGER := 1)
   RETURN BOOLEAN;

パラメータ

パラメータ 説明

name

検証するオブジェクトの名前。

error_limit

検証表に格納できる不整合の最大数。

セキュリティ・クラスsec1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_security_class('sec1', 100) then
    dbms_output.put_line('The security class is valid.');
  else
    dbms_output.put_line('The security class is invalid.');
  end if;
end;
/
select * from xs$validation_table;

11.6.2.3 VALIDATE_ACLファンクション

VALIDATE_ACLファンクションは、ACLを検証します。このファンクションは、オブジェクトが有効な場合にTRUEを戻し、それ以外の場合にFALSEを戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。

構文

validate_acl(name         IN VARCHAR2, 
             error_limit  IN PLS_INTEGER := 1) 
   RETURN BOOLEAN;

パラメータ

パラメータ 説明

name

検証するオブジェクトの名前。

error_limit

検証表に格納できる不整合の最大数。

ACL acl1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_acl('acl1', 100) then
    dbms_output.put_line('The ACL is valid.');
  else
    dbms_output.put_line('The ACL is invalid.');
  end if;
end;
/
select * from xs$validation_table;

11.6.2.4 VALIDATE_DATA_SECURITYファンクション

VALIDATE_DATA_SECURITYファンクションは、データ・セキュリティを検証します。このファンクションは、オブジェクトが有効な場合にTRUEを戻し、それ以外の場合にFALSEを戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。

このファンクションには、ポリシー検証のスタイルが3つあります。

  • policyがNULL以外で、table_nameNULLの場合、ファンクションはポリシーが適用されるすべての表に対してポリシーを検証します。table_nameがNULLの場合、table_ownerはNULL以外の場合でも無視されます。

  • policytable_nameの両方がNULL以外の場合、ファンクションは特定の表に対してポリシーを検証します。table_ownerが指定されていない場合は、現在のスキーマが使用されます。

  • ポリシーがNULLでtable_nameがNULL以外の場合、ファンクションは表に適用されているすべてのポリシーを表に対して検証します。table_ownerが指定されていない場合は、現在のスキーマが使用されます。

構文

validate_data_security(policy       IN VARCHAR2 :=NULL,
                       table_owner  IN VARCHAR2 :=NULL,
                       table_name   IN VARCHAR2 :=NULL,
                       error_limit  IN PLS_INTEGER := 1) 
   RETURN BOOLEAN;

パラメータ

パラメータ 説明

policy

検証するオブジェクトの名前。

table_owner

表またはビューのスキーマの名前。

table_name

表またはビューの名前。

error_limit

検証表に格納できる不整合の最大数。

適用されているすべての表でポリシーpolicy1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_data_security(policy      => 'policy1',
                                        error_limit => 100) then
    dbms_output.put_line('The policy is valid on all the applied tables.');
  else
    dbms_output.put_line('The policy is invalid on some of the applied tables.');
  end if;
end;
/
select * from xs$validation_table;

特定の表でポリシーpolicy1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_data_security(policy      => 'policy1',
                                        table_owner => 'HR',
                                        table_name  => 'EMPLOYEES',
                                        error_limit => 100) then
    dbms_output.put_line('The policy is valid on the table.');
  else
    dbms_output.put_line('The policy is invalid on the table.');
  end if;
end;
/
select * from xs$validation_table;

特定の表に適用されているすべてのポリシーを検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_data_security(table_owner => 'HR',
                                        table_name  => 'EMPLOYEES',
                                        error_limit => 100) then
    dbms_output.put_line('All the applied policies on the table are valid.');
  else
    dbms_output.put_line('Some applied policies on the table are invalid');
  end if;
end;
/
select * from xs$validation_table;

11.6.2.5 VALIDATE_NAMESPACE_TEMPLATEファンクション

VALIDATE_NAMESPACE_TEMPLATEファンクションは、ネームスペースを検証します。このファンクションは、オブジェクトが有効な場合にTRUEを戻し、それ以外の場合にFALSEを戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。

構文

validate_namespace_template(name         IN VARCHAR2,
                            error_limit  IN PLS_INTEGER := 1)
   RETURN BOOLEAN;

パラメータ

パラメータ 説明

name

検証するオブジェクトの名前。

error_limit

検証表に格納できる不整合の最大数。

ネームスペースns1を検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_namespace_template('ns1', 100) then
    dbms_output.put_line('The namespace template is valid.');
  else
    dbms_output.put_line('The namespace template is invalid.');
  end if;
end;
/
select * from xs$validation_table;

11.6.2.6 VALIDATE_WORKSPACEファンクション

VALIDATE_WORKSPACEファンクションは、すべてのアーティファクトを検証します。つまり、ワークスペースに存在するすべてのオブジェクトをこの1つのファンクションを使用して検証します。このファンクションは、すべてのオブジェクトが有効な場合にTRUEを戻し、それ以外の場合にFALSEを戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。

構文

validate_workspace(error_limit  IN PLS_INTEGER := 1)
   RETURN BOOLEAN;

パラメータ

パラメータ 説明

error_limit

検証表に格納できる不整合の最大数。

ワークスペース内のすべてのオブジェクトを検証してから、不整合がある場合に検証表を問い合せます。

begin
  if sys.xs_diag.validate_workspace(100) then
    dbms_output.put_line('The objects are valid.');
  else
    dbms_output.put_line('The objects are invalid.');
  end if;
end;
/
select * from xs$validation_table;