17.05 - 例: SQL SECURITY—CREATORの指定 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-175K-JPN
Language
日本語 (日本)

SQL SECURITY CREATORを指定すると、Vantageはプロシージャを作成したユーザーの権限を検証して適用します。

プロシージャ本体のSQL文内で修飾されていないすべてのオブジェクトの参照を暗黙のうちに修飾するため、システムはデフォルトの修飾子として作成者(定義者)のユーザーの名前を使用します。

次に、静的SQLのCREATORの場合の例を示します。この例では、user_1がSYSLIBデータベースにプロシージャdyn_dmlを作成し、user_2がSYSLIB.dyn_dmlを呼び出しています。

この例では、Vantageは次の権限を検証します。

事例 Vantageが検証する権限とその意味
コンパイル user_1には、SYSLIBデータベースに対するCREATE PROCEDURE権限があります。

user_1には、データベース オブジェクトuser_1.t1に対するINSERT権限があります。

実行 user_2には、SQLプロシージャSYSLIB.dyn_dmlに対するEXECUTE PROCEDURE権限があります。

user_1には、データベース オブジェクトuser_1.t1に対するINSERT権限があります。

     .LOGON user_1/user_1
     .COMPILE FILE sp.spl
     /* sp.spl file
     CREATE PROCEDURE SYSLIB.static_dml()
     SQL SECURITY CREATOR
     BEGIN
       INSERT INTO t1
       SELECT 1,1;
     END;
     /*
     .LOGON user_2,user_2
     CALL SYSLIB.static_dml();

動的SQLの場合、Vantageは次の権限を検証します。

事例 Vantageが検証する権限とその意味
コンパイル user_1には、SYSLIBデータベースに対するCREATE PROCEDURE権限があります。
実行 user_2には、SQLプロシージャSYSLIB.dyn_dmlに対するEXECUTE PROCEDURE権限があります。

user_1には、データベース オブジェクトuser_1.t1に対するINSERT権限があります。

     .LOGON user_1/user_1
     .COMPILE FILE sp.spl
     /* sp.spl file
     CREATE PROCEDURE SYSLIB.dyn_dml()
     SQL SECURITY CREATOR
     BEGIN
       CALL DBC."sysexecsql" ('INSERT INTO t1 (1,1);');
     END;
     /*
     .LOGON user_2/user_2
     CALL SYSLIB.dyn_dml();