GRANT ~ WITH ADMIN OPTIONの実験
【環境】
・Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
GRANT文はユーザー(またはロール)に権限を付与することができますが、
WITH ADMIN OPTIONを付け外しした際にどのような動きをするのか、
ちょっと試してみました。
なお基本説明は極力省きますので、記述が足りない部分は公式ドキュメントや
他の方のブログなどで確認してください。
ユーザーの準備
ユーザー | 内容 |
---|---|
gruser_x | 何も権限を持っていないユーザー |
gruser_y | 何も権限を持っていないユーザー |
SQL> sho user ユーザーは"SYS"です。 SQL> CREATE USER gruser_x IDENTIFIED BY tiger; ユーザーが作成されました。 SQL> CREATE USER gruser_y IDENTIFIED BY tiger; ユーザーが作成されました。
システム権限の付与
確認に使用するシステム権限は「create session」とします。
WITH ADMIN OPTION付きのGRANTを試してみましょう。
SQL> sho user ユーザーは"SYS"です。 SQL> GRANT create session TO gruser_x WITH ADMIN OPTION; 権限付与が成功しました。
gruser_xにcreate session権限が付与されたため、gruser_xは
データベースに接続できます。
加えてWITH ADMIN OPTION 付きであるため、gruser_xはgruser_yに対して
create session権限を付与することができます。
SQL> CONN gruser_x/tiger@pdb1 接続されました。 SQL> GRANT create session TO gruser_y; 権限付与が成功しました。
ちなみにWITH ADMIN OPTIONがないと、他ユーザーへ付与できません。
SQL> CONN gruser_x/tiger@pdb1 接続されました。 SQL> GRANT create session TO gruser_y; GRANT create session TO gruser_y * 行1でエラーが発生しました。: ORA-01031: 権限が不足しています
システム権限の剥奪
gruser_xは他ユーザーへ権限を付与できたわけですが、
もし付与権限を剥奪されたら、gruser_yに付与した権限はどうなるのでしょう?
SQL> sho user ユーザーは"SYS"です。 SQL> REVOKE create session FROM gruser_x; 取消しが成功しました。
SQL> conn gruser_y/tiger@pdb1 接続されました。
gruser_xの権限が剥奪されても、gruser_yには影響ないようです。
【関連記事】
tmts.hatenablog.jp