行レベル セキュリティのあるテーブルでのINSERT ... SELECTの使用 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

すべてのテーブルに完全に同一の行レベル セキュリティ制約がある場合、行レベル セキュリティのあるテーブルでINSERT ... SELECTリクエストを利用できます。

Vantageは、ターゲット テーブルの行レベル セキュリティ制約に対してはセキュリティ ポリシーUDFを実行しません。
  • リクエストを実行するセッションにターゲット テーブルでDML文を使用するための適切なOVERRIDE権限が無いと、データベースはソース テーブルからすべての行レベル セキュリティ制約列の値を取得します。
  • セッションに適切なOVERRIDE権限があれば、データベースはINSERT ... SELECTリクエストの一部として提供されない限り、ソース テーブルから制約値を取得します。

例: 単一文のINSERTリクエストのための行レベル セキュリティINSERT制約関数の適用

この例は、行レベル セキュリティINSERT制約のあるテーブルで単一文のINSERTリクエストにどのようにINSERT制約関数が適用されるかを示しています。

EXPLAIN文は、リクエストの実行に係わる手順および制約関数の適用結果を示すために使用されます。

この例でテーブルの作成に使用される文は、以下のとおりです。

     CREATE TABLE rls_tbl(
       col1 INT,
       col2 INT, 
       classification_levels   CONSTRAINT,
       classification_categories CONSTRAINT);

ユーザーのセッション制約値は、次のとおりです。

     Constraint1Name LEVELS
     Constraint1Value 2
     Constraint3Name CATEGORIES
     Constraint3Value '90000000'xb

このEXPLAIN文は、INSERTリクエストの実行に係わる手順およびINSERT制約関数の適用結果を示すために使用されます。

       EXPLAIN INSERT rls_tbl(1,1,,);

システムは、このEXPLAINテキストを返します。

 *** Help information returned. 6 rows.
 *** Total elapsed time was 1 second.
Explanation
------------------------------------------------------------------------ 1) First, we do an INSERT into RS.rls_tbl constrained by (
     RS.rls_tbl.levels = SYSLIB.INSERTLEVEL (2)), (
     RS.rls_tbl.categories = SYSLIB.INSERTCATEGORIES ('90000000'XB)).
     The estimated time for this step is 0.07 seconds.
  -> No rows are returned to the user as the result of statement 1.
     The total estimated time is 0.07 seconds.

例: ユーザーに必要な権限がない場合の行レベル セキュリティのINSERTおよびSELECT制約(INSERT ... SELECTリクエスト)

この例は、必要なOVERRIDE権限を持たないユーザーが行レベル セキュリティのINSERTおよびSELECT制約があるテーブル上でINSERT ... SELECTリクエストを実行する場合のINSERTおよびSELECT制約の適用方法を示します。

この例でテーブルの作成に使用される文は、以下のとおりです。

     CREATE TABLE rls_src_tbl(
       col1 INT,
       col2 INT, 
       classification_levels   CONSTRAINT,
       classification_categories CONSTRAINT);

     CREATE TABLE rls_tgt_tbl(
       col1 INT,
       col2 INT, 
       classification_levels   CONSTRAINT,
       classification_categories CONSTRAINT);

ユーザーのセッション制約値は、次のとおりです。

     Constraint1Name LEVELS
     Constraint1Value 2
     Constraint3Name CATEGORIES
     Constraint3Value '90000000'xb

以下は、INSERT文です。

       INSERT rls_tgt_tbl SELECT * FROM rls_src_tbl;

EXPLAINは、 条件が("((SYSLIB.SELECTCATEGORIES ( '90000000'XB, RS.rls_src_tbl.categories ))= 'T') AND ((SYSLIB.SELECTLEVEL (2, rls_src_tbl.levels ))= 'T')")のrls_src_tblからのRETRIEVEステップ時に適用されるINSERT制約およびSELECT制約を示します。