본문 바로가기
Oracle/운영

권한과 롤

by 취미툰 2020. 11. 3.
반응형

오라클은 유저에게 권한을 부여하여 다른 유저가 소유하고 있는 특정 객체(Object)를 액세스하여 조회하거나 조작(DML) 할수 있게 해줍니다.

권한은 크게 객체 권한(Object Privileges)와 시스템 권한(System Privileges)으로 나누어 집니다.

 

객체 권한(Object Privileges)란?

객체의 소유자는 해당 객체에 대한 모든 권한을 가지고 있으며, 이 권한은 취소될 수 없습니다.

테이블이나 뷰,시퀀스,프로시저,함수 또는 패키지 중 지정된 한 객체에 특별한 작업을 수행할 수 있게 합니다.

객체 소유자는 다른 사용자에게 특정 객체권한을 부여 할 수 있습니다.

ADMIN권한이 있는 사용자는 권한이 부여 된 객체를 소유하지 않은 사용자로부터 권한을 부여 및 취소할 수 있습니다.

PUBLIC으로 권한을 부여하면 회수할 때도 PUBLIC으로 해야 합니다.

WITH GRANT OPTION옵션은 ROLE에 권한을 부여할 때는 사용할 수 없습니다.

 

사용 방법

--권한 부여 예제
Scott유저에게emp 테이블을 Select,Insert할수 있는 권한을 부여
Scott유저는 다른 유저에게 그 권한을 부여할 수 있음

SQL> grant SELECT,INSERT
	on EMP
    TO SCOTT
    WITH GRANT OPTION;

--권한 회수 예제
SCOTT 유저에게 부여한 emp 테이블에 대한 SELECT,INSERT 권한을 회수
만약 SCOTT유저가 다른 유저에게 SELECT,INSERT권한을 부여하였으면 그 권한들도 회수 됌

SQL> revoke SELECT,INSERT
	on EMP
    from SCOTT;

 

권한 오브젝트 타입 설명
DELETE Table 테이블 삭제를 가능하게 함
EXECUTE PL/SQL package, procedure or function PL/SQL 패키지,프로시저,함수를 직접 실행할 수 있게 함
FLUSH Cache group 사용자가 캐시 그룹을 비울 수 있도록 함
INDEX Table or materialized view 사용자가 테이블 또는 M View에 인덱스를 생성할 수 있음
INSERT Table or synonym 테이블 또는 시노님을 통한 테이블에 삽입을 할 수 있게 함
LOAD Cache group 사용자가 캐시 그룹을 로드할 수 있게 함
REFERENCES Table or materialized view 사용자가 테이블 또는 M View에 외래키 종속성을 생성할 수 있게 함
이 권한은 부모 테이블에 암묵적으로 SELECT 권한을 부여 함
REFRESH Cache group 사용자가 캐시 그룹을 새로 고칠수 있게함
SELECT Table, sequence, view, materialized view, or synonym 사용자가 테이블,시퀀스,뷰,M View 또는 시노님에서 조회할 수 있게 함
SELECT 권한은 사용자가 시퀀스에 대한 모든 작업을 수행 할 수 있도록 함
사용자는 원래 테이블에 대한 SELECT 권한을 명시적으로 부여하지 않고도 시노님 또는 뷰에 대한 SELECT 권한을 부여 받을 수 있음 
UNLOAD Cache group 사용자가 캐시 그룹을 언로드 할 수 있게함
UPDATE Table 테이블을 업데이트 할 수 있게 함

 

시스템 권한 (System Privileges)

시스템 권한은 데이터베이스에서 특정 작업을 수행할 수 있도록 합니다.

권한의 ANY 키워드는 사용자가 모든 스키마에서 권한을 가짐을 의미합니다.

객체의 소유자는 해당 객체에 대한 모든 객체 권한을 가지며 이러한 권한은 취소 할 수 없습니다.

인스턴스 관리자 또는 ADMIN 권한이 있는 사용자만 시스템 권한을 부여하거나 취소할 수 있습니다.

 

사용방법

--SYS 권한으로 접속합니다
SQL> conn / as sysdba

--SCOTT 사용자에게 사용자를 생성, 수정, 삭제할 수 있는 권한을 부여함
--SCOTT 사용자는 다른 사용자에게 그 권한을 부여할 수 있도록 함

SQL> grant CREATE USER,ALTER USER, DROP USER 
	to SCOTT
    with admin option;
    

--SCOTT 사용자에게 부여했던 권한들을 회수함
--SCOTT 사용자가 다른 사용자에게 이 권한을 부여하였더라도 회수 시 같이 회수 되지 않음
SQL> revoke CREATE USER,ALTER USER, DROP USER
	from SCOTT;
   

 

