11.6 XS_DIAGパッケージ
XS_DIAG
パッケージには、プリンシパル、セキュリティ・クラス、ACL、データ・セキュリティ・ポリシー、ネームスペースおよびワークスペース内のすべてのオブジェクトのデータ・セキュリティの潜在的な問題を診断するサブプログラムが含まれます。すべてのサブプログラムは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にそれぞれFALSE
を戻します。識別された各不整合について、error_limit
パラメータで指定した不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、この検証表を問い合せて、メッセージ・コード、エラーの説明、無効なオブジェクトに通じるパス、不整合の性質を識別するのに役立つ可能性のあるその他の有用な情報などの情報について識別された不整合を判断できます。
11.6.2 XS_DIAGサブプログラムの要約
表11-8 XS_DIAGサブプログラムの要約
サブプログラム | 説明 |
---|---|
プリンシパルを検証します。 |
|
セキュリティ・クラスを検証します。 |
|
ACLを検証します。 |
|
データ・セキュリティ・ポリシーを検証するか、特定の表に対してデータ・セキュリティ・ポリシーを検証します。 |
|
ネームスペース・テンプレートを検証します。 |
|
ワークスペース全体を検証します。 |
この項では次の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;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
プリンシパル、ユーザー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;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
セキュリティ・クラス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;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
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_name
がNULL
の場合、ファンクションはポリシーが適用されるすべての表に対してポリシーを検証します。table_name
がNULLの場合、table_owner
はNULL以外の場合でも無視されます。 -
policy
とtable_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;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
表またはビューのスキーマの名前。 |
|
表またはビューの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
適用されているすべての表でポリシー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;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
ネームスペース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;
パラメータ
パラメータ | 説明 |
---|---|
|
検証表に格納できる不整合の最大数。 |
例
ワークスペース内のすべてのオブジェクトを検証してから、不整合がある場合に検証表を問い合せます。
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;