다른 명령
롤 생성 삭제 관리
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
(예제) 롤 생성 / 테이블 권한 부여 / 확인
- DBCAFE 유저에 테이블 생성
- RL_DBCAFE_ALL 롤을 생성
- DBCAFE 유저에 생성된 테이블의 CRUD 권한을 RL_DBCAFE_ALL롤에 부여
- RL_DBCAFE_ALL롤을 CYKIM 유저에게 부여
- 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('롤이름')