[DB] 권한 관리

권한 관리

DBMS는 보안을 위해 계정이 발급된 사용자가 로그인에 성공했을 경우만 접근이 가능하도록 하는 접근 제어 기능을 기본으로 제공한다.

권한의 부여

객체의 소유자가 사용자에게 객체에 대한 사용 권한을 부여하는 명령어

GRANT 권한 ON 객체 TO 사용자

권한 종류:

INSERT, DELETE, UPDATE, SELECT, REFERENCES
  1. 모든 사용자에게 똑같이 권한을 부여하고 싶다면 사용자를 지칭하는 대신 PUBLIC을 함께 사용한다.

  2. GRANT 명령어로 부여받은 권한은 기본적으로 다른 사용자에게 부여할 수 없지만 맨 처음 GRANT 명령어와 함께 WITH GRANT OPTION을 함께 사용하면 권한을 부여받은 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있다.

예제:

고객 테이블에 대한 검색 권한을 사용자 EUNGYU에게 부여

GRANT SELECT ON 고객 TO EUNGYU;

고객 테이블에 대한 삽입과 삭제 권한을 모든 사용자에게 부여

GRANT INSERT, DELETE ON 고객 TO PUBLIC;

고객 테이블을 구성하는 속성 중 등급과 적립금 속성에 대한 수정 권한을 사용자 EUNGYU에게 부여

GRANT UPDATE(등급, 적립금) ON 고객 TO EUNGYU;

고객 테이블에 대한 검색 권한을 WITH GRANT OPTION을 포함하여 사용자 EUNGYU에게 부여

GRANT SELECT ON 고객 TO EUNGYU WITH GRANT OPTION;

테이블을 생성할 수 있는 시스템 권한을 EUNGYU에게

GRANT CREATE TABLE TO EUNGYU;

뷰를 생성할 수 있는 시스템 권한을 eUNGYU에게

GRANT CREATE VIEW TO EUNGYU;

권한의 취소

다른 사용자에게 부여한 객체의 사용 권한을 취소하기 위한 REVOKE 문 형식

REVOKE 권한 ON 객체 FROM 사용자 CASCADE | RESTRICT;

권한을 내려준 사용자가 또 다른 사용자에게 권한을 부여했을 때 이를 전부 취소하기 위해서

REVOKE 권한 ON 객체 FROM 사용자 CASCADE;

권한을 내려준 사용자의 권한만을 취소할 때

REVOKE 권한 ON 객체 FROM 사용자 RESTRICT;

관리자가 사용자에게 내려준 권한을 취소할 때

REVOKE CREATE TABLE FROM EUNGYU;

역할의 부여와 취소

역할을 생성하는 기본 문

CREATE ROLE 역할 이름;

역할에 필요한 권한을 넣을 때의 명령어

GRANT 권한 ON 객체 TO 롤이름;

고객 테이블에 대한 검색. 삽입, 삭제 권한을 ROLE1에 넣는 문

GRANT SELECT, INSERT, DELETE ON 고객 TO ROLE1;

역할을 사용자에게 부여하는 명령어

GRANT 롤이름 TO 사용자;

역할에서 사용자를 배제하는 REVOKE 문

REVOKE 롤이름 FROM 사용자;

역할을 버리는 명령어

DROP ROLE 롤이름;