16.20 - 例: ユーザーのOVERRIDE権限を持たないテーブルの読み込み - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ NewSQL Engineセキュリティ管理

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/rmm1512082852218.ditamap
dita:ditavalPath
ja-JP/rmm1512082852218.ditaval

OVERRIDE権限を持たないユーザーが、RLSテーブルでINSERTまたはUPDATEを実行する場合、割り当てられたユーザー制約でバイト値として定義されているセッション制約値を16進数コードに変換し、テーブルに読み込みます。

例えば、次のように仮定します。

  1. Countriesという名前のBYTE(1)非階層制約がこれらの値で定義されます。
    • USA: 1
    • UK: 2
    • Canada: 3
  2. U1ユーザーがこの制約に割り当てられます。
    CONSTRAINT = Countries (USA, UK, Canada)
  3. U1ユーザーでCountries制約列を含むテーブルを定義します。
    CT rls_table (x INT, Countries CONSTRAINT);
  4. 関連するINSERT UDFで定義されているセキュリティ ポリシーは、ユーザーのセッション制約を変更しません。

ログオン時、U1ユーザーのセッション制約値は次のように計算されます。

制約値 ビット位置 バイナリ値
USA:1 1 1
UK:2 2 1
Canada: 3 3 1
適用なし 4 0
5 0
6 0
7 0
8 0

システムは割り当てられたユーザー制約を評価し、バイナリ文字列を計算して、非階層値の各セットを表わします。上の例では、11100000で、これは16進数文字列‘E0’xbに変換されます。

U1ユーザーがrls_tblテーブルに行を挿入する場合、システムは自動的に計算された16進数値'E0' xbをテーブルのCountries CONSTRAINT列に入力します。