롤(ROLE)
롤 개념
- 일반 사용자가 데이터베이스를 이용하기 위한 공통적인 권한(데이터베이스 접속권한, 테이블 생성, 수정,
삭제, 조회 권한, 뷰 생성 권한)을 그룹화
- 이러한 권한을 그룹화하여 롤로 정의해서 사용자에게 롤에 대한 접근 권한을 부여하면 권한 관리를 효과적으로 함
롤 부여
- 활성화 또는 비활성화를 통한 일시적 권한 부여 철회 가능
- 암호 부여 가능
- 사용자 또는 다른 롤에 대한 접근 권한 부여 및 철회 가능
- 자신에 대한 롤 부여나 순환적인 부여는 불가능
- 롤은 특정 소유자나 특정 객체에 속하지 않음
사전에 정의된 롤
- 사용자 접속, 자원 생성, DBA 등과 같이 공통적으로 사용되는 권한은 사전에 롤로 정의하여 제공됨
- 사전에 정의된 롤도 부여, 철회 가능
사전에 정의된 롤의 종류

- CONNECT 롤 : 사용자가 데이터베이스에 접속하여 세션을 생성할 수 있는 권한
테이블 또는 뷰와 같은 객체를 생성할 수 있는 권한
- RESOURCE 롤 : 사용자에게 자신의 테이블, 시퀀스, 프로시져, 트리거 객체 생성 할 수 있는 권한
사용자 생성시 CONNECT 롤과 RESOURCE 롤을 부여
- DBA 롤 : 시스템 자원의 무제한적인 사용이나 시스템 관리에 필요한 모든 권한
DBA 권한을 다른 사람에게 부여할 수 있음
모든 사용자 소유의 CONNECT, RESOURCE, DBA 권한을 포함한 모든 권한을 부여 및 철회 가능
롤 생성
- CREATE ROLE 명령문으로 생성, 롤에 암호 부여 가능, 롤 이름은 사용자나 다른 롤과 중복될 수 없음

롤 생성 예시 (hr_clerk 와 hr_mgr 롤 생성)
CREATE ROLE hr_clerk;
--hr_mgr 롤 생성 및 암호 지정
CREATE ROLE hr_mgr
IDENTIFIED BY manager;
롤 권한 부여
롤에 시스템 권한이나 객체 권한 또는 다른 롤을 부여 가능 , GRANT 명령문 사용

롤 권한 부여 예시
--hr_mgr 롤에 create session 시스템 권한을 부여하라
grant create session TO hr_mgr;
--scott 사용자의 student 테이블의 모든 칼럼에 대한 select,insert,delete 객체 권한을 hr_clerk에 부여하라
grant select, insert, delete ON scott.student TO hr_clerk;
롤에 롤 부여
롤은 사용자 또는 다른 롤에게 롤 부여 가능
롤에 롤 부여 예시
-- 롤에 롤 권한 부여
grant hr_clerk TO hr_mgr;
롤 조회
롤에 부여한 시스템 권한 조회
-- 롤에 부여한 시스템 권한 조회
select * from role_sys_privs;
