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

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の内容が、予想どおりに返されます。