권한 설명
ADMIN 사용자가 체크포인트,백업,마이그레이션, 사용자 생성 및 삭제를 포함한 관리 작업을 수행할 수 있음
ALTER ANY CACHE GROUP 데이터에비스의 캐시 그룹을 변경할 수 있음
ALTER ANY INDEX 데이터베이스의 모든 인덱스를 변경할 수 있음
Note: ALTER INDEX문은 없습니다.
ALTER ANY MATERIALIZED VIEW 데이터베이스의 모든 M View를 변경할 수 있음
Note: ALTER MATERIALIZED VIEW문은 없습니다.
ALTER ANY PROCEDURE 데이터베이스의 PL/SQL 프로시저,함수,패키지를 변경할 수 있음
ALTER ANY SEQUENCE 데이터베이스의 모든 시퀀스를 변경할 수 있음
Note: ALTER SEQUENCE문은 없습니다.
ALTER ANY TABLE 데이터베이스의 모든 테이블을 변경할 수 있음
ALTER ANY VIEW 데이터베이스의 모든 뷰를 변경할 수 있음
Note: ALTER VIEW문은 없습니다.
CACHE_MANAGER 사용자가 캐시 그룹과 관련된 작업을 수행할 수 있음
CREATE ANY CACHE GROUP 데이터베이스의 모든 사용자가 소유한 캐시 그룹을 만들 수 있음
CREATE ANY INDEX 데이터베이스의 모든 테이블 또는 M View에 인덱스를 생성할 수 있음
CREATE ANY MATERIALIZED VIEW 데이터베이스의 모든 사용자가 소유한 M View를 생성할 수 있음
CREATE ANY PROCEDURE 데이터베이스의 모든 사용자가 소유한 PL/SQL 프로시저,함수 또는 패키지를 생성할 수 있음
CREATE ANY SEQUENCE 데이터베이스의 모든 사용자가 소유한 시퀀스를 만들 수 있음
CREATE ANY SYNONYM 데이터베이스의 모든 사용자가 소유한 private 시노님을 생성 할 수 있음
CREATE ANY TABLE 데이터베이스의 모든 사용자가 소유한 테이블을 만들 수 있음
CREATE ANY VIEW 데이터베이스의 모든 사용자가 소유한 뷰를 만들 수 있음
CREATE CACHE GROUP 사용자가 해당 사용자가 소유한 캐시 그룹을 만들 수 있음
CREATE MATERIALIZED VIEW 사용자가 해당 사용자가 소유한 M View를 만들 수있음
CREATE PROCEDURE 사용자가 해당 사용자가 소유한 PL/SQL 프로시저,함수 또는 패키지를 생성할 수 있음
CREATE PUBLIC SYNONYM Public 시노님을 생성할 수 있음
CREATE SEQUENCE 사용자가 해당 사용자가 소유한 시퀀스를 만들 수있음
CREATE SESSION 데이터베이스에 대한 유저 접속을 할 수 있게 함
CREATE SYNONYM private 시노님을 생성할 수 있음
CREATE TABLE 사용자가 해당 사용자가 소유한 테이블을 만들 수 있음
CREATE VIEW 사용자가 해당 사용자가 소유한 뷰를 만들 수 있음
DELETE ANY TABLE 데이터베이스의 모든 테이블에서 삭제(delete)할 수 있음
DROP ANY CACHE GROUP 데이터베이스에서 캐시 그룹을 삭제할 수 있음
DROP ANY INDEX 데이터베이스의 모든 인덱스를 삭제할 수 있음
DROP ANY MATERIALIZED VIEW 데이터베이스에서 M View를 삭제할 수 있음
DROP ANY PROCEDURE 데이터베이스에서 PL/SQL 프로시저,함수 또는 패키지를 삭제할 수 있음
DROP ANY SEQUENCE 데이터베이스에서 시퀀스를 삭제할 수 있음
DROP ANY SYNONYM 데이터베이스에서 모든사용자가 소유한 시노님을 삭제할 수 있음
DROP ANY TABLE 데이터베이스에서 모든사용자가 소유한 테이블을 삭제(Drop)할 수있음
DROP ANY VIEW 데이터베이스에서 뷰를 삭제할 수 있음
DROP PUBLIC SYNONYM Public 시노님을 삭제할 수 있음
EXECUTE ANY PROCEDURE 데이터베이스에서 PL/SQL 프로시저,함수 또는 패키지를 실행할 수 있음
FLUSH ANY CACHE GROUP 데이터베이스의 캐시 그룹을 플러시 할 수 있음
INSERT ANY TABLE 데이터베이스의 모든 테이블에 삽입할 수 있음. 또한 사용자는 Public 또는 Private 시노님을 사용하여 해당 테이블에 삽입할 수 있음
LOAD ANY CACHE GROUP 데이터베이스의 모든 캐시 그룹을 로드할 수 있음
REFRESH ANY CACHE GROUP 데이터베이스의 캐시 그룹을 refresh할 수 있음
SELECT ANY SEQUENCE 데이터베이스에 있는 시퀀스
SELECT ANY TABLE 데이터베이스의 모든 테이블,뷰,M view, 시노님에서 조회할 수 있음
UNLOAD ANY CACHE GROUP 사용자가 데이터베이스에서 캐시 그룹을 언로드 할 수 있음
UPDATE ANY TABLE 데이터베이스의 모든 테이블 또는 시노님을 업데이트 할 수 있음
XLA 사용자가 XLA판독기로 데이터베이스에 연결할 수 있음

 

