GLOP権限 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/lmb1556233084626.ditamap
dita:ditavalPath
ja-JP/lmb1556233084626.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;