with grant option & with admin option 차이

2008. 5. 14. 18:19Oracle/Oracle Study

반응형

with grant option 과 with admin option에 대해 테스트를 하기 전에 

쉽게 이해하실수 있도록 기본적인 셋팅을 하도록 하겠습니다.

 

C:\> sqlplus "/as sysdba"

 

1. 사용자 생성(USER_1, USER_2)

SQL> create user user_1 identified by user_1 default tablespace users;

사용자가 생성되었습니다.

SQL> create user user_2 identified by user_2 default tablespace users;

사용자가 생성되었습니다.

 

2. 접속 권한 및 간단한 권한 주기

SQL> grant create session, create table, create view to user_1;

권한이 부여되었습니다.

SQL> grant create session, create table to user_2;

권한이 부여되었습니다.

 

이제 with grant option 과 with admin option 을 알아보도록 하겠습니다.

 

(1) with grant option

 

기본적으로 scott 계정은 다들 가지고 계시니 scott 계정을 들어가보도록 하겠습니다.

SQL> conn scott/tiger

연결되었습니다.

 

scott이 user_1에게 emp 테이블을 select 할수 있는 권한을 with grant option을 써서 부여 하도록 합니다.

SQL> grant select on emp to user_1 with grant option;

권한이 부여되었습니다.

SQL> select * from user_tab_privs
  2  where table_name='EMP';

GRANTEE  OWNER     TABLE_NAME    GRANTOR         PRIVILEGE        GRA HIE
---------- ---------- --------------- --------------- --------------- ---- ---
USER_1     SCOTT      EMP                 SCOTT             SELECT            YES NO

 

 

scott에게 받은 권한을 똑같이 user_2에게 부여합니다.

SQL> conn user_1/user_1
연결되었습니다.
SQL> grant select on scott.emp to user_2 with grant option;

권한이 부여되었습니다.

SQL> select * from user_tab_privs
  2  where table_name='EMP';

GRANTEE    OWNER      TABLE_NAME GRANTOR          PRIVILEGE       GRA HIE
---------- ---------- --------------- --------------- --------------- ---- ---
USER_1     SCOTT      EMP                 SCOTT             SELECT            YES NO
USER_2     SCOTT      EMP                 USER_1            SELECT            YES NO

 

USER_TAB_PRIVS 테이블은 누구의 소유이며 권한자 및 권한을 부여 받은 자를 확인 할 수 있습니다.

 

이제 부여한 권한을 다시 회수 할 것입니다. 어떻게 회수가 되는지 확인해 보시길 바랍니다.

 

SQL> conn scott/tiger
연결되었습니다.
SQL> revoke select on emp from user_1;

권한이 취소되었습니다.

 

SQL> conn user_1/user_1;
연결되었습니다.
SQL> select * from user_tab_privs
  2  where table_name='EMP';

선택된 레코드가 없습니다.

 

SQL> conn user_2/user_2;
연결되었습니다.
SQL> select * from user_tab_privs
  2  where table_name='EMP';

선택된 레코드가 없습니다.

 

※ scott이 user_1의 권한 revoke 하였지만, user_1이 user_2에게 부여한 권한도 같이 회수가 되는 것을 볼 수 있습니다.

 

(2) with admin option

 

SQL> conn /as sysdba

연결되었습니다.

 

SQL> grant alter session to user_1 with admin option;

권한이 부여되었습니다.

 

SQL> select * from dba_sys_privs where grantee like 'USER%';

GRANTEE    PRIVILEGE             ADM
---------- -------------------  ---
USER_1     CREATE VIEW          NO
USER_1     CREATE TABLE        NO
USER_1     ALTER SESSION       YES
USER_1     CREATE SESSION    NO
USER_2     CREATE TABLE       NO
USER_2     CREATE SESSION   NO

6 개의 행이 선택되었습니다.

 

SQL> conn user_1/user_1
연결되었습니다.
SQL> grant alter session to user_2 with admin option;

권한이 부여되었습니다.

SQL> select * from user_sys_privs where username like 'USER%';

USERNAME                   PRIVILEGE            ADM
----------------------- ------------------ ---
USER_1                         CREATE VIEW       NO
USER_1                         CREATE TABLE     NO
USER_1                         ALTER SESSION    YES
USER_1                         CREATE SESSION  NO

 

SQL> conn user_2/user_2
연결되었습니다.
SQL> select * from user_sys_privs where username like 'USER%';

USERNAME                    PRIVILEGE            ADM
----------------------- ------------------ ---
USER_2                         CREATE TABLE     NO
USER_2                         ALTER SESSION    YES
USER_2                         CREATE SESSION  NO

SQL>

 

위 테이블을 보시면 ADM 컬럼에 YES로 나와있는 것을 볼수 있습니다.

 

이제 GRANT 권한을 회수한 것처럼 똑같이 해보겠습니다.

 

SQL> conn /as sysdba

SQL> revoke alter session from user_1;

권한이 취소되었습니다.

SQL> select * from dba_sys_privs where grantee like 'USER%';

GRANTEE    PRIVILEGE       ADM
---------- ---------------  ---
USER_1     CREATE VIEW     NO
USER_1     CREATE TABLE    NO
USER_1     CREATE SESSION  NO
USER_2     CREATE TABLE    NO
USER_2     ALTER SESSION   YES
USER_2     CREATE SESSION  NO

 

※ dba_sys_privs를 보시면 user_2의 권한은 그대로 남아있고 user_1의 권한 회수 된것을 볼수 있습니다.

 

결론을 내리자면 with grant option 은 revoke 시 다른사용자에게도 부여한 권한을 같이 회수하지만 with admin option은 특정 사용자의 권한만 회수가 되고 나머지 다른사용자에게 부여된 권한은 회수가 되지 않습니다.

 

사용된 테이블 : user_tab_privs

                    : dba_sys_privs

                    : user_sys_privs

 

내용은 길지만 차근차근 따라하신다면 그렇게 긴 내용은 아닙니다.

업무 중에 할려니 힘드네요..ㅋㅋㅋ

감사합니다.

반응형

'Oracle > Oracle Study' 카테고리의 다른 글

Row Migration  (0) 2008.11.30
10g Archive Mode로 변경  (0) 2008.10.01
Rollup & Cube & Grouping 차이  (0) 2008.05.16
view에 사용되는 with check option  (0) 2006.10.20
오라클 아스키로 특수문자 업데이트  (0) 2006.10.16