보안
데이터베이스 보안
목표
조직에서 허가한 사람만 데이터베이스에 접근할 수 있도록 통제하여 보안을 유지하는 것
물리적 환경에 대한 보안
물리적 손실을 발생시키는 위험으로부터 데이터베이스를 보호
권한 관리를 통한 보안
- 접근이 허락된 사용자만 권한 내에서 데이터베이스를 사용하도록 보호
- 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제하고, 사용자별로 사용 범위와 수행 가능한 작업 내용을 제한
운영 관리를 통한 보안
- 무결성 제약조건을 정의하고 위반하지 않도록 통제
권한 관리
개념
객체 권한 부여 : GRANT 문
- 객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여
GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION];
- 부여 가능한 주요 권한
- INSERT, DELETE, UPDATE, SELECT, REFERENCES
- REFERENCES: 외래키 제약조건을 정의할 수 있는 권한
- UPDATE나 SELECT는 테이블의 일부 속성에 대한 권한 부여도 가능
- 여러 권한을 한 번에 부여하는 것도 가능
- 기본적으로 GRANT 문으로 부여받은 권한은 다른 사용자에게 부여할 수 없음
- PUBLIC
- 모든 사용자에게 권한을 똑같이 부여하고 싶다면 특정 사용자를 지정하는 대신 PUBLIC 키워드르 이용하여 작성
- WITH GRANT OPTION
- 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있도록 함
- 시스템 권한은 데이터베이스 관리자가 부여함
- 시스템 권한: 데이터베이스 관리와 관련된 작업에 대한 권한
- CREATE TABLE, CREATE VIEW 등 데이터 정의어(DDL)와 관련된 권한들
- 시스템 권한을 부여할 때는 객체를 지정할 필요가 없음
객체 권한 취소 : REVOKE 문
- 객체 소유자가 다른 사용자에게 부여한 객체의 사용 권한을 취소
- 데이터베이스 관리자가 다른 사용자에게 부여한시스템 권한을 취소
- 특정 객체에 대한 권한 취소가 아니므로 객체를 지정할 필요 없음
권한 목록
권한 부여에 관한 내용을 기록한 것
역할
개념
필요성
역할 생성 : CREATE ROLE 문
새로운 역할의 생성은 데이터베이스 관리자가 담당
CREATE ROLE 롤이름;
역할에 권한 추가 : GRANT 문
객체와 관련된 권한을 역할에 추가하는 작업은 객체의 소유자가 담당
GRANT 권한 ON 객체 TO 롤이름;
역할 부여 : GRANT 문
역할을 사용자에게 부여하는 것은 데이터베이스 관리자가 담당
GRANT 롤이름 TO 사용자;
역할 취소: REVOKE 문
사용자에게 부여한 역할의 취소는 데이터베이스 관리자가 담당
REVOKE 롤이름 FROM 사용자;
역할 제거: DROP ROLE 문
- 역할을 제거하면 제거된 역할을 부여받은 모든 사용자에 대해 역할에 속해 있던 권한이 모두 취소됨
- 역할 제거는 데이터베이스 관리자가 담당
DROP ROLE 롤이름;