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