권한 계층(Privilege hierarchy)

 

일부 권한은 다른 권한을 포함하고 있습니다. ADMIN권한은 다른 모든 권한을 포함하고 있습니다.

 CREATE ANY TABLE 시스템 권한은 CREATE TABLE 객체 권한을 포함하고 있습니다.

PrivilegeConfers these privileges

권한 포함하고 있는 권한들
ADMIN All other privileges including CACHE_MANAGER
CREATE ANY INDEX INDEX (any table or materialized view)
CREATE ANY MATERIALIZED VIEW CREATE MATERIALIZED VIEW
CREATE ANY PROCEDURE CREATE PROCEDURE
CREATE ANY SEQUENCE CREATE SEQUENCE
CREATE ANY SYNONYM CREATE SYNONYM
CREATE ANY TABLE CREATE TABLE
CREATE ANY VIEW CREATE VIEW
DELETE ANY TABLE DELETE (any table)
EXECUTE ANY PROCEDURE EXECUTE (any procedure)
INSERT ANY TABLE INSERT (any table)
SELECT ANY SEQUENCE SELECT (any sequence)
SELECT ANY TABLE SELECT (any table, view or materialized view)
UPDATE ANY TABLE UPDATE (any table)

 

롤(ROLE)

롤이란 사용자가 허가할 수 있는 권한들의 집합입니다.

롤을 이용하면 권한부여와 회수를 쉽게 할 수 있습니다.

롤은 CREATE ROLE권한을 가진 유저에 의해 생성됩니다.

한 유저가 여러개의 ROLE을 ACCESS할 수 있고, 여러 사용자에게 같은 ROLE을 부여할 수 있습니다.

시스템 권한을 부여하고 취소할때와 동일한 명령을 사용하여 사용자에게 부여하고, 취소할 수 있습니다.

롤에 롤을 부여할 수 있습니다.

오라클 데이터베이스를 설치하면 기본적으로 CONNECT,RESOURCE,DBA 롤이 제공됩니다.

 

 

롤 생성 예제

-- ROLE을 생성 합니다.
SQL>CREATE ROLE manager;

-- ROLE에 권한을 부여 합니다.
SQL>GRANT create session, create table TO manager;

-- 권한이 부여된ROLE을 USER나 ROLE에 부여 합니다.
SQL>GRANT manager TO scott, test;

 

권한&롤 관련 딕셔너리 뷰

 

DBA_TAB_PRIVS : 객체 권한관련 정보를 볼 수 있는 뷰

DBA_SYS_PRIVS : 시스템권한관련 정보를 볼 수 있는 뷰

DBA_ROLE_PRIVS : 데이터베이스 내의 모든 사용자와 ROLE에 부여된 ROLE을 볼 수 있는 뷰

DBA_ROLES : 데이터베이스에 존재하는 롤을 볼 수 있는 뷰

ROLE_SYS_PRIVS : 사용자와 ROLE에 부여된 시스템 권한을 볼 수 있는 뷰

ROLE_TAB_PRIVS : 사용자와 ROLE에 부여된 객체 권한을 볼 수 있는 뷰

USER_TAB_PRIVS_MADE : 현재 사용자의 객체에 부여한 객체 권한

USER_TAB_PRIVS_RECD : 현재 사용자의 객체에 부여한 객체 권한

USER_COL_PRIVS_MADE : 현재 사용자 객체의 특정 컬럼에 부여한 객체 권한

USER_COL_PRIVS_RECD : 현재 사용자 객체의 특정 컬럼에 부여한 객체 권한

 

출처 : docs.oracle.com/database/121/TTSQL/privileges.htm#TTSQL345

출처 : www.gurubee.net/lecture/1009

출처 : www.gurubee.net/lecture/1008

출처 : www.gurubee.net/lecture/1010

 

반응형

'Oracle > 운영' 카테고리의 다른 글

LOB 데이터 DB Link 조회 시 에러  (0) 2020.11.12
RAC(Real Application Cluster) 아키텍쳐와 프로세스  (0) 2020.11.10
Oracle ASMFD(ASM Filter Driver)  (0) 2020.10.30
DBA_USERS  (0) 2020.10.29
RAC DB 운영매뉴얼  (0) 2020.10.27

댓글