행위

"ORACLE 사용자 롤 생성 삭제 관리"의 두 판 사이의 차이

DB CAFE

(유저에 부여된 롤 조회)
(롤 조회 딕셔너리 뷰)
 
(같은 사용자의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
== ROLE을 생성 ==
+
== 생성 삭제 관리 ==
 +
=== ROLE 생성 ===
 
<source lang=sql>
 
<source lang=sql>
CREATE ROLE manager;
+
CREATE ROLE RL_MANAGER;
 
</source>
 
</source>
  
==ROLE에 권한을 부여 ==
+
===ROLE에 권한을 부여 ===
 
<source lang=sql>
 
<source lang=sql>
 
GRANT create session, create table  
 
GRANT create session, create table  
   TO manager;
+
   TO RL_MANAGER;
 
</source>
 
</source>
  
==권한이 부여된ROLE을 USER나 ROLE에 부여==
+
===권한이 부여된ROLE을 USER나 ROLE에 부여===
 
<source lang=sql>
 
<source lang=sql>
GRANT manager
+
GRANT RL_MANAGER
 
   TO scott, test;
 
   TO scott, test;
 
</source>
 
</source>
  
== 롤에 부여된 권한 회수 ==
+
=== 롤에 부여된 권한 회수 ===
 
<source lang=sql>
 
<source lang=sql>
REVOKE RL_XXX
+
REVOKE RL_MANAGER
 
   FROM 유저명
 
   FROM 유저명
 
</source>
 
</source>
  
== 롤 삭제 ==
+
=== 롤 삭제 ===
 
<source lang=sql>
 
<source lang=sql>
DROP ROLE RL_XXX
+
DROP ROLE RL_MANAGER
 
</source>
 
</source>
  
 +
===  (예제) 롤 생성 / 테이블 권한 부여 / 확인  ===
 +
# DBCAFE 유저에 테이블 생성
 +
# RL_DBCAFE_ALL 롤을 생성
 +
# DBCAFE 유저에 생성된 테이블의 CRUD 권한을  RL_DBCAFE_ALL롤에 부여
 +
# RL_DBCAFE_ALL롤을 CYKIM 유저에게 부여
 +
# CYKIM 유저가 DBCAFE 유저 테이블 CRUD 처리 확인
  
== 유저에 부여된 롤 조회 ==
+
<source lang=sql>
 +
-- 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;
 +
</source>
 +
 
 +
=== 롤 생성 후 바로 적용이 되지 않을때 ===
 +
* 일단 현재 세션을 종료 후 재접속 해본다.
 +
==== 현재 세션에 활성화 된 롤 체크 ====
 +
<source lang=sql>
 +
-- Check active roles in the current session
 +
SELECT * FROM SESSION_ROLES;
 +
</source>
 +
==== 롤/시스템권한/테이블권한 조회 ====
 +
<source lang=sql>
 +
-- 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';
 +
</source>
 +
==== 롤 활성화 ====
 +
<source lang=sql>
 +
-- Set the role to be active
 +
SET ROLE my_new_role;
 +
</source>
 +
 
 +
== 롤 조회 딕셔너리 뷰 ==
 +
{| class="wikitable"
 +
|-
 +
! 딕셔너리 뷰  !! 설명
 +
|-
 +
| ROLE_SYS_PRIVS || 롤에게 부여된 시스템 권한 조회
 +
|-
 +
| ROLE_TAB_PRIVS || 롤에게 부여된 테이블 권한 조회
 +
|-
 +
| USER_ROLE_PRIVS || 유저가 조회가능한 롤 목록
 +
|-
 +
| USER_TAB_PRIVS_RECD || 유저에게 부여된 오브젝트 권한
 +
|-
 +
| USER_COL_PRIVS_MADE || 유저 오브젝트 컬럼에 부여된 오브젝트 권한
 +
|-
 +
| USER_COL_PRIVS_RECD || 특정 컬럼에 대해  유저에게 부여된 오브젝트 권한
 +
Object privileges granted to the user on specific columns
 +
|-
 +
| USER_SYS_PRIVS || 유저에게 부여된 시스템 권한
 +
|}
 +
 
 +
=== 유저에 부여된 롤 조회 ===
 
<source lang=sql>
 
<source lang=sql>
 
SELECT *
 
SELECT *
35번째 줄: 110번째 줄:
 
</source>
 
</source>
  
== 롤에 부여된 SYS 권한조회 ==
+
 
 +
=== 롤에 부여된 시스템 권한조회 ===
 +
: - ROLE_SYS_PRIVS 롤에 부여된 시스템 권한 조회
 +
 
 
* SELECT ANY DICTIONARY ....
 
* SELECT ANY DICTIONARY ....
 
* CREATE SEQUENCE / ANY SYNONYM ....
 
* CREATE SEQUENCE / ANY SYNONYM ....
46번째 줄: 124번째 줄:
 
</source>
 
</source>
  
 
+
=== 롤에 부여된 테이블 권한 조회 ===
== 롤에 부여된 테이블 권한 조회 ==
 
 
<source lang=sql>
 
<source lang=sql>
 
SELECT *
 
SELECT *

2024년 5월 30일 (목) 23:22 기준 최신판

thumb_up 추천메뉴 바로가기


1 롤 생성 삭제 관리[편집]

1.1 ROLE 생성[편집]

CREATE ROLE RL_MANAGER;

1.2 ROLE에 권한을 부여[편집]

GRANT create session, create table 
   TO RL_MANAGER;

1.3 권한이 부여된ROLE을 USER나 ROLE에 부여[편집]

GRANT RL_MANAGER
   TO scott, test;

1.4 롤에 부여된 권한 회수[편집]

REVOKE RL_MANAGER
  FROM 유저명

1.5 롤 삭제[편집]

DROP ROLE RL_MANAGER

1.6 (예제) 롤 생성 / 테이블 권한 부여 / 확인[편집]

  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;

1.7 롤 생성 후 바로 적용이 되지 않을때[편집]

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

1.7.1 현재 세션에 활성화 된 롤 체크[편집]

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

1.7.2 롤/시스템권한/테이블권한 조회[편집]

-- 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';

1.7.3 롤 활성화[편집]

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

2 롤 조회 딕셔너리 뷰[편집]

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

Object privileges granted to the user on specific columns

USER_SYS_PRIVS 유저에게 부여된 시스템 권한

2.1 유저에 부여된 롤 조회[편집]

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


2.2 롤에 부여된 시스템 권한조회[편집]

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

2.3 롤에 부여된 테이블 권한 조회[편집]

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