SQL SECURITY句がサポートされるのは、次の両方の記述が当てはまる外部プロシージャに対してのみです。
- プロシージャには、DBC.UDFInfo内に次のいずれかのAppCategoryコードがあります。
C (CLIv2)
J (Java)
N (.NET)
O (ODBC)
無効なAppCategoryコードはSのみです。
参照整合性ルールについては、Teradata Vantage™ - データ ディクショナリ、B035-1092を参照してください。
プロシージャ定義のSQL ACCESS句は、SQLをサポートする次のいずれかのオプションを指定します。
- CONTAINS SQL
- MODIFIES SQL DATA
- READS SQL DATA
SQL ACCESSオプションはNO SQLにはできません。NO SQLを指定した場合、Vantageはリクエストはアボートし、要求元にエラーを返します。
次のリストに、有効な権限オプションを示します。
- CREATOR
- DEFINER
- INVOKER
- OWNER
権限のオプションの説明については、<Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184>のCREATE PROCEDURE (外部形式)を参照してください。
Vantageは、プロシージャが明示的にまたはデフォルトでDEFINERとして定義されている場合、プロシージャを次のように処理します。これは、プロシージャのCREATORがそのOWNERではない場合に当てはまります。
- Vantageは、プロシージャのコンパイル中にCREATORの権限を検証します。CREATORには、プロシージャの文により参照されるオブジェクトに対する適切な権限が必要です。
- Vantageはコンパイル中にOWNER (プロシージャを含むデータベースまたはユーザー)の権限を検証します。プロシージャの文により参照されるオブジェクトに対する権限がOWNERにない場合、Vantageは警告メッセージを返します。
- 実行中に、Vantageはプロシージャのすべての文により参照されるオブジェクトのOWNER権限を検証します。適切な権限がないことが原因でアクセスに失敗した場合、プロシージャにエラーが返されます(そのように記述されている場合には扱うことができます)。
- Vantageは、CREATORとは異なるデータベースまたはユーザーによって作成されたUDFにDROPおよびEXECUTE権限を付与します。OWNERは、所有するすべてのオブジェクトを削除する暗黙的な権限を必ず持つ必要があります。OWNERがUDFを実行する場合は、その関数にEXECUTE FUNCTION権限を付与する必要があります。
すべてのプロシージャには、次のルールが適用されます。
- プロシージャの文から参照されるオブジェクトは、WITH GRANT OPTION権限を必要としません。参照されるオブジェクトに必要なのは、GRANT権限のみです。
- Vantageは、実行中にDDL文のCREATOR権限とOWNER権限を検証します。
以下に、Vantageがプロシージャのコンパイル中にプロシージャの権限違反を扱う方法を要約します。
DCLリクエストとDDLリクエストについては、コンパイル中にVantageがCREATOR権限およびOWNER権限を検証します。
権限違反が発生すると、システムはプロシージャに警告メッセージを返します。
DMLリクエストについては、コンパイル中にVantageがCREATOR権限およびOWNER権限を検証します。
- CREATORについては、権限違反が発生すると、システムはプロシージャにエラー メッセージを返します。
- OWNERについては、権限違反が発生すると、システムはプロシージャに警告メッセージを返します。
動的なSQLリクエストについては、Vantageは権限を検証しません。
Vantageがプロシージャの実行中にプロシージャの権限違反を扱う方法を以下の箇条書きにまとめます。
- DCLリクエストとDDLリクエストの場合、実行中にVantageがCREATOR権限とOWNER権限を検証します。
権限違反が発生すると、システムはプロシージャにエラー メッセージを返します。
- DMLリクエストの場合は、実行にVantageがOWNER権限を検証します。
権限違反が発生すると、システムはプロシージャにエラー メッセージを返します。
- 動的なSQLリクエストについては、実行にVantageがCREATOR権限およびOWNER権限を検証します。