데이터베이스에 보관 및 관리되는 데이터는 대부분 데이터를 소유한 특정 단체 또는 기업에게 재산 이상의 가치를 가지는 경우가 많다. 따라서 데이터를 안전하게 보관하고 특정 데이터에 대해서 관련된 사용자만 데이터를 사용 및 관리할 수 있는 보안 장치가 필요하다. 사용자 이름과 패스워드를 통해 데이터베이스 접속을 허가하는 것이 그 첫 번째이다. 하지만 특정 사용자 정보를 통해 데이터베이스에 접속하는 것만으로 데이터베이스의 모든 데이터를 사용할 수 있다면 여전히 데이터 안전을 보장하기는 어려울 것이다. 따라서 데이터베이스는 접속 사용자에 따라 접근할 수 있는 데이터 영역과 권한을 지정해 줄 수 있다. 오라클에서는 권한을 시스템 권한(system privilege)과 객체 권한(object privilege)으로 분류한다.
시스템 권한이란?
오라클 데이터베이스의 시스템 권한은 사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 등의 권한을 포함한다. 이런 내용은 데이터베이스 관리 권한이 있는 사용자가 부여할 수 있는 권한이다. 다음은 시스템 권한의 일부이며 ANY키워드가 들어 있는 권한은 소유자에 상관없이 사용 가능한 권한을 의미한다.
시스템 권한 부여
앞에서 CREATE USER문을 통해 사용자를 처음 생성한 후 데이터베이스 접속을 허가하기 위해 GRANT CREATE SESSION TO ORCLSTUDY; 명령어를 실행했다. 이 명령어는 ORCLSTUDY 사용자에게 CREATE SESSION 권한을 부여하겠다는 뜻이다. 이처럼 시스템 권한을 부여할 때 GRANT문을 사용한다. GRANT문을 사용하여 ORCLSTUDY 사용자에게 데이터베이스 접속 권한과 테이블 생성 권한을 부여해보자.
GRANT RESOURCE, CREATE SESSION, CREATE TABLE TO ORCLSTUDY;
이제 ORCLSTUDY 사용자로 데이터베이스 접속과 테이블 생성이 가능해졌음을 알 수 있다. 테이블을 만들면 INSERT, SELECT문 사용도 가능해진다.
GRANT에 사용된 RESOURCE 키워드
RESOURCE는 오라클 데이터베이스에서 제공하는 롤(role)중 하나이다. 롤은 여러 권한을 하나의 이름으로 묶어 권한 부여 관련 작업을 간편하게 하려고 사용한다. 앞에서 생성한 ORCLSTUDY사용자는 CREATE USER문에서 비밀번호만을 지정하여 생성했다. 만약 GRANT문에 RESOURCE 키워드를 지정하지 않는다면, ORCLSTUDY사용자에게 테이블 생성 권한을 부여해도 CREATE문으로 테이블을 생성할 수 없거나 테이블이 생성되더라도 INSERT문에서 오류메세지를 출력하며 동작하지 않는 경우가 생긴다.( 메세지 : 테이블 스페이스 USERS 권한이 없습니다.)
오류 메세지에서 테이블 스페이스는 테이블이 저장되는 공간을 의미하며 따로 지정하지 않으면 기본 테이블 스페이스 USERS가 할당된다. 위 오류는 스페이스의 사용 영역을 정하지 않아 발생하는 오류이다. RESOURCE 롤에는 사용자를 생성할 때 사용 테이블 스페이스의 영역을 무제한 사용가능 하게 해주는 권한이 포함되어 있기 때문에, RESOURCE 롤을 GRANT문에 추가하면 별 문제없이 사용자가 테이블을 생성하고 신규 데이터를 저장할 수 있다. 하지만 테이블 스페이스의 영역 사용에 한계를 두지않는 UNLIMITED TABLESPACE 권한은 엄밀한 관리가 필요한 경우에 적절하지 않으므로 사용자를 생성 및 수정할 때 QUOTA절로 사용 영역에 제한을 두기도 한다.
ALTER USER ORCLSTUDY QUOTA 2M ON USERS;
시스템 권한 취소
GRANT 명령어로 부여한 권한의 취소는 REVOKE 명령어를 사용한다.
REVOKE 시스템권한 FROM 사용자이름/롤이름/PUBLIC
객체 권한이란?
객체 권한은 특정 사용자가 생성한 인덱스 , 테이블, 뷰, 시퀀스 등과 관련된 권한이다. 예를들어 SCOTT 소유 테이블에 ORCLSTUDY 사용자가 SELECT나 INSERT등의 작업이 가능하도록 허용할 수 있다.
주로 사용하는 객체 권한
TABLE - ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE
VIEW - DELETE, INSERT, REFERENCES, SELECT, UPDATE
SEQUENCE - ALTER, SELECT
PROCEDURE
FUNCTION
PACKAGE
객체 권한 부여
객체 권한 부여 역시 GRANT문으로 가능하다.
GRANT [객체 권한/ ALL PRIVILEGE] ON [스키마.객체이름] TO [사용자이름/롤이름/PUBLIC];
사용자 소유가 아닌 테이블을 조회하거나 테이블 데이터를 삽입할때는 테이블을 소유한 계정을 꼭 적어준다.
객체 권한 취소
객체 권한의 취소도 시스템 권한과 마찬가지로 REVOKE문을 사용한다.
REVOKE [객체권한/ALL PRIVILEGE] ON [스키마.객체이름] FROM [사용자이름/롤이름/PUBLID];
'DATABASE > USER : 사용자, 권한, 롤 관리' 카테고리의 다른 글
01. 사용자 관리 (0) | 2024.03.28 |
---|