1. System privilege
- 사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 등의 권한을 포함한다.
- 데이터베이스 관리 권한이 있는 사용자가 부여할 수 있다.
- ANY 키워드가 들어 있는 권한은 소유자에 상관없이 사용 가능한 권한을 의미한다.
- 종류
시스템 권한 분류 | 시스템 권한 | 설명 |
USER | CREATE USER | 사용자 생성 권한 |
ALTER USER | 생성된 사용자의 정보 수정 권한 | |
DROP USER | 생성된 사용자의 삭제 권한 | |
SESSION | CREATE SESSION | 데이터베이스 접속 권한 |
ALTER SESSION | 데이터베이스 접속 상태에서 환경 값 변경 권한 | |
TABLE | CREATE TABLE | 자신의 테이블 생성 권한 |
CREATE ANY TABLE | 임의의 스키마 소유 테이블 생성 권한 | |
ALTER ANY TABLE | 임의의 스키마 소유 테이블 수정 권한 | |
DROP ANY TABLE | 임의의 스키마 소유 테이블 삭제 권한 | |
INSERT ANY TABLE | 임의의 스키마 소유 테이블 데이터 삽입 권한 | |
UPDATE ANY TABLE | 임의의 스키마 소유 테이블 데이터 수정 권한 | |
DELETE ANY TABLE | 임의의 스키마 소유 테이블 데이터 삭제 권한 | |
SELECT ANY TABLE | 임의의 스키마 소유 테이블 데이터 조회 권한 | |
INDEX | CREATE ANY INDEX | 임의의 스키마 소유 테이블의 인덱스 생성 권한 |
ALTER ANY INDEX | 임의의 스키마 소유 테이블의 인덱스 수정 권한 | |
DROP ANY INDEX | 임의의 스키마 소유 테이블의 인덱스 삭제 권한 | |
VIEW | (생략) | 뷰와 관련된 여러 권한 |
SEQUENCE | (생략) | 시퀀스와 관련된 여러 권한 |
SYNONYM | (생략) | 동의어와 관련된 여러 권한 |
PROFILE | (생략) | 사용자 접속 조건 지정과 관련된 여러 권한 |
ROLE | (생략) | 권한을 묶은 그룹과 관련된 여러 권한 |
1.1 System privilege grant
/* System privilege grant */
GRANT [시스템권한] TO [USER / ROLE / PUBLIC]
[WITH ADMIN OPTION];
분류 | 설명 |
시스템권한 | - 시스템 권한을 지정한다. - 한 번에 여러 종류의 권한을 부여하려면 쉼표로 구분하여 권한 이름을 여러 개 명시하면 된다. - 필수값이다. |
USER / ROLE / PUBLIC | - 권한을 부여하려는 대상을 지정한다. - USER 이름과 ROLE을 지정할 수 있다. - 여러 USER 또는 ROLE에 적용할 경우 쉼표로 구분한다. - PUBLIC은 현재 오라클 데이터베이스의 모든 사용자에게 권한을 부여하겠다는 의미이다. - 필수값이다. |
WITH ADMIN OPTION | - 현재 GRANT문을 통해 부여받은 권한을 다른 사용자에게 부여할 수 있는 권한도 함께 부여받는다. - 현재 사용자의 권한이 사라져도, 권한을 재부여한 다른 사용자의 권한은 유지된다. |
/* System privilege grant 예시 */
GRANT RESOURCE, CREATE SESSION, CREATE TABLE TO ORCLSTUDY;
1.2 System privilege revoke
/* System privilege revoke */
REVOKE [시스템권한] FROM [USER / ROLE / PUBLIC];
2. Object privilege
- 특정 사용자가 생성한 테이블, 인덱스, 뷰, 시퀀스 등과 관련된 권한이다.
- 종류
객체 권한 분류 | 객체 권한 | 설명 |
TABLE | ALTER | 테이블 변경 권한 |
DELETE | 테이블 데이터 삭제 권한 | |
INDEX | 테이블 인덱스 생성 권한 | |
INSERT | 테이블 데이터 삽입 권한 | |
REFERENCES | 참조 데이터 생성 권한 | |
SELECT | 테이블 조회 권한 | |
UPDATE | 테이블 데이터 수정 권한 | |
VIEW | DELETE | 뷰 데이터 삭제 권한 |
INSERT | 뷰 데이터 삽입 권한 | |
REFERENCES | 참조 데이터 생성 권한 | |
SELECT | 뷰 조회 권한 | |
UPDATE | 뷰 데이터 수정 권한 | |
SEQUENCE | ALTER | 시퀀스 수정 권한 |
SELECT | 시퀀스의 CURRVAL과 NEXTVAL 사용 권한 | |
PROCEDURE | (생략) | 프로시저 관련 권한 |
FUNCTION | (생략) | 함수 관련 권한 |
PACKAGE | (생략) | 패키지 관련 권한 |
2.1 Object privilege grant
/* Object privilege grant */
GRANT [객체권한 / ALL PRIVILEGES]
ON [스키마.객체이름]
TO [USER / ROLE /PUBLIC]
[WITH GRANT OPTION];
분류 | 설명 |
객체권한 | - 객체 권한을 지정한다. - 한 번에 여러 종류의 권한을 부여하려면 쉼표로 구분하여 권한 이름을 여러 개 명시하면 된다. - ALL PRIVILEGES는 객체의 모든 권한을 부여함을 의미한다. - 필수값이다. |
스키마.객체이름 | - 권한을 부여할 대상 객체를 명시한다. - 필수값이다. |
USER / ROLE / PUBLIC | - 권한을 부여하려는 대상을 지정한다. - USER 이름과 ROLE을 지정할 수 있다. - 여러 USER 또는 ROLE에 적용할 경우 쉼표로 구분한다. - PUBLIC은 현재 오라클 데이터베이스의 모든 사용자에게 권한을 부여하겠다는 의미이다. - 필수값이다. |
WITH GRANT OPTION | - 현재 GRANT문을 통해 부여받은 권한을 다른 사용자에게 부여할 수 있는 권한도 함께 부여받는다. - 현재 사용자의 권한이 사라지면, 권한을 재부여한 다른 사용자의 권한도 함께 사라진다. |
/* Object privilege grant 예시 */
GRANT SELECT, INSERT
ON TEMP
TO ORCLSTUDY;
2.2 Object privilege revoke
/* Object privilege revoke */
REVOKE [객체권한 / ALL PRIVILEGES] --필수
ON [스키마.객체이름] --필수
FROM [USER / ROLE / PUBLIC] --필수
[CASCADE CONSTRAINTS / FORCE];
/* Object privilege revoke 예시 */
REVOKE SELECT, INSERT
ON TEMP
FROM ORCLSTUDY;
3. ROLE
- 여러 종류의 권한을 묶어 놓은 그룹을 의미한다.
- 롤을 사용하면 여러 권한을 한 번에 부여하고 해제할 수 있으므로 권한 관리 효율을 높일 수 있다.
3.1 Predefined roles
- 오라클 데이터베이스를 설치할 때 기본으로 제공된다.
- 종류
종류 | 설명 및 예시 |
CONNECT ROLE | - 사용자가 데이터베이스에 접속하는데 필요한 CREATE SESSION 권한을 가지고 있다. - 오라클 9i 버전까지는 8가지 권한을 가지고 있었지만, 10g 버전부터는 CREATE SESSION 권한만 있다. |
RESOURCE ROLE | - 사용자가 테이블, 시퀀스를 비롯한 여러 객체를 생성할 수 있는 기본 시스템 권한을 묶어 놓은 롤이다. - 사용 테이블 스페이스 영역을 무제한 사용 가능하게 해주는 UNLIMITED TABLESPACE 권한을 가지고 있었지만, 엄밀한 관리가 필요한 경우에는 적절하지 않은 이슈로 인해 오라클 12C 버전부터는 RESORUCE ROLE에 UNLIMITED TABLESPACE 권한을 부여하지 않는다. - CREATE TRIGGER, CREATE SEQUENCE, CREATE TYPE, CREATE PROCEDURE, CREATE CLUSTER, CREATE OPERATOR, CREATE INDEXTYPE, CREATE TABLE |
DBA ROLE | - 데이터베이스를 관리하는 시스템 권한을 대부분 가지고 있다. - 오라클 11g 버전을 기준으로 202개의 권한을 가지고 있다. |
3.2 User roles
- 필요에 의해 직접 권한을 포함시킨 롤을 의미한다.
- 절차
① CREATE ROLE문으로 롤을 생성한다.
CREATE ROLE ROLESTUDY;
② GRANT 명령어로 생성한 롤에 권한을 포함시킨다.
GRANT CONNECT, RESORUCE, CREATE VIEW ,CREATE SYNONYM
TO ROLESTUDY;
③ GRANT 명령어로 권한이 포함된 롤을 특정 사용자에게 부여한다.
GRANT ROLESTUDY
TO ORCLSTUDY;
④ 부여된 롤과 권한을 확인한다.
SELECT * FROM USER_SYS_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
/* 데이터 관리 권한을 가졌을 경우 */
SELECT * FROM DBA_SYS_PRIVS;
SELECT * FROM DBA_ROLE_PRIVS;
⑤ REVOKE 명령어로 롤을 취소시킨다.
REVOKE ROLESTUDY FROM ORCLSTUDY;
⑥ DROP 명령어로 롤을 삭제한다. 롤을 삭제하면 해당 롤을 부여받은 모든 사용자의 롤이 취소된다.
DROP ROLE ROLESTUDY;
참고
- 『오라클로 배우는 데이터베이스 입문』
'Database' 카테고리의 다른 글
Full Table Scan, Index Scan 차이점 (0) | 2021.12.06 |
---|---|
PL/SQL Block Structure (0) | 2021.11.04 |
User (0) | 2021.11.02 |
Constraint (0) | 2021.11.01 |
Synonym (0) | 2021.10.28 |