11장 보안과 권한 관리
1. 보안
<그림 11-1 데이터베이스 보안의 유형>
물리적 환경에 대한 보안
- 자연 재해처럼 데이터베이스에 물리적으로 손실을 발생시키는 위험으로부터 데이터베이스를 보호해야 한다.
권한 관리를 통한 보안
- 접근이 허락된 사용자만 부여된 권한 내에서 데이터베이스를 사용할 수 있도록 한다.
- 그러려면 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제
- 사용자별로 데이터베이스의 사용 범위와 수행 가능한 작업 내용을 제한할 수 있어야한다.
운영 관리를 통한 보안
- 접근이 허락된 사용자가 부여된 권한 내에서 데이터베이스를 사용하더라도 실수 등의 이유로 데이터 무결성을 위반할 수 있다.
2. 권한 관리
2.1 권한 관리의 개념
- 사용자가 로그인에 성공했을 경우에만 데이터베이스에 접근이 가능하도록 하는 접근 제어기을 기본으로 제공한다.
- 그러므로 모든 사용자는 자신에게 발급된 계정으로 로그인해야 데이터베이스에 접근 할 수 있다.
- 보안을 위한 데이터 단위는 데이터베이스 전체부터 특정 테이블의 특정 행과 열 위치에 있는 특정 데이터 값에 이르기까지 다양한다.
- 각 사용자는 자신에게 허용된 권한 내에서만 데이터베이스를 사용할 수 있다.
<그림 11-3 로그인과 데이터베이스 접근 권한>
- 객체가 사용자별로 관리되므로 데이터베이스에 접근이 허락된 사용자일지라도 자신이 생성하지 않은 객체는 사용할 수 없다.
- 데이터베이스 객체의 소유자는 필요에 따라 다른 사용자에게 자신이 소유한 객체에 대한 사용 권한을 부여할 수 있다.
- 그리고 권한들의 그룹인 역할이라는 것을 이용해 권한을 부여하는 작업을 좀 더 편리하게 수행하는 방법을 알아보자.
<그림 11-4 권한 관리를 통한 보안>
2.2 권한의 부여
- 객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여하기 위해 필요한 SQL명령어는 GRANT이다.
GRANT 권한 ON 객체(Table) TO 사용자 [WITH GRANT OPTION]; -- 권한 부여
- 테이블을 대상으로 하는 권한 부여를 중심으로 설명한다.
- 다른 사용자에게 부여할 수 있는 주요 권한은 INSERT, DELETE, UPDATE, SELECT, REFERENCE 가 있다
- REFERENCES : 권한 부여 대상인 테이블의 기본키를 참조하는 외래키를 자신이 생성하는 테이블에 포함
- GRANT : 기본적으로 테이블을 구성하는 모든 속성에 권한을 부여
- UPDATE 와 SELECT : 테이블을 구성하는 속성들 중 일부 속성만 수정 또는 검색하는 권한을 부여
()안에 부여하고 싶은 속성의 이름을 나열
- PUBLIC : 모든 사용자에게 권한을 똑같이 부여하고 싶으면 PUBLIC 키워드를 이용하여 GRANT 문을 작성한다
<그림 예제 11-1>
GRANT SELECT ON 고객 TO Hong;
<그림 예제 11-2>
GRANT INSERT, DELETE ON 고객 TO PUBLIC; -- 모든 사용자
<그림 예제 11-3>
GRANT UPDATE(등급, 적립금) ON 고객 TO Park;
<그림 예제 11-4>
GRANT SELECT ON 고객 TO Lee WITH GRANT OPTION;
- 보안을 강화하기 위해 뷰를 이용할 수도 있다.
- 필요한 테이블의 일부분을 뷰로 생성한 후 사용자에게 이 뷰에 대한 권한을 부여하는 것도 보안을 유지하는 데 도움이 될 수 있다.
시스템 권한
- 특정 객체에 대한 작업이 아닌, 데이터베이스 관리와 관련된 작업에 대한 권한다.
정의어(DDL)
- CREATE TABLE, 뷰를 생성할 수 있는 CREATE VIEW 등 데이터 정의어(DDL)와 관련된 작업에 대한 권한들이 시스템 권한에 속한다.
<그럼 예제 11-5>
GRANT CREATE TABLE TO Song;
<예저 11-6>
GRANT CREATE VIEW TO Shin; - 뷰를 생성할 수 있는 권한
2.3 권한의 취소
- 사용자가 자신이 부여한 권한을 취소할수 있다.
- 객체의 사용 권한을 취소하기 위해 필요한 SQL 명령어는 REVOKEek.
REVOKE 권한 ON 객체 FROM 사용자 CASCADE | RESTRICT;
- CASCADE : 부여 받는 사용자 전체 모두 변경
- RESTRICT 선택된 객체(테이블)만 가능
- WITH GRANT OPTION과 함께 Hong에게 부여했고, Hongdmㄴ 부여받은 권한을 Parkdp게 부여 했다고 가정한다.
<그림 11-5>
- Kim -> Hong -> Park
- 에게 부여된 검색 권한은 어떻게 처리할까?
- A가 자용자 B 뿐 아니라, C 에게 부여한 권한도
- 연쇄적으로 함께 취소하고자 한다면 REVOKE 문을 작성할 때 CASCADE 옵션을 지정한다.
- A가 사용자 C에게 부여한 권한은 취소하지 않도록 하려면 RESTRIC 옵션을 지정한다
<예제 11-7>
REVOKE SELECT ON 고객 FROM Hong CASCADE;
- 이렇게 A에 B에게 부여한 고객 테이블에 대한 검색 권한을 취소하면
- C에게 부여했던 검색 권한도 함께 취소
<예제 11-8>
REVOKE SELECT ON 고객 FROM Hong RESTICT;
- RESTRICT 옵션을 포함한 REVOKE 문을 작성항 수행하면 Kim(A)이 Hong(B)에게 부여한 권한을 취소할 수 없게 된다.
- Hong(B)이 Park(C)에게 권한을 부여한 내용이 남아 있기 때문이다.
- CASCADE 옵션을 포함하여 권한을 취소하면 연관된 다른 사용자들의 권한도 함께 취소 되므로 신중하게
<표11-1> 고객 테이블에 대한 각 사용자의 권한 목록
<예제 11-9>
REVOKE CREATE TABLE FROM Hong;
2.4 역할의 부여와 취소
- 여러 사용자에게 동일한 권한들을 부여하고 취소하는 작업을 편하게 해주는 것이 역할(role)이다.
<그림 11-6> 3개의 권한을 사용자 세 명에게 부여하는 예
- CREATE ROLE 문의 기본 형식
CREATE ROLE 롤이름;
<예제 11-10>
CREATE ROLE role_1; -- DBA가 역활 생성
- CREATE ROLE 문은 데이터베이스 관리자가 작성하여 수행해야한다.
- GRANT 명령어를 이용한다.
- 역할에 객체와 관련된 권한을 넣는 작업은 객체의 소유자가 담당한다.
GRANT 권한 ON 객체 TO 롤이름
<예제 11-11>
GRANT SELECT, INSERT, DELETE ON 고객 TO role_1; -- 테이블 소유자가 테이블의 권한을 ROLE에 부여한다.
- Role_1역할에 고객 테이블에 대한 검색-삽입-삭제 권한을 부여하는 것은 고객 테이블의 소유자가 할 수 있는 작업이다.
GRANT 롤이름 TO 사용자;
- 사용자에게 권한 부여(DBA)
<예제 11-12>
GRANT role_1 TO Hong; -- 사용자가에게 ROLLE의 권한을 부여한다.
- GRANT문을 데이터베이스 관리자(DBA)가 수행한다.
- Role_1역할을 부여받은 사용자는 role_1역할에 포함된 SELECT, INSERT, DELETE 권한을 모두 부여받아 고객 테이블에 대한 검색-삽입-삭제 연산이 가능하다.
- 검색-삽입-삭제 권한을 Hong, Park, Lee 사용자엑 모두 부여할 때는
<예제 11-10>에서 생성한 role_1 역할을 이용하면 된다.
<11-8> 역할을 이용한 3개의 권한을 세 명의 사용자에게 부여하는 예
- GRANT 문을 이용하여 role_1 역할에 UPDATE 권한을 다음과 같이 추가해주면 role_1 역할을 이미 부여받은 세명의
- 사용자에게 UPDATE 권한이 자동으로 부여된다.
GRANT UPDATE ON 고객 TO role_1;
- 사용자에게 부여한 역할을 취소하는 작업은 DBA가 담당하며
- 권한 취소처럼 REVOKE 문을 이용한다.
- 역할(ROLE)을 취소하는 REVOKE 문의 기본 형식은 다음과 같다.
REVOKE 롤이름 FROM 사용자;
- 역할 제거는 데이터베이스 고나리자가 담당하며 DROP ROLE문을 이용한다.
- 역할을 제거하는 DROP ROLE 문의 기본 형식은 다음과 같다.
DROP ROLE 롤이름;
DROP ROLE role_1;
요약
1. 데이터베이스 보안의 목표
- 조직에서 허가한 사용자만 데이터베이스에 접근할 수 있도록 통제하여 보안을 유지하는 것이다.
2. 데이터베이스 보안 유형
- 물리적 환경에 대한 보안 : 물리적 손실을 발생시키는 위험으로부터 DB을 보호
- 권한 관리를 통한 보안 : 접근이 허락된 사용자만 권한 내에서 데이터베이스를 사용하도록 보호
- 운영 관리를 통한 보안 : 무결성 제약조건을 정의하고 이 제약조건을 위반하지 않도록 통제한다.
3. 권한 부여와 취소
- GRANT 문 : 다른 사용자에게 객체에 대한 사용 권한 부여
- REVOKE 문 : 다른 사용자에게 부여된 객체에 대한 권한 취소
4. 역할
- 권한 부여와 취소등의 관리를 편리하게 수행할 수 있도록 여러 권한을 그룹으로 묶어 놓은것
- CREATE ROLE : 데이터베이스 관리자가 새로운 역할 생성
- GRANT 문 : 객체의 소유자가 역할에 객체에 대한 권한 추가.
5. 역할의 부여와 취소
- DBA가 역할을 부여(GRANT)하거나 취소(REVOKE)한다.
- GRANT : 다른 사용자에게 역할 부여
- REVOKE : 사용자에게 부여된 역할 취소
'학교 전공 > 데이터베이스' 카테고리의 다른 글
데이터베이스 개론(3판) - 12장 데이터베이스 응용 기술 (2) | 2023.12.07 |
---|---|
데이터베이스 개론(3판) - 9장 정규화 (1) | 2023.12.06 |
데이터베이스 개론(3판) - 10장 회복과 병행 제어 (1) | 2023.11.28 |
연습문제 - 데이터베이스 개론(3판) - 4장 데이터 모델링 (0) | 2023.10.23 |
연습문제 - 데이터베이스 개론(3판) - 3장 데이터베이스 시스템 (0) | 2023.10.23 |