権限を付与したユーザの権限を剥奪した場合の挙動

この記事では権限を付与したユーザの権限を剥奪した場合の挙動について解説します。

 WITH ADMIN OPTIONを付与したシステム権限を剥奪した場合

user1に対してシステム権限をWITH ADMIN OPTIONを使用して付与します。

SQL> GRANT CREATE TABLE TO user1 WITH ADMIN OPTION;
権限付与が成功しました。

user1で接続し、user2に対してシステム権限を付与します。

SQL> show user
ユーザーは"USER1"です。
SQL> GRANT CREATE TABLE TO user2;
権限付与が成功しました。

この状態でuser1の権限を剥奪してもuser2の権限は付与されたままになります。

SQL> REVOKE CREATE TABLE FROM user1;
取消しが成功しました。
SQL> SELECT * FROM dba_sys_privs WHERE GRANTEE LIKE 'USER%' ORDER BY 1;
GRANTEE                PRIVILEGE                       ADMIN_OPTION COMMON INHERITED
---------------------- ------------------------------- ------------ ------ ---------
USER1                  CREATE SESSION                  NO           NO     NO
USER2                  CREATE SESSION                  NO           NO     NO
USER2                  CREATE TABLE                    NO           NO     NO


 WITH GRANT OPTIONを付与したオブジェクト権限を剥奪した場合

user1に対してオブジェクト権限をWITH GRANT OPTIONを使用して付与します。

SQL> GRANT SELECT ON test.emp to user1 WITH GRANT OPTION;
権限付与が成功しました。

user1で接続し、user2に対してオブジェクト権限を付与します。

SQL> show user
ユーザーは"USER1"です。
SQL> GRANT SELECT ON test.emp to user2;
権限付与が成功しました。

この状態でuser1の権限を剥奪するとuser2の権限も自動的に剥奪されます。

SQL> REVOKE SELECT ON test.emp FROM user1;
取消しが成功しました。
SQL> SELECT * FROM dba_tab_privs WHERE GRANTEE LIKE 'USER%' ORDER BY 1;
レコードが選択されませんでした。