GRANT/REVOKEの順序および権限の期間 - 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

GRANT ALL ON object TO PUBLIC文が、DBCよりも低い階層の任意のユーザーによってオブジェクトに対して実行された場合は、GRANTリクエストが実行された後に作成されたユーザーも含めて、すべてのユーザーが、そのオブジェクトに対する権限を継承します。

その後、ユーザーDBCがREVOKE ALL ON object_name FROM DBCを発行した場合、REVOKEリクエストの後に作成されたユーザーには、そのオブジェクトに対する権限が与えられません。ただし、以前に作成されたすべてのユーザーは、REVOKE ALL ON object_name FROM PUBLICが発行されるまで権限を保持します。

例えば、次のようになります。

     .LOGON dbc.password

     CREATE USER sys_admin AS
     PERM=900000 PASSWORD=sys_admin;

     GRANT ALL
     ON sys_admin
     TO sys_admin
     WITH GRANT OPTION;

     .LOGON sys_admin,sys_admin

     CREATE USER dept AS
     PERM=500000 PASSWORD=dept;

     GRANT ALL
     ON dept
     TO dept
     WITH GRANT OPTION;

     .LOGON DEPT,DEPT

     CREATE USER user_1 AS
     PERM=100000 PASSWORD=user_1;

     .LOGON USER1,USER1

     CREATE TABLE table_1 (
       column_1 INTEGER,
       column_2 INTEGER)
     PRIMARY INDEX(column_1);

     INSERT table_1(1,2);

     INSERT table_1(3,4);

     GRANT ALL ON table_1
     TO ALL DBC;

     .LOGON dept,dept
     CREATE USER user_2 AS
     PERM=100000 PASSWORD=user_2;

     .LOGON user_2,user_2
     SELECT *
     FROM user_1.table_1;

table_1の行が、予想どおりに返されます。

     .LOGON dbc,password

     REVOKE ALL ON user_1.table_1
     FROM dbc;

     .LOGON dept,dept

     CREATE USER user_3 AS
     PERM=100000 PASSWORD=user_3;

     .LOGON user_3,user_3

     SELECT *
     FROM user_1.table_1;

user_3はREVOKEが発行された後に作成されたため、エラーが返されます。

     .LOGON user_2,user_2
     SELECT *
     FROM user_1.table_1;

table_1の内容が、予想どおりに返されます。