-
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 with 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과 함께 부여받은 객체 권한을 다른 계정에도 부여할 수 있게됩니다.
계정 내의 객체를 다른 계정과 공유해서 작업해야 하는 경우에 유용하게 사용할 수 있을 것입니다.
'Data Base_Oracle > SQL' 카테고리의 다른 글
SQL_RECYCLE BIN | DATA DICTIONARY (0) 2020.01.13 SQL 데이터 삭제 | TRUNCATE, DROP TABLE [PURGE] (0) 2020.01.13 SQL_OBJECT PRIVILEGE 개요 & DATA DICTIONARY (0) 2020.01.13 SQL_With Admin Option 시스템 권한 위임 (0) 2020.01.13 SQL_ROLE 생성, 부여, 삭제 (0) 2020.01.10