Search

Access Control

보안

비인가자가 데이터베이스에 침입하여 데이터를 유출하거나 손상한다면 조직에 치명적인 손실이 발생함인가자만 데이터베이스에 접근할 수 있도록 통제하여 보안을 유지하는 일이 무척 중요

보안의 유형

물리적 환경에 대한 보안 - 자연 재해 등으로부터 보호
권한 관리를 통한 보안 - 권한이 없는 사용자로부터 보호
운영 관리를 통한 보안 - 권한이 있는 사용자로부터 보호

권한 관리

DBMS는 보안을 유지하기 위해, 계정이 발급된 사용자가 로그인에 성공했을 경우에만 데이터베이스에 접근이 가능하도록 하는 접근 제어(access control)기능을 기본으로 제공
계정을 생성, 변경, 제거하는 사용자 계정 관리는 DBA가 담당
데이터베이스에 존재하는 모든 객체는 기본적으로 해당 객체를 생성한 사용자만 사용 권한을 지님
필요에 따라 공유할 목적으로 다른 사용자에게 권한을 부여, 취소할 수 있음

권한의 부여

GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION];
일반적으로 테이블에 권한을 부여하는 경우가 많음주요 권한으로 INSERT, DELETE, UPDATE, SELECT, REFERENCES 가 존재
REFERENCES 권한을 부여 받은 사용자는 대상 테이블의 기본키를 참조하는 외래키를 자신의 테이블에 포함할 수 있음
UPDATE, SELECT는 일부 속성에 대한 권한 부여 가능모든 사용자들에게 똑같이 부여하고 싶다면 PUBLIC 키워드 이용
※ WITH GRANT OPTION을 포함하여 부여 받은 사용자는 다른 사용자에게도 권한 부여 가능
보안을 강화하기 위해 뷰를 이용할 수 있음
테이블 일부분을 뷰로 생성한 후, 사용자에게 이 뷰에 대한 권한을 부여하는 것도 보안을 유지하는 데 도움이 됨
객체에 대한 권한과 달리 시스템 권한은 DBA가 부여시스템 권한은 데이터베이스 관리와 관련된 작업 대한 권한, DDL과 관련된 작업에 대한 권한(객체를 지정할 필요가 없음) - ex) GRANT CREATE TABLE TO mhgo;

권한의 취소

REVOKE 권한 ON 객체 FROM 사용자 CASCADE : RESTRICT;
사용자가 WITH GRANT OPTION으로 인한 추가적인 권한 부여가 되었다면 이를 처리하는 방법이 필요 → 연쇄적으로 취소하고자 하면 CASCADE, 취소하지 않도록 하려면 RESTRICT를 사용
DBA는 각 테이블의 소유주가 사용자들에게 어떤 권한을 부여했는지, WITH GRANT OPTION을 포함하여 권한을 부여했는지 등 권한 목록을 작성해두고 관리하는 것이 필요
DBA가 시스템 권한을 취소할 때도 REVOKE문을 이용
ex)REVOKE CREATE TABLE FROM mhgo;

역할(role)

여러 사용자에게 동일한 권한들을 부여하고 취소하는 번거로운 작업을 편리하게 수행할 수 있도록 도움을 주는 것
새로운 역할을 생성하는 기능은 DBA가 담당 / CREATE ROLE 롤이름;
역할에 필요한 권한들을 넣을 떄는 GRANT 이용 - 테이블 소유자가 수행
역할에 사용자에게 부여, 취소하는 것은 DBA가 담당 / GRANT/REVOKE 롤이름 TO/FROM 사용자;
역할 제거는 DBA가 담당 / DROP ROLE 롤이름;