메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

ORACLE 사용자 롤 생성

DB CAFE

롤 생성 삭제 관리

ROLE 생성

CREATE ROLE RL_MANAGER;

ROLE에 권한 부여

GRANT create session, create table 
   TO RL_MANAGER;

권한이 부여된 ROLE을 USER나 ROLE에 부여

GRANT RL_MANAGER
   TO scott, test;

롤에 부여된 권한 회수

REVOKE RL_MANAGER
  FROM 유저명

디폴트 롤 (default role, 부여된 롤에 대한 일시 정지 )

alter user 유저명
default role 롤1, 롤2;

-- or
-- 해당 유저에게 부여된 모든 롤을 사용하되 롤3은 제외한다.
alter user 유저명
   default role all except 롤3;
  • 유저에게 롤1, 롤2, 롤3이 부여되어 있다고 할 때, 위 명령 실행시 유저는 롤1과 롤2만 쓰고 나머지 롤3은 일시적으로 안쓴다.


  • 해당 유저에게 부여된 모든 롤을 사용한다.
alter user 유저명 
   default role all;
  • 해당 유저에게 부여된 모든 롤을 사용하지 않는다.
SQL> alter user 유저명
        default role none;

셋 롤(set role)

  • 유저가 일시적으로 자기가 부여받은 롤 범위 내에서 사용과 미사용을 제어 가능.
SQL> 
set role 롤1;   -- 해당 유저는 롤1을 사용함.
set role all;  -- 해당 유저는 부여받은 롤을 모두 사용함.

롤 생성 후 바로 적용이 되지 않을때

  • 일단 현재 세션을 종료 후 재접속 해본다.

현재 세션에 활성화 된 롤 체크

-- Check active roles in the current session
SELECT * FROM SESSION_ROLES;

롤 삭제

DROP ROLE RL_MANAGER

(예제) 롤 생성 / 테이블 권한 부여 / 확인

  1. DBCAFE 유저에 테이블 생성
  2. RL_DBCAFE_ALL 롤을 생성
  3. DBCAFE 유저에 생성된 테이블의 CRUD 권한을 RL_DBCAFE_ALL롤에 부여
  4. RL_DBCAFE_ALL롤을 CYKIM 유저에게 부여
  5. CYKIM 유저가 DBCAFE 유저 테이블 CRUD 처리 확인
-- 1. DBCAFE 유저에 테이블 생성 
CREATE TABLE DBCAFE.TB_DBCAFE (A NUMBER);
INSERT INTO DBCAFE.TB_DBCAFE VALUES (1);
COMMIT;

-- 2. 롤 생성
CREATE ROLE RL_DBCAFE_ALL;
-- 세션 생성권한 부여 
GRANT CREATE SESSION TO RL_DBCAFE_ALL;

-- 3.DBCAFE.TB_DBCAFE 테이블 CRUD 권한을 RL_DBCAFE_ALL 에게 부여 
GRANT SELECT,INSERT,UPDATE,DELETE ON DBCAFE.TB_DBCAFE TO RL_DBCAFE_ALL ; 

-- 4. 일반사용자 CYKIM 에게 RL_DBCAFE_ALL 롤 부여  
GRANT RL_DBCAFE_ALL TO CYKIM;

-- 5.일반사용자 CYKIM유저가 DBCAFE.TB_DBCAFE 테이블에 CRUD 되는지 확인
INSERT INTO DBCAFE.TB_DBCAFE
VALUES (2); 
COMMIT;

SELECT * FROM DBCAFE.TB_DBCAFE;


롤/시스템권한/테이블권한 조회

-- Check the roles granted to the user
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'MY_NEW_USER';

-- Check the privileges granted to the role
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'MY_NEW_ROLE';
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'MY_NEW_ROLE';

롤 활성화

-- Set the role to be active
SET ROLE my_new_role;

롤 조회 딕셔너리 뷰

딕셔너리 뷰 설명
DBA_ROLES 롤 목록 조회
ROLE_ROLE_PRIVS 롤에게 부여된 롤 권한 조회
ROLE_SYS_PRIVS 롤에게 부여된 시스템 권한 조회
ROLE_TAB_PRIVS 롤에게 부여된 테이블 권한 조회
DBA_ROLE_PRIVS 조회가능한 롤 목록
USER_TAB_PRIVS_RECD 유저에게 부여된 오브젝트 권한
USER_COL_PRIVS_MADE 유저 오브젝트 컬럼에 부여된 오브젝트 권한
USER_COL_PRIVS_RECD 특정 컬럼에 대해 유저에게 부여된 오브젝트 권한

Object privileges granted to the user on specific columns

SESSION_ROLES 현재 세션에 활성화 된 롤 조회

유저에 부여된 롤 조회

SELECT *
  FROM DBA_ROLE_PRIVS
 WHERE GRANTEE ='유저명'


롤에 부여된 시스템 권한조회

- ROLE_SYS_PRIVS 롤에 부여된 시스템 권한 조회
  • SELECT ANY DICTIONARY ....
  • CREATE SEQUENCE / ANY SYNONYM ....
  • DROP ....
  • ALTER SESSION .....
SELECT *
  FROM DBA_SYS_PRIVS
 WHERE GRANTEE IN('롤이름')

롤에 부여된 테이블 권한 조회

SELECT *
  FROM ROLE_TAB_PRIVS
 WHERE ROLE IN('롤이름')