DB/DB Basic

[DB] 데이터베이스 권한(GRANT, REVOKE) [Oracle]

IT록흐 2021. 6. 25. 08:07
반응형

 

데이터베이스 권한은 크게 시스템 권한 객체 권한으로 나뉜다 (Oracle DBMS 기준). 시스템 권한은 DB를 구성하는 시스템과 관련된 권한이다. 사용자를 생성한다던가 테이블이나 오라클 DBMS의 경우 테이블스페이스 생성과 같이, 시스템을 구성하는 권한을 의미한다. 시스템 권한은 중요하므로 데이터베이스 관리자 권한이 있는 계정만 접근 가능하다.(SYS, SYSTEM)

 

시스템 권한은 시스템을 구성하는 요소를 생성하는 권한이라면 생성된 요소를 조작하는 권한 객체권한이라 부를 수 있다. 데이터베이스의 객체란 데이터를 저장할 수 있는 논리적 단위를 의미한다. 대표적으로 테이블, 뷰, 인덱스 등이 있다. 그러므로 데이터가 저장되는 논리적 단위의 조작 범위에 따라서 권한이 부여된다. 이번 포스팅에서는 객체권한을 중심으로 다루어 보겠다.

 

DBA (데이터베이스 관리자)

모든 객체에 대한 모든 권한을 가짐( 생성, 연산, 제거, 변경 )

다른 사용자에게 객체에 대한 권한 부여 가능

 

객체 소유자(Owner)

DBA로부터 특정 객체의 생성 권한을 부여받은 자.

생성한 객체에 대한 모든 권한을 가짐

해당 객체에 대한 권한 부여와 권한 회수가 가능

 

기타 사용자

객체에 대한 사용권한이 없음

권한을 부여 받을 수 있음

DML 권한 부여 (GRANT)

출처 입력

GRANT select, delete ON student TO kim;

 

GRANT 권한 ON 객체명 TO 사용자

 

권한에는 SELECT, DELETE, UPDATE 같은 DML 권한을 부여할 수 있다. SQL표준에는 DML 권한만 명시되어 있지만 Oracle를 포함한 일부 DBMS는 DDL 권한도 부여할 수 있다.

 

ON : DML의 적용 객체를 ON 뒤에 쓴다.

TO : 권한을 부여할 대상을 TO 뒤에 쓴다. 여러 사용자를 명시할 수 있다.

 

- 필드 권한 부여

 

GRANT select(stu_id) ON student TO kim;

 

student 테이블 안에 있는 stu_id 필드의 SELECT 연산의 권한을 kim에게 부여하는 것이다. 이렇듯 테이블 안의 필드를 선택하여 권한 부여를 할 수 있다.

 

- 모든 사용자에게 권한 부여

 

GRANT select ON student TO public;

 

모든 사용자에게 student테이블의 select 연산을 부여하는 것이다.

 

- 모든 권한을 부여

 

GRANT all privileges ON student TO lee;

 

lee에게 student 테이블의 모든 권한을 부여하는 것이다.

 

참조(REFERENCES) 권한 부여

 

객체의 소유자(Owner)는 본인 객체에 대해서만 권한을 갖는다. 만약 다른 사람 소유의 객체를 참조할 일이 있다면 해당 객체의 소유자로부터 REFERENCES 권한을 부여받아야 참조할 수 있다.

 

GRANT REFERENCES (dept_id) ON department TO kim;

GRANT REFERENCES 참조될 테이블의 기본키 ON 참조될 테이블 TO 사용자

 

'권한 전파' 권한 부여

 

GRANT select ON student TO kim WITH GRANT OPTION;

 

student 테이블의 select권한을 kim에게 부여하면서 student 테이블의 select 권한을 다른 사람에게 부여할 수 있는 권한을 부여.

 

GRANT select ON student TO chang;

 

해당 명령을 kim이 실행가능하다. chang은 WITH GRANT OPTION이 없으니 다른 사람에게 권한을 전파할 수 없다. 권한 전파가 가능한 만큼 남용되면 심각한 문제를 야기한다.

REVOKE ( 권한 회수 )

출처 입력

다른 사람에게 부여한 권한을 회수하기 위한 명령이다.

 

REVOKE select ON student FROM kim;

 

REVOKE를 통해 권한을 회수할 수 있다. 권한 회수는 '연쇄적'으로 일어난다. lee -> kim -> chang, 이런 순서로 select 권한이 부여되었고 lee가 kim의 select 권한을 회수했다면 자동으로 chang의 select 권한까지 회수가 된다.

 

 


참고자료

 

Understanding of Database

저자 : 이상구, 장재영, 김한준, 정재헌

출판 : 이한미디어발매2012.08.20.

 

 

 

 

반응형

'DB > DB Basic' 카테고리의 다른 글

[DB] 개념적 설계 모델  (0) 2021.06.25
[DB] 데이터베이스 권한(ROLE) [Oracle]  (0) 2021.06.25
[DB] 무결성 (Integrity)이란?  (0) 2021.06.25
[DB] SQL3 (Oracle)  (0) 2021.06.25
[DB] SQL2 (Oracle)  (0) 2021.06.25