은은하게 코드 뿌시기

[DB] 권한관리 - 오라클 본문

Database -Mysql,Oracle

[DB] 권한관리 - 오라클

은은하게미친자 2022. 11. 9. 15:34
728x90

1. 권한관리 ?

데이터를 안전하게 보관하고 특정 데이터에 대해서 관련된 사용자만 데이터를 사용 및 관리할 수있게 하기위해 사용 하는것으로 , 접속 사용자에 따라 접근 할 수있는 데이터 영역과 권한을 지정 해주는 것을 말한다.

오라클에서 의 권한관리는 시스템 권한(System privilege)와 객체 권한(object privilege)로 가 있다.

 

1.1.1 시스템 권한

  • 사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 권한으로 이루어져있다.
  • 데이터 베이스 관리 권한이 있는 사용자가 부여할 수있는 권한이다.

 

*시스템 권한의 종류 중 일부  - 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.2 시스템 권한 부여 하기

GRANT CREATE SESSION TO 사용자이름;
GRANT CREATE SESSION TO ORCLSTUDY;

- ORCLSTUDY  사용자에게 CREATESESSION = 데이터베이스접속권한을 부여하겠다.
GRANT 시스템권한1,시스템권한2,.....시스템권한N TO [사용자이름/롤이름1, 롤이름2,.....롤이름N/PUBLIC]
[WITH ADMIN OPTION];
WITH ADMIN OPTION
:  GRANT문을 통해 부여받은 권한을 다른 사용자에게 부여할 수있는 권한도 함께 부여받습니다.
현재 사용자가 권한이 사라져도, 권한을 재부여한 다른 사용자의 권한은 유지됩니다.

권한 부여 예제

시스템 계정으로 접속하여 사용자 생성하기 CREATE USER 사용자이름
IDENTIFIED BYORCLE;
사용자 권한 부여하기 GRANT RESOURCE, CREATE SESSION,CREATE TABLE
TO 사용자이름;
더보기

GRANT에 사용된 RESOURCE 키워드

RESOURCE는 오라클 데이터베이스에서 제공하는 롤(role)중 하나이다.

롤은 여러권한을 하나의 이름으로 묶어 권한 부여 관련 작업을 간편하게 하려고 사용합니다.

GRANT에 RESOURCE를 지정하지 않는다면, 사용자에게 테이블 생성권한을 부여 해도 

CREATE문으로 테이블을 생성할 수 없거나 테이블이 생성되더라도 INSERT문에서  오류

다음과 같은 오류 메세지를 출력하며 동작하지 않는 경우가 발생합니다.

ORA-01950: 테이블 스페이스 USER 권한이 없습니다.

RESOURCE롤에는 사용자를 생성할 때 사용테이블 스페이스 영역을 무제한 사용 가능(UNLIMITED TABLESPACE)하게 해주는 권한이 있기 때문에, RESOURCE롤을 GRANT문에 추가하면 별 문제없이 사용자가 테이블을 생성하고 신규 데이터를 저장할 수 있습니다.

하지만 엄밀한 관리가 필요한 경우에 UNLIMITED TABLESPACE 권한은 적절하지 않으므로

사용자 생성 및 수정을 할 때 QUOTA절로 사용자 여역에 제한을 두기도합니다.

ALTER USER ORCLSTUDY
QUOTA 2M ON USERS;

 12C버전에서는 REOURCE롤에 UNLIMITED TABLESPACE 권한을 부여하지 않습니다.

설명은 11C기반의 설명이다.

 

그렇다면 19C 기반일때 사용자 생성의 예제는 다음과 같다.

 

19C 사용자 생성 

alter session set “_ORACLE_SCRIPT”=true; 세션변경 - C##을 안쓰기위한 작업
CREATE USER 사용자이름 IDENTIFIED BY "비밀번호"; 사용자 생성
GRANT CONNECT, RESOURCE TO 사용자이름;  DB접속 권한 과 자원을 사용할 수있는 권한 부여
ALTER USER 사용자이름
DEFAULT TABLESPACE USERS
QUOTA UNLIMITED ON USERS;
사용자 영역 역할제한 설정
-USERS 테이블 스페이스를 사용 할 수있도록 권한 부여

 

1.1.3 시스템 권한 취소

REVOKE [시스템 권한] FROM [사용자 이름/롤(Role) 이름/ PUBLIC];

 

1.2 객체권한 ?

object privilege, 특정 사용자가 생성한 테이블, 인덱스, 뷰, 시퀀스 등과  관련된 권한입니다.

 

1.2.1 객체권한의 종류

객체 권한 분류 객체 권한 설명
TABLE(테이블) ALTER 테이블 변경 권한
DELETE 테이블 데이터 삭제 권한
INDEX 테이블 인덱스 생성 권한
INSERT 테이블 데이터 삽입 권한
REFERENCES 참조 데이터 생성권한
SELECT 테이블 조회 권한
UPDATE 테이블 데이터 수정 권한
VIEW(뷰) DELETE 뷰 데이터 삭제 권한
INSERT 뷰 데이터 삽입 권한
REFERENCES 참조 데이터 생성 권한
SELECT 뷰 조회 권한
UPDATE 뷰 데이터 수정 권한
SEQUENCE(시퀀스) ALTER 시퀀스 수정 권한
  SELECT 시퀀스의 CURRVAL과 NEXTVAL 사용권한
PROCEDURE(프로시저) (생략) 프로시저 관련 권한
FUNCTION(함수) (생략) 함수 관련 권한
PACKAGE(패키지) (생략) 패키지 관련 권한

1.2.2 객체 권한 부여

GRANT [객체권한 / ALL PRIVILEGES]
ON [스키마.객체이름]
TO [사용자 이름/롤(role)이름/PUBLIC]
[WITH GRANT OPTION];

1.2.3 객체 권한 취소

REVOKE [객체권한/ ALL PRIVILEGES](필수)
ON [스키마.객체 이름](필수)
FROM [사용자이름/롤(Role) 이름/PUBLIC](필수)
[CASCADE CONSTRAINTS/FORCE](선택);
728x90
Comments