行レベル セキュリティUDFの作成の一般的なルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

CREATE FUNCTIONリクエストを使用して、Teradata Databaseがデータ行に対してセキュリティ ポリシーを強制するために実行する関数を生成します。セキュリティ制約の全セットを使用して定義されているテーブルで実行可能な4つのステートメント アクションそれぞれについて、関数を作成できます。行レベル セキュリティ ポリシーUDFのコーディング方法の詳細については、<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照してください。

以下のルールが、行レベル セキュリティを強制するためのUDFの作成に適用されます。
  • CとC++を使用して行レベル セキュリティ関数に対してコーディングできるのは、外部ルーチンのみです。

    行レベル セキュリティを強制するために記述された外部ルーチンでは、Javaはサポートされていません。

  • スカラー型UDFのみを行レベル セキュリティ関数として使用できます。
  • 行レベル セキュリティ関数では、名前のオーバーロードはサポートされていません。

    UDF関数への入力についてサーバーが要求するパラメータ型が原因で、同じ数のパラメータと対応するデータ型が、特定のステートメント アクションのセキュリティ ポリシーを実行する各UDFに対して要求されます。

    セキュリティ ポリシーを実行するUDFのパラメータの間で存在する可能性がある唯一の違いは、制約がnullを許可するかどうかによって、異なるUDFのパラメータがnull標識変数を含むことも含めないこともあるという点です。

    標識変数パラメータに対して、他の値は受け入れられません。

    行レベル セキュリティUDFのパラメータ形式TD_GENERALは、UDFパラメータに対して標識変数パラメータがないことを指定します。

  • 他のUDFの場合とは異なり、行レベル セキュリティUDFの入力パラメータ名は、それらのパラメータのソースを定義するため必須です。

    セキュリティ制約ポリシーUDFは、ユーザーがSQLリクエストから呼び出すことはできません。代わりに、Teradata Databaseは、対応するステートメント アクション タイプが、制約UDFが定義されているテーブルに対して実行されている場合は常に、行レベル セキュリティ関数を自動的に呼び出します。Teradata DatabaseはUDFに対して入力パラメータ値を自動的に生成するため、ユーザーが求めるソースを認識している必要があります。

    行レベル セキュリティ関数について、2つのシステム定義パラメータの名前が存在します。

  • 各UDFに対する有効なシステム定義入力パラメータは、制約オブジェクトで定義されるUDFのステートメント アクションに依存します。
    パラメータの名前 パラメータのソースの定義内容
    CURRENT_SESSION UDFが適用される制約のセッションに対して現在設定されている値。
    INPUT_ROW リクエストのオブジェクトである行の対応する制約列であること。

    このような場合、システム定義パラメータ名は、Teradata Databaseからセキュリティ ポリシーUDFに提供される入力値が、以下の表で定義されるソースからの制約値であることを示します。

    必要な入力パラメータ ステートメント アクションの結果
    DELETE INPUT_ROW セッションがセキュリティ ポリシー テストに合格したかどうかを示します。
    INSERT CURRENT_SESSION ターゲット行に入れられる値。
    SELECT
    • CURRENT_SESSION
    • INPUT_ROW
    セッションがセキュリティ ポリシー テストに合格したかどうかを示します。

    結果としてポリシー テストに合格しなかった場合、Teradata Databaseはアクションの処理を続行せず、次の行に移動し、監査行を生成しません。

    UPDATE
    • CURRENT_SESSION
    • INPUT_ROW
    ターゲット行に入れられる値。
  • ステートメント アクション タイプに対して制約関数を作成しない場合、そのステートメント アクションは、リクエストの実行に必要なOVERRIDE権限を持つユーザーしか実行できません。

    ターゲット行の制約列に割り当てる値もリクエストに含めるか、ターゲット テーブルに割り当てる行をソース テーブルから選択する必要があります。

    関数パラメータ形式の詳細については、UDFパラメータ形式を参照してください。