ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL_WITH GRANT OPTION 객체 권한 위임
    Data Base_Oracle/SQL 2020. 1. 13. 17:34

    WITH GRANT OPTION_객체 권한 위임

    § 형식

    [ SQL> grant 권한종류,,, on 테이블명 / 뷰명, / 객체명,,, to 계정명,,, with grant option; ]

     

    ※ 다른 계정에서 부여받은 권한을 또 다른 계정에 부여할 수 있게 됨

    # 예제 _ 시나리오

    관리자 계정에서 test4/test4, test5/test5 계정 생성
    [ SQL> create user test4 identified by test4;
    사용자가 생성되었습니다.

    SQL> create user test5 identified by test5;
    사용자가 생성되었습니다. ]

     

    ② test4, test5 계정에 로그인, 테이블 생성 권한 부여
    [ SQL> grant connect,resource to test4, test5;
    권한이 부여되었습니다. ]

     

    scott 계정에서 b_dept2 테이블에 대한 select, insert, update 권한을
    with grant option과 함께 test4에 부여
    [ SQL> grant select, insert, update on b_dept2 to test4 wi
    th grant option;
    권한이 부여되었습니다.
    ]

     

    scott 계정에서 b_dept2 테이블에 대한 select, update 권한을 test5에 부여
    [ SQL> grant select, update on b_dept2 to test5;
    권한이 부여되었습니다.
    ]

     

    test4 계정에서 b_dept2테이블에 대한 insert 권한을 test5에 부여
    [ SQL> grant insert on
    scott.b_dept2 to test5;
    권한이 부여되었습니다.
    ]

     

    ※ b_dept2는 scott의 테이블이기 때문에 소유자명.테이블명으로 작성해야 함 !!

     

    ※ create synonym 권한이 없기 때문에 동의어 생성 불가

     

    test5 계정에서 scott.b_debt2 테이블에 (60, 'IMSI', 'BUCHEON') 레코드 입력
    [ SQL> insert into scott.b_dept2 values(60, 'IMSI', 'BUCHEON');
    1 개의 행이 만들어졌습니다.

    select * from b_dept2; ]

    DEPTNO DNAME LOC
    10 ACCOUNTING NEW YORK
    ... ... ...
    60 IMSI BUCHEON

    test5계정에서 scott.b_dept2테이블의 DEPTNO가 60인 레코드의 LOC을 'DALLAS'로 변경
    [ SQL> update scott.b_dept2 set loc='DALLAS' where deptno=60;
    1 행이 갱신되었습니다. ]

    DEPTNO DNAME LOC
    10 ACCOUNTING NEW YORK
    ... ... ...
    60 IMSI BUCHEON

    ※ scott에게 부여받은 update, select와 test4에게 부여받은 insert 모두 가능


    WITH GRANT OPTION 회수

    § 형식

    [ SQL> revoke 권한명,,, on 객체명,,, from 계정명,,,; ]

     

    ※ A 계정에서 B에게 with grant option으로 부여했던 권한을 회수하면
    B가 A에게 위임받아 C에게 부여했던 권한도 같이 회수됨

    # 예제 _ 시나리오

    scott계정에서 b_dept2테이블에 대해 test4에 부여했던 권한 회수
    [ SQL> revoke insert, update, select on b_dept2 from test4;
    권한이 취소되었습니다.
    ]

     

    ※ scott 계정이기 때문에 b_dept2만 작성

     

    test5 계정에서 scott.b_dept2테이블에 (70, 'TEST', 'JEJU') 레코드 입력
    [ SQL> insert into scott.b_dept2 values(70, 'TEST', 'JEJU');
    1행에 오류:
    ORA-01031: 권한이 불충분합니다
    ]

     

    ※ scott계정이 test4에 부여한 권한을 회수하면 test4가 test5에 부여한 권한도 같이 회수됨


    객체 권한을 위임할 때 사용하는 with grant option에 대해 알아보았습니다.

    특정 계정으로부터 with grant option과 함께 부여받은 객체 권한을 다른 계정에도 부여할 수 있게됩니다.

    계정 내의 객체를 다른 계정과 공유해서 작업해야 하는 경우에 유용하게 사용할 수 있을 것입니다.

     

    댓글

Designed by Tistory.