権限とプロシージャ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ制御言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/sqd1591723147563.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1149
Product Category
Software
Teradata Vantage

プロシージャに対する権限付与

以下のテーブルで、プロシージャ固有の権限に関連した、さまざまなタイプのユーザー/付与者の権限について説明します。

権限 付与先 付与者
ALTER PROCEDUREとCREATE PROCEDURE 暗黙的にユーザーDBCに ユーザーDBC
明示的に、他のユーザー、ロール、データベース、またはPUBLICに
  • ユーザーDBC
  • 自分自身に対してこの権限をWITH GRANT OPTION付きで持つユーザーまたはデータベースの所有者
  • 権限が付与されるデータベースまたはユーザーに対してこの権限をWITH GRANT OPTION付きで持つデータベースまたはユーザー
ALTER EXTERNAL PROCEDUREおよびCREATE EXTERNAL PROCEDURE 暗黙的にユーザーDBCに ユーザーDBC
明示的に他のユーザーに
  • ユーザーDBC
  • 自分自身に対してこの権限をWITH GRANT OPTION付きで持つデータベースまたはユーザー
DROP PROCEDURE 明示的に、すべてのユーザー、ロール、データベース、またはPUBLICに デフォルト。
EXECUTE PROCEDUREまたはEXEC PROCEDURE 暗黙的にユーザーDBCに ユーザーDBC
自動的に、プロシージャの作成者に 作成者

ユーザーDBCを除いて、所有者はこの権限を暗黙的に持ちません。

プロシージャの直接所有者が作成者とは異なる場合、所有者がこの権限を自動的に受け取ることはありません。

明示的に、他のユーザー、ロール、データベース、およびPUBLICに
  • ユーザーDBC
  • 自分自身に対してこの権限をWITH GRANT OPTION付きで持つユーザーまたはデータベースの所有者
  • 権限が付与されるデータベースまたはユーザーに対してこの権限をWITH GRANT OPTION付きで持つデータベースまたはユーザー

プロシージャ固有の権限の使用上の注意

次のルールがプロシージャ固有の権限に適用されます。
  • CREATE PROCEDUREおよびCREATE EXTERNAL PROCEDUREは、データベース レベルまたはユーザー レベルだけの権限です。
  • ALTER PROCEDURE、ALTER EXTERNAL PROCEDURE、DROP PROCEDURE、およびEXECUTE PROCEDUREは、データベース、ユーザー、または指定したプロシージャに対して許可されます。
  • オブジェクト タイプのPROCEDUREをプロシージャ名の修飾子として指定した場合は、権限の付与時にDROP PROCEDUREおよびEXECUTE PROCEDUREの短縮形としてDROPおよびEXECUTEを使用できます。

PROCEDUREがオブジェクト名の前に指定されていない場合:

発行されたリクエスト リクエストの効果
GRANT EXECUTE オブジェクトはマクロと想定されます。 その名前で指定されるマクロが存在しない場合は、エラーが返されます。
GRANT DROP エラーが返されます。

ALTER EXTERNAL PROCEDUREおよびCREATE EXTERNAL PROCEDURE権限

外部プロシージャには、ALTER EXTERNAL PROCEDUREおよびCREATE EXTERNAL PROCEDURE権限も必要です。ALTER PROCEDURE (外部形式)文を使用するには、ALTER EXTERNAL PROCEDURE権限が必要です。

ALTER PROCEDURE(外部形式)文は、既存の外部プロシージャを再コンパイルするために使用できます。ALTER EXTERNAL PROCEDURE権限の目的は、現行のライブラリが破損した場合、またはシステムが再ロードされた場合に、DBAが実行モードを変更したり既存の外部プロシージャを再コンパイルできるようにすることです。この権限は、DBA以外のユーザーに付与しないでください。

ALTER EXTERNAL PROCEDURE権限を持ったDBAは、ALTER PROCEDURE(外部形式)リクエストを使用して、特定の外部プロシージャの実行モードを変更し、非保護モードで直接実行するか(EXECUTE NOT PROTECTED)、または保護モード内の別のプロセスとして実行できます(EXECUTE PROTECTED)。

ALTER EXTERNAL PROCEDUREは、データベースまたはユーザーの作成時にユーザーに自動的に付与される権限ではありません。代わりに、DBAはこの権限を保持して(初期状態ではユーザーDBCだけがこの権限を暗黙的に保持)、デバッグが完了し実働が保証された外部プロシージャだけに対して、この権限を適正に割り当てます。その結果、EXECUTE PROTECTEDからEXECUTE NOT PROTECTEDに実行モードが変わります。

影響を注意深く検討して、ALTER PROCEDURE (外部形式)文を実行する権限をユーザーに付与する必要があります。検討が十分でない場合、その権限が不正に使用されたときに、システムの整合性が容易に失われてしまうおそれがあります。

ALTER EXTERNAL PROCEDURE権限は、特定の外部プロシージャ、またはデータベースやユーザー全体に付与できます。

<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

CREATE EXTERNAL PROCEDURE権限

サイトの外部プロシージャをコーディングするように明示的に割り当てられたユーザー以外のどのユーザーにも、CREATE EXTERNAL PROCEDURE権限を付与しないでください。明示的に割り当てられたユーザーであっても、この権限は最も信頼できるプログラマに限定して付与する必要があります。さらに、外部プロシージャのテストを十分に行なって、システムに障害を生じさせないことを検証する必要があります。

ユーザーまたはデータベースの作成時に、システムが自動的にCREATE EXTERNAL PROCEDUR権限を付与することはありません。また、データベースに対してCREATE EXTERNAL PROCEDUREが暗黙的に付与されることもありません(ただし、所有者が自身に対するこの権限をWITH GRANT OPTION付きで明示的に持っている場合は例外です)。

この機能は、CREATE MACRO権限の場合とは異なります(データベースまたはユーザーの作成時に、システムはCREATE MACROを自動的に付与し、所有者もこの権限を暗黙的に保持します)。

外部プロシージャは、非保護モードで動作中はシステムの一部として動作するのに対して、保護モードの外部プロシージャは、tdatuserという名前の一般ユーザーとして別のプロセスで動作します。

詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

例: CREATE EXTERNAL PROCEDURE権限の付与

次の例は、ユーザーasst_dbaに外部プロシージャを作成する権限を付与します。

     GRANT CREATE EXTERNAL PROCEDURE
     ON DATABASE classify
     TO asst_dba;