"ORACLE 사용자 롤 생성 삭제 관리"의 두 판 사이의 차이
DB CAFE
잔글 (Dbcafe님이 ORACLE 사용자 롤 생성 문서를 ORACLE 사용자 롤 생성 삭제 관리 문서로 이동했습니다) |
(→디폴트 롤 (default role, 부여된 롤에 대한 일시 정지 )) |
||
(같은 사용자의 중간 판 15개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | == | + | == 롤 생성 삭제 관리 == |
+ | === ROLE 생성 === | ||
<source lang=sql> | <source lang=sql> | ||
− | CREATE ROLE | + | 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 | + | TO RL_MANAGER; |
</source> | </source> | ||
− | ==권한이 | + | ===권한이 부여된 ROLE을 USER나 ROLE에 부여=== |
<source lang=sql> | <source lang=sql> | ||
− | GRANT | + | GRANT RL_MANAGER |
TO scott, test; | TO scott, test; | ||
</source> | </source> | ||
− | == 롤에 부여된 권한 회수 == | + | === 롤에 부여된 권한 회수 === |
<source lang=sql> | <source lang=sql> | ||
− | REVOKE | + | REVOKE RL_MANAGER |
FROM 유저명 | FROM 유저명 | ||
</source> | </source> | ||
− | == 롤 | + | === 디폴트 롤 (default role, 부여된 롤에 대한 일시 정지 )=== |
<source lang=sql> | <source lang=sql> | ||
− | + | alter user 유저명 | |
+ | default role 롤1, 롤2; | ||
+ | |||
+ | -- or | ||
+ | -- 해당 유저에게 부여된 모든 롤을 사용하되 롤3은 제외한다. | ||
+ | alter user 유저명 | ||
+ | default role all except 롤3; | ||
+ | </source> | ||
+ | * 유저에게 롤1, 롤2, 롤3이 부여되어 있다고 할 때, 위 명령 실행시 유저는 롤1과 롤2만 쓰고 나머지 롤3은 일시적으로 안쓴다. | ||
+ | |||
+ | |||
+ | * 해당 유저에게 부여된 모든 롤을 사용한다. | ||
+ | <source lang=sql> | ||
+ | alter user 유저명 | ||
+ | default role all; | ||
+ | </source> | ||
+ | |||
+ | * 해당 유저에게 부여된 모든 롤을 사용하지 않는다. | ||
+ | <source lang=sql> | ||
+ | SQL> alter user 유저명 | ||
+ | default role none; | ||
+ | </source> | ||
+ | |||
+ | === 셋 롤(set role) === | ||
+ | * 유저가 일시적으로 자기가 부여받은 롤 범위 내에서 사용과 미사용을 제어 가능. | ||
+ | <source lang=sql>SQL> | ||
+ | set role 롤1; -- 해당 유저는 롤1을 사용함. | ||
+ | set role all; -- 해당 유저는 부여받은 롤을 모두 사용함. | ||
</source> | </source> | ||
+ | === 롤 생성 후 바로 적용이 되지 않을때 === | ||
+ | * 일단 현재 세션을 종료 후 재접속 해본다. | ||
− | == 유저에 부여된 롤 조회 == | + | ==== 현재 세션에 활성화 된 롤 체크 ==== |
+ | <source lang=sql> | ||
+ | -- Check active roles in the current session | ||
+ | SELECT * FROM SESSION_ROLES; | ||
+ | </source> | ||
+ | |||
+ | === 롤 삭제 === | ||
+ | <source lang=sql> | ||
+ | DROP ROLE RL_MANAGER | ||
+ | </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 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" | ||
+ | |- | ||
+ | ! 딕셔너리 뷰 !! 설명 | ||
+ | |- | ||
+ | | 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 || | ||
+ | |} | ||
+ | |||
+ | === 유저에 부여된 롤 조회 === | ||
<source lang=sql> | <source lang=sql> | ||
SELECT * | SELECT * | ||
35번째 줄: | 150번째 줄: | ||
</source> | </source> | ||
− | == 롤에 부여된 시스템 권한조회 == | + | |
+ | === 롤에 부여된 시스템 권한조회 === | ||
: - ROLE_SYS_PRIVS 롤에 부여된 시스템 권한 조회 | : - ROLE_SYS_PRIVS 롤에 부여된 시스템 권한 조회 | ||
48번째 줄: | 164번째 줄: | ||
</source> | </source> | ||
− | == 롤에 부여된 테이블 권한 조회 == | + | === 롤에 부여된 테이블 권한 조회 === |
<source lang=sql> | <source lang=sql> | ||
SELECT * | SELECT * |
2024년 7월 4일 (목) 18:36 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
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 디폴트 롤 (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;
1.6 셋 롤(set role)[편집]
- 유저가 일시적으로 자기가 부여받은 롤 범위 내에서 사용과 미사용을 제어 가능.
SQL>
set role 롤1; -- 해당 유저는 롤1을 사용함.
set role all; -- 해당 유저는 부여받은 롤을 모두 사용함.
1.7 롤 생성 후 바로 적용이 되지 않을때[편집]
- 일단 현재 세션을 종료 후 재접속 해본다.
1.7.1 현재 세션에 활성화 된 롤 체크[편집]
-- Check active roles in the current session
SELECT * FROM SESSION_ROLES;
1.8 롤 삭제[편집]
DROP ROLE RL_MANAGER
1.9 (예제) 롤 생성 / 테이블 권한 부여 / 확인[편집]
- 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;
1.9.1 롤/시스템권한/테이블권한 조회[편집]
-- 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.9.2 롤 활성화[편집]
-- Set the role to be active
SET ROLE my_new_role;
2 롤 조회 딕셔너리 뷰[편집]
딕셔너리 뷰 | 설명 |
---|---|
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 |
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('롤이름')