17.10 - SQLプロシージャ権限のルール - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)
SQLプロシージャ権限のルールと、それらがどのようにチェックされるのかを、以下に示します。
  • 動的SQLと静的SQLは、これらのルールに準拠しています。

    一般に、用語dynamic SQLは、実行時まで完全なテキストが判明しないすべてのSQL文を指します。

  • SQLプロシージャのデフォルトの権限オプションはDEFINERです。
  • プロシージャの作成者がその直接の所有者でもある場合は、プロシージャ内のすべての静的DML文とDCL文が有効です。

以下のテーブルに、SQLプロシージャ権限の割り当てルールを示します。

列見出しに関する以下の事柄に注意してください。
  • Owner/Creator Relationship列に対しては、ownerという語は直接の所有者を表わします。
  • Privilege Checking Done at This Time: Compilation列に関しては、コンパイル時には適切なCREATE権限とDROP権限もチェックされます。
  • Privilege Checking Done at This Time: Execution列に対しては、EXECUTE PROCEDURE権限も実行時にチェックされます。
SQL SECURITY権限オプション SQL文の状態(動的または静的) 所有者/作成者の関係 次のときにチェックが行なわれる権限 デフォルトのデータベースまたはユーザー
コンパイル 実行
DEFINER 動的 OはCでない なし OおよびC C
OはCである なし O C
静的 OはCでない OおよびC OおよびC C
OはCである O O C
INVOKER 動的 OはCでない なし I I
OはCである なし I I
静的 OはCでない C I I
OはCである C I I
OWNER 動的 OはCでない COP O O
OはCである なし O O
静的 OはCでない COPおよびO O O
OはCである O O O
CREATOR 動的 OはCでない なし C C
OはCである なし C C
静的 OはCでない C C C
OはCである C C C

条件:

記号またはテキスト文字列 CREATE PROCEDUREリクエストまたはREPLACE PROCEDUREリクエストを実行依頼するために必要なユーザー権限
なし なし
エラー CREATE PROCEDUREリクエストまたはREPLACE PROCEDUREリクエストのコンパイル時にはなかった1つまたは複数の権限。

この場合はリクエストがアボートされるので、Privilege Check at Execution Time (実行時の権限チェック)およびDefault Database (デフォルトのデータベース)のセルは空になります。

COP CREATE OWNER PROCEDURE。
C プロシージャの作成者の権限。
I プロシージャを呼び出したユーザーの権限。
O プロシージャの所有者の権限。
OおよびC プロシージャ所有者およびプロシージャの作成者の権限。
OまたはC プロシージャ所有者またはプロシージャの作成者の権限。
CREATOR プロシージャが含むデータベースまたはユーザーかどうかに関係なく、プロシージャの作成者の権限。
DEFINER 現在定義されている権限。

これは、デフォルトです。

INVOKER 現在のスタックの最上位にある権限。
OWNER プロシージャの直接の所有者 (プロシージャの格納先ユーザーまたはデータベース)の権限。
記号またはテキスト文字列 プロシージャの直接の所有者と作成者の関係
OはCでない 異なる
OはCである 同じ

INVOKER SQL SECURITYオプションのモデルとして最初の行を使用すると、テーブルは次のように解釈されます。SQL文が動的に呼び出され、それを含むプロシージャの直接の所有者がその作成者と同じユーザーではない場合、プロシージャのコンパイル時に権限チェックは実行されず、プロシージャの呼び出し側の権限は実行時にチェックされ、プロシージャ本体のSQL文内で修飾されていないすべてのオブジェクトの参照を暗黙的に修飾するために使用されるデフォルトのデータベースまたはユーザーは、そのプロシージャの呼び出し側です。

次の例は、さまざまなSQL SECURITYオプションを使用する方法を示しています。