보안
데이터베이스 보안의 유형
- 물리적 환경에 대한 보안
- 자연 재해 등으로부터 보호한다.
- 권한 관리를 통한 보안
- 권한이 없는 사용자로부터 보호한다.
- 접근이 허락된 사용자만 부여된 권한 내에서 DB를 사용할 수 있도록 한다.
- 계정이 발급되 사용자만 DB에 접근할 수 있다.
- 각 사용자별로 DB의 사용 범위와 수행 가능한 작업 내용을 제한할 수 있어야 한다.
- 운영 관리를 통한 보안
- 권한이 있는 사용자로부터 보호한다.
- 실수 등의 이유로 데이터 무결성을 위반하는 행동을 하는 것에 대한 여지를 없애기 위해
올바른 제약조건을 정의하고, 사용자들이 정의된 제약조건을 위반하지 않도록 통제해야 한다.
권한 관리
- DBMS는 DB의 보안을 유지하기 위해 계정이 발급된 사용자가
로그인에 성공했을 경우에만 DB에 접근이 가능하도록 하는
접근 제어(access control) 기능을 기본으로 제공한다.- 모든 사용자는 자신에게 발급된 계정으로 로그인해야 DB에 접근할 수 있다.
- DB 전체의 보안을 관리하기 위해 필요한 모든 권한은 DBA가 가지고 있다.
- 로그인을 통해 DB에 접근할 수 있어도 DB 안의 모든 데이터를 사용할 수 있는 것은 아니다.
- DBMS가 사용자별로 DB의 사용 범위와 수행 가능한 작업을 제한할 수 있다.
- 각 사용자는 자신에게 허용된 권한 내에서만 DB를 사용할 수 있다.
- 테이블이나 뷰같이 DB에 존재하는 모든 객체는
기본적으로 해당 객체를 생성한 사용자만 사용 권한을 가지게 된다.
권한 관리를 통한 보안의 방법
- 객체 권한
- 권한 부여
- GRANT
- 권한 취소
- REVOKE
- 권한 부여
- 역할
- 역할 생성
- CREATE ROLE
- 역할에 대한 권한 부여
- GRANT
- 역할 부여
- GRANT
- 역할 생성
권한 부여
- 테이블과 관련하여 다른 사용자에게 부여할 수 있는 주요 권한
- INSERT
- 데이터 삽입
- DELETE
- 데이터 삭제
- UPDATE
- 데이터 갱신
- SELECT
- 데이터 조회
- REFERENCES
- 권한 부여 대상인 테이블의 기본키를 참조하는 외래키를
자신이 생성하는 테이블에 포함할 수 있다.
- 권한 부여 대상인 테이블의 기본키를 참조하는 외래키를
- INSERT
- GRANT는 기본적으로 테이블을 구성하는 모든 속성에 권한을 부여한다.
- 일부 속성만 나열하려면 권한과 함께
권한을 부여하고 싶은 속성의 목록을 () 안에 나열한다. - 모든 사용자에게 동일한 권한을 부여하고 싶다면
사용자명 대신에 PUBLIC 키워드를 사용하면 된다. - GRANT 명령어로 부여받은 권한은 기본적으로 다른 사용자에게 부여할 수 없다.
- WITH GRANT OPTION을 포함하면 권한을 부여받은 사용자가
자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있다. - 시스템 권한은 특정 객체에 대한 권한이 아니므로 객체를 지정할 필요가 없다.
- 기본 형식
GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION]
- 예시
- 고객 테이블에 대한 검색 권한을 사용자 Hong에게 부여
GRANT SELECT ON 고객 TO Hong;
- 고객 테이블에 대한 삽입과 삭제 권한을 모든 사용자에게 부여
GRANT INSERT, DELETE ON 고객 TO PUBLIC;
- 고객 테이블을 구성하는 속성 중 등급과 적립금 속성에 대한
수정 권한을 사용자 Park에게 부여GRANT UPDATE(등급, 적립금) ON 고객 TO Park;
- 고객 테이블에 대한 검색 권한과
해당 권한을 다른 사용자에게 부여할 수 있는 권한을
사용자 Lee에게 부여GRANT SELECT ON 고객 TO Lee WITH GRANT OPTION;
- 테이블을 생성할 수 있는 시스템 권한을 사용자 Song에게 부여
GRANT CREATE TABLE TO Song;
- 뷰를 생성할 수 있는 시스템 권한을 사용자 Shin에게 부여
GRANT CREATE VIEW TO Shin;
- 고객 테이블에 대한 검색 권한을 사용자 Hong에게 부여
권한 취소
- 권한 삭제 대상이 되는 사용자가 다른 사용자에게 권한을 부여한 경우
- 연쇄적으로 권한 취소
- CASCADE 옵션 지정
- 대상 사용자만 권한 취소
- RESTRICT 옵션 지정
- 연쇄적으로 권한 취소
- 시스템 권한은 특정 객체에 대한 권한이 아니므로 객체를 지정할 필요가 없다.
- 기본 형식
REVOKE 권한 ON 객체 FROM 사용자 CASECADE | RESTRICT;
- 예시
- 사용자 Hong에게서 고객 테이블에 대한 조회 권한 취소하면서
Hong이 권한을 부여한 다른 사용자들의 권한도 함깨 취소REVOKE SELECT ON 고객 FROM Hong CASECADE;
- 사용자 Hong에게서 고객 테이블에 대한 조회 권한 취소하면서
Hong이 권한을 부여한 다른 사용자들의 권한은 남기고
Hong의 권한만 취소REVOKE SELECT ON 고객 FROM Hong RESTRICT;
- Hong에게서 테이블 생성 권한 취소
REVOKE CREATE TABLE FROM Hong;
- 사용자 Hong에게서 고객 테이블에 대한 조회 권한 취소하면서
역할의 부여와 취소
- 역할 생성
CREATE ROLE 역할명;
- 역할에게 권한 부여
GRANT 권한 ON 객체 TO 역할명;
- 사용자에게 역할 부여
GRANT 역할명 TO 사용자;
- 역할에서 권한 취소
REVOKE 권한 ON 객체 FROM 역할명;
- 사용자에게서 역할 취소
REVOKE 역할명 FROM 사용자;
- 역할 삭제
DROP ROLE 역할명;