보안
데이터베이스에 저장된 데이터는 조직을 운영하는 데 꼭 필요한 것으로, 조직 내 사용자들이 공유하여 사용한다. 만약 사용이 허락되지 않은 외부인이 데이터베이스에 칩입하여 데이터를 유출하거나 손상한다면 조직에 치명적인 손실이 발생할 것이다. 따라서 조직에서 허가한 사용자만 데이터베이스에 접근할 수 있도록 통제하여 유지하는 일이 중요하다. 데이터베이스의 보안은 크게 3가지로 나뉠 수 있다.
- 물리적 환경에 대한 보안 : 자연 재해 등으로부터 보호
- 권한 관리를 통한 보안 : 권한이 없는 사용자로부터 보호
- 운영 관리를 통한 보안 : 권한이 있는 사용자로부터 보호, 허가된 사용자의 실수로 부터 데이터 무결성 유지 및 제약조건 정의
권한 관리
권한 관리의 개념
데이터베이스 관리 시스템은 데이터베이스의 보안을 유지하기 위해 사용자가 로그인에 성공했을 때만 접근 가능하도록 접근 제어 기능을 제공한다. 새로운 사용자의 계정과 암호를 생성하고, 기존 사용자의 계정을 변경 및 제거하는 사용자 계정 관리는 데이터베이스 관리자가 담당하며 데이어베이스 관리자는 데이터베이스 전체의 보안을 관리하기 위해 필요한 모든 권한을 가지고 있다. 로그인을 통해 데이터베이스에 접근할 수 있더라도 데이터베이스 안에 있는 모든 데이터를 사용할 수 있는 것은 아니며 보안을 위한 데이터 단위는 데이터베이스 전체부터 특정 테이블의 특정 행과 열 위치에 있는 특정 데이터 값에 이르기까지 다양하다.
데이터베이스 객체의 소유자는 필요에 따라 자신이 소유한 데이터베이스 객체에 대한 사용 권한을 다른 사용자에게 SQL 문을 이용하여 부여할 수 있다.
권한의 부여
GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION];
객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여하기 위해 필요한 SQL 명령어는 GRANT이다. 데이터베이스에 존재하는 모든 유형의 객체에 사용 권한을 부여할 수 있지만 대부분 테이블에 권한 부여하는 경우가 많다. GRANT 명령어로 부여받은 권한은 기본적으로 다른 사용자에게 부여할 수 없지만 WITH GRANT OPTION을 포함하면 권한을 부여받은 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있다.
객체에 대한 권한은 해당 객체의 소유자가 부여하지만 시스템 권한은 데이터베이스 관리자가 부여할 수 있다. 시스템 권한은 특정 객체에 대한 작업이 아닌, 데이터베이스 관리와 관련된 작업에 대한 권한이다. DDL과 같은 데이터 정의어와 관련된 작업에 대한 권한들이 시스템 권한에 속한다. 데이터베이스 권한을 부여할 때도 GRANT 명령어를 이용한다. 단, 특정 객체에 대한 권한을 부여하는 것이 아니므로 시스템 권한을 부여할 때는 객체를 지정할 필요가 없다.
권한의 취소
REVOKE 권한 ON 객체 FROM 사용자 CASCADE|RESTRICT;
다른 사용자에게 부여한 객체의 권한을 취소하기 위해 필요한 SQL 명령어는 REVOKE이다. 앞선 WITH GRANT OPTION을 포함하여 GRANT 문을 수행하고 권한을 부여받은 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 가 있다. 이를 위해 맨뒤에 옵션이 사용되는데, CASCADE 옵션을 포함하여 권한을 취소하면 연관된 다른 사용자들의 권한도 함께 취소가 되고, RESTRICT 옵션을 포함하여 권한을 취소하면 만일 다른 사용자에게 취소의 영향이 가면 REVOKE 명령이 실패하게 된다.
데이터베이스 관리자가 다른 사용자에게 부여한 시스템을 취소할 때도 REVOKE 문을 이용한다. 단 특정 객체에 대한 권한을 취소하는 것이 아니므로 시스템 권한을 취소하고자 할 때는 REVOKE 문에서 객체를 지정할 필요가 없다.
역할의 부여와 취소
여러 사용자에게 동일한 권한들을 부여하고 취소하는 번거로운 작업울 편리하게 수행할 수 있도록 도움을 주는 것이 역할이다.
CREATE ROLE 롤이름;
새로운 역할을 생성하는 기능은 데이터베이스 관리자가 담당하며, 역할을 생성하는데 필요한 SQL 명령어는 CREATE ROLE이다.
GRANT 권한 ON 객체 TO 롤이름;
그 후 역할에 필요한 권한을 넣을 때는 GRANT 명령어를 이용한다.
GRANT 롤이름 TO 사용자;
필요한 권한이 들어가 있는 역할을 사용자에게 부여하는 것은 데이터베이스 관리자가 담당하며 GRANT 문을 이용한다. 새로운 권한의 추가, 기존 권한의 취소 등 역할에 변화가 생기면 해당 역할을 부여받은 모든 사용자에게 변화가 그대로 전달되어 관리에 있어 용이하다.
REVOKE 롤이름 FROM 사용자;
사용자에게 부여한 역할을 취소하는 작업은 데이터베이스 관리자가 담당하며, 권한 취소처럼 REVOKE 문을 이용한다.
DROP ROLE 롤이름;
마지막으로 역할제거 또한 데이터베이스 관리자가 담당하며 DROP ROLE 문을 이용한다.
출처
데이터베이스 개론 2판 - 한빛아카데미 출판, 김연희 저
'Summary' 카테고리의 다른 글
[데이터베이스 개론] 10장. 트랜잭션 (0) | 2022.02.07 |
---|---|
[데이터베이스 개론] 09장. 정규화 (0) | 2022.02.05 |
[데이터베이스 개론] 08장. 데이터베이스 설계 (0) | 2022.02.04 |
[데이터베이스 개론] 07장. 데이터베이스 언어 SQL (0) | 2022.01.25 |
[데이터베이스 개론] 05장. 관계 데이터 모델 (1) | 2022.01.22 |