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

Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年9月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ied1556235912841.ditamap
dita:ditavalPath
ja-JP/ied1556235912841.ditaval
dita:id
B035-1100
Product Category
Software
Teradata Vantage

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列に入力します。