GLOP権限 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ制御言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/jlw1513306913964.ditamap
dita:ditavalPath
ja-JP/jlw1513306913964.ditaval
dita:id
B035-1149
Product Category
Software
Teradata Vantage

Teradata Databaseは、データベースまたはユーザーの作成時に、どのGLOP権限も自動的には付与しません。GLOP権限は、WITH GRANT OPTION権限を処理するユーザーが付与する場合でも、明示的に付与する必要があります。

GLOP権限には、次の3つの権限があります。

  • CREATE GLOPは、CREATE GLOP SET文を実行する権限が付与されたユーザーに対して、新しいGLOPセットを作成できるようにします。
  • DROP GLOPは、DROP GLOP SET文を実行する権限が付与されたユーザーに対して、既存のGLOPセットを削除できるようにします。DROP GLOPは、GLOPセットの作成者および所有者に自動的に付与されます。
  • GLOP MEMBERは、外部ルーチンが、その外部ルーチンを含むユーザーまたはデータベースに含まれていないGLOPセットにアクセスできるようにします。具体的には、GLOP MEMBERは、関数、メソッドまたはプロシージャの定義で参照するGLOPセットの句が、MEMBER OF GLOP SET句で指定したGLOPセットを使用できるようにします。

キーワードGLOPそのものを指定することで、CREATE GLOP権限とDROP GLOP権限の両方を表わすこともできます。単一のキーワードによる複数の権限を参照してください。

GLOP権限の付与

ある企業において、sales_bonus UDFによって特別なsales GLOPにアクセスしようと考えています。ユーザーJoeは、SYSLIBにUDFとGLOPの両方を作成します。これを実現するには、次のリクエストを実行する必要があります。

WITH GRANT OPTION付きのユーザーは、次に示すGRANTリクエストを実行する必要があります。

     GRANT GLOP ON syslib TO Joe;

例えば、JoeがSYSLIBに関数を作成する権限をすでに所有しているとすると、Joeは次のリクエストを実行するでしょう。

Joeは、最初にGLOPセット オブジェクトを作成して、GLOPを追加できるようにします。

     CREATE GLOP SET syslib.sales;

その後で、JoeはプロシージャGLOP_Addを呼び出してsales GLOPを追加し、それをSYSLIBに関連付けます。

     CALL DBCExtension.GLOP_Add('syslib.sales',...);

最後に、Joeは関数sales_bonusSYSLIBに作成します。

     CREATE FUNCTION syslib.sales_bonus( … )
       RETURNS DECIMAL(6,2)
         LANGUAGE C
         MEMBER OF GLOP SET syslib.sales
         PARAMETER STYLE SQL
         EXTERNAL;

SYSLIBは、パブリック データベースです。そのため、セキュリティ管理者はsales GLOPをfinanceデータベースに配置し、Finance部門にGLOPデータの作成責任を負わせることにしました。さらに、この管理者はUDFもfinanceデータベース内に格納しようと考えています。

これを実現するには、次のリクエストを実行する必要があります。

WITH GRANT OPTION付きのユーザーは、次に示すGRANTリクエストを実行する必要があります。

     GRANT GLOP ON finance TO finance;

その後で、ユーザーfinanceは、次のリクエストを実行する必要があります。

     CREATE GLOP SET sales;
     CALL DBCExtension.GLOP_Add('sales', … );
     GRANT GLOP MEMBER ON finance.sales TO finance;

ユーザーJoeは、financeデータベースに関数を作成します。その前に、Joeには、financeデータベースにUDFを作成するための権限が(それを付与できる権限を持つ人物から)付与されている必要があります。

     CREATE FUNCTION finance.sales_bonus( … )
       RETURNS DECIMAL(6,2)
         LANGUAGE C
         MEMBER OF GLOP SET finance.sales
         PARAMETER STYLE SQL
         EXTERNAL;