ストアド プロシージャを作成または実行するには、プロシージャでSQL文を実行するための適切な権限と、ストアド プロシージャ本体で参照されるデータベース オブジェクトに対する権限がなければなりません。また、Teradata Databaseは、プロシージャの作成時にはCREATE権限とDROP権限について、およびプロシージャの実行時にはEXECUTE権限について、適切な権限があるかチェックします。
- CREATOR
- DEFINER
- INVOKER
- OWNER ストアド プロシージャの作成者と直接所有者が異なる場合は、OWNERオプションを指定するためにCREATE OWNER PROCEDURE権限が必要になります。
- ストアド プロシージャを作成したユーザーの権限(ストアド プロシージャが常駐する場所は関係ありません)
- ストアド プロシージャを呼び出した現在のユーザーの権限
- ストアド プロシージャの直接所有者の権限(ユーザーまたはストアド プロシージャが常駐するデータベース領域)
- ストアド プロシージャの作成者および所有者の権限
さらに、SQL SECURITYオプションでは、デフォルト データベースも決定します。このデータベースは、プロシージャ本体のSQL文で参照する修飾されていないオブジェクトの暗黙的な修飾に使用されます。
SQL SECURITY句は、任意選択です。この句を含めない場合、Teradata Databaseにより、デフォルトとしてSQL SECURITY DEFINERオプションが使用されます。
選択するSQL SECURITYオプション | 結果 |
---|---|
CREATOR |
|
DEFINER | 動的SQLのストアド プロシージャの場合、次の権限が確認されます。
静的SQLのストアド プロシージャの場合、次の権限が確認されます。
プロシージャ本体のSQL文内で修飾されていないオブジェクト参照を暗黙的に修飾するために使用されるデフォルト データベースは作成者のデータベースです。 |
INVOKER |
|
OWNER |
ストアド プロシージャの作成者と直接所有者が異なる場合は、このオプションを指定するために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>を参照してください。