16.20 - ストアド プロシージャの権限チェック - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

ストアド プロシージャを作成または実行するには、プロシージャでSQL文を実行するための適切な権限と、ストアド プロシージャ本体で参照されるデータベース オブジェクトに対する権限がなければなりません。また、Teradata Databaseは、プロシージャの作成時にはCREATE権限とDROP権限について、およびプロシージャの実行時にはEXECUTE権限について、適切な権限があるかチェックします。

CREATE/REPLACE PROCEDURE文でSQL SECURITY句を定義することにより、権限チェックの処理方法を指定できます。ストアド プロシージャのコンパイルまたは実行時に、Teradata DatabaseはSQL SECURITY句の以下のオプションに基づいて、必要な権限をチェックします。
  • CREATOR
  • DEFINER
  • INVOKER
  • OWNER
    ストアド プロシージャの作成者と直接所有者が異なる場合は、OWNERオプションを指定するためにCREATE OWNER PROCEDURE権限が必要になります。
SQL SECURITYオプションにより、ストアド プロシージャをコンパイルまたは実行するときに、次に示すどの権限をチェック対象にするかを決定します。
  • ストアド プロシージャを作成したユーザーの権限(ストアド プロシージャが常駐する場所は関係ありません)
  • ストアド プロシージャを呼び出した現在のユーザーの権限
  • ストアド プロシージャの直接所有者の権限(ユーザーまたはストアド プロシージャが常駐するデータベース領域)
  • ストアド プロシージャの作成者および所有者の権限

さらに、SQL SECURITYオプションでは、デフォルト データベースも決定します。このデータベースは、プロシージャ本体のSQL文で参照する修飾されていないオブジェクトの暗黙的な修飾に使用されます。

SQL SECURITY句は、任意選択です。この句を含めない場合、Teradata Databaseにより、デフォルトとしてSQL SECURITY DEFINERオプションが使用されます。

選択するSQL SECURITYオプション 結果
CREATOR
  • ストアド プロシージャが常駐する場所とは無関係に、ストアド プロシージャを作成したユーザーの権限がチェックされます。
  • プロシージャ本体のSQL文内で修飾されていないオブジェクト参照を暗黙的に修飾するために使用されるデフォルト データベースは作成者のデータベースです。
DEFINER 動的SQLのストアド プロシージャの場合、次の権限が確認されます。
  • 作成者が直接所有者と異なる場合、作成者と所有者の権限がプロシージャの実行時に確認されます。
  • 作成者が直接所有者と同じ場合、作成者または所有者のいずれかの権限がプロシージャの実行時に確認されます。
静的SQLのストアド プロシージャの場合、次の権限が確認されます。
  • 作成者が直接所有者と異なる場合、作成者と所有者の権限がプロシージャのコンパイル時と実行時に確認されます。
  • 作成者が直接所有者と同じ場合、作成者または所有者のいずれかの権限がプロシージャのコンパイル時と実行時に確認されます。

プロシージャ本体のSQL文内で修飾されていないオブジェクト参照を暗黙的に修飾するために使用されるデフォルト データベースは作成者のデータベースです。

INVOKER
  • プロシージャの作成時にストアド プロシージャを作成したユーザーの権限が確認されます。
  • プロシージャの実行時にストアド プロシージャを呼び出したユーザーの権限が確認されます。
  • プロシージャ本体のSQL文内で修飾されていないオブジェクト参照を暗黙的に修飾するために使用されるデフォルト データベースは現在のユーザーのデータベースです。
OWNER
  • ストアド プロシージャの直接所有者の権限が確認されます。
  • プロシージャ本体のSQL文内で修飾されていないオブジェクト参照を暗黙的に修飾するために使用されるデフォルト データベースは直接所有者のデータベースです。
ストアド プロシージャの作成者と直接所有者が異なる場合は、このオプションを指定するためにCREATE OWNER PROCEDURE権限が必要になります。
指定しない場合 DEFINER SQL SECURITYオプションはデフォルトで使用されます。

プロキシ経由でTeradata Databaseにアクセスしている場合も、ストアド プロシージャの権限チェックはSQL SECURITY句に基づいて行われます。SQL SECURITY INVOKERオプションが指定されている場合、プロキシ ユーザーの権限は、参照されるSQL文やオブジェクトに必要な権限のチェックにのみ使用されます。

ストアド プロシージャはSQL SECURITYオプションを使用してデフォルト データベースを決定するため、デフォルト データベースは、プロキシ ユーザーがストアド プロシージャ内で設定されても更新されません。ストアド プロシージャが終了してもプロキシ ユーザーのクエリー バンドが変わらない場合、セッションはプロキシ ユーザーのデフォルト データベースに設定されます。

ストアド プロシージャにプロキシ ユーザーを設定するSET QUERY_BAND文が含まれる場合は、ストアド プロシージャが実行されるときに、信頼済みユーザーのCONNECT THROUGH権限がTeradata Databaseにより検証されます。

信頼済みユーザーのCONNECT THROUGH権限にWITH TRUST-ONLYオプションが含まれる場合は、プロキシ ユーザーまたはプロキシ ロールを設定、変更、または削除する、すべてのSET QUERY_BAND文は、信頼済みリクエストから実行されなければなりません。

関連トピック

以下に関する詳細な情報
  • SQL SECURITY句についての詳細は、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>の「CREATE/REPLACE PROCEDURE」を参照してください。
  • 信頼済みユーザーへのCONNECT THROUGH権限の付与の詳細について、<Teradata Vantage™ SQLデータ制御言語、B035-1149>を参照してください。
  • SET QUERY_BANDを使用したプロキシ ユーザーの設定の詳細について、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>を参照してください。