Data Base_Oracle/SQL

SQL_With Admin Option 시스템 권한 위임

pathas 2020. 1. 13. 17:06

With Admin Option_시스템 권한 위임

관리자가 권한의 일부를 임시로 빌려주는 것

§ 형식

[ SQL> grant 권한,,, to 계정,,,, [with admin option]; ]

※ 관리자로부터 부여받은 권한을 다른 계정에 부여할 수 있게 됨

# 예제 _ 시나리오

① 관리자 계정으로 3개의 계정 생성(aaa, bbb, ccc), 암호도 계정명과 동일하게 부여
▷ [ SQL> create user aaa identified by aaa;
create user bbb identified by bbb;
create user ccc identified by ccc; ]

 

② aaa계정에 로그인, 테이블을 생성 권한 부여
ccc에는 권한을 부여하지 않음
▷ [ SQL> grant connect, resource to aaa; // ccc X ]

 

③ bbb 계정에 관리자 권한 일부 위임
▶ [ SQL> grant connect, resource to bbb with admin option;
권한이 부여되었습니다. ]

 

※ bbb 계정이 부여받은 권한을 다른 계정에게도 임시로 부여할 수 있는 권한

 

④ ccc 계정 로그인 에러
[ SQL > conn ccc/ccc;
ERROR:
ORA-01045: user CCC lacks CREATE SESSION privilege; logon denied
경고: 이제는 ORACLE에 연결되어 있지 않습니다. ]

 

※ ccc 계정에 로그인 권한이 없기 때문에 발생하는 에러

 

⑤ aaa계정에서 ccc에게 권한 부여
▷ [ SQL> conn aaa/aaa;
grant connect, resource to ccc;
1행에 오류:
ORA-01031: 권한이 불충분합니다 ]

 

※ aaa에게는 with admin option이 부여되지 않았기 때문에 발생하는 에러

 

⑥ bbb가 ccc에게 필요한 권한 부여
▶ [ SQL> conn bbb/bbb;
grant connect, resource to ccc;
권한이 부여되었습니다. ]

 

※ with admin option 을 부여받은 bbb는
자신이 받은 권한(connect, resourece)을 타 계정에 부여할 수 있음

 

⑦ ccc계정으로 로그인한 뒤 테이블을 생성하고 한 개의 값을 입력
▷ [ SQL> conn ccc/ccc;
연결되었습니다.
SQL> create table abc(id number);
테이블이 생성되었습니다.
SQL> insert into abc values(1);
1 개의 행이 만들어졌습니다. ]

ID
1

※ bbb에게 권한을 부여받은 뒤 정상적으로 로그인, 테이블 생성을 할 수 있게 됨


With Admin Option 회수

§ 형식

[ SQL> revoke 권한,,, from 계정,,,; ]

※ with admin option을 회수하는 것이 아니라 옵션을 부여받은 계정의 권한을 회수

# 예제

① 관리자계정으로 bbb에게 부여되었던 권한 회수
[ SQL> revoke connect, resource from bbb;
권한이 취소되었습니다. ]

 

② ccc계정으로 로그인
[ SQL> conn ccc/ccc
연결되었습니다. ]

 

※ bbb의 권한이 회수되었다고 해도 ccc에게 부여되었던 권한이 취소되지 않음


관리자 계정이 임시로 일반 계정에 부여한 권한을 다른 계정에도 부여할 수 있도록 하는 with admin option에 대해 알아보았습니다.

예제가 시나리오 형태로 되어있기 때문에 전체적인 흐름을 파악하시면 좋을 것 같습니다.