데이터베이스의 보안을 유지하여 데이터를 보호하는 방법은 일반적으로 다음 세 가지 유형으로 구분한다
- 데이터베이스 보안
- 물리적 환경에 대한 보안
자연 재해 등으로부터 보호 - 권한 관리를 통한 보안
권한이 없는 사용자로부터 보호 - 운영 관리를 통한 보안
권한이 있는 사용자로부터 보호
- 물리적 환경에 대한 보안
1. 권한 관리의 개념
접근 제어 access control
계정이 발급된 사용자가 로그인에 성공했을 경우에만 데이터베이스에 접근이 가능하도록 하는 것
새로운 사용자의 계정과 암호를 생성하고, 기존 사용자의 계정을 변경 및 제거하는 사용자 계정 관리는 데이터베이스 관리 시스템의 데이터베이스 관리 담당자가 담당한다
데이터베이스 관리자는 데이터베이스 전체의 보안을 관리하기 위해 필요한 모든 권한을 가지고 있다
사용자별로 데이터베이스의 사용 범위와 수행 가능한 작업을 제한할 수 있어, 각 사용자는 자신에게 허용된 권한 내에서만 데이터베이스를 사용할 수 있다
데이터베이스에 존재하는 모든 객체는 기본적으로 해당 객체를 생헝한 사용자만 사용 권한을 가지게 된다
접근 권한이 있더라도 자신이 생성하지 않은 객체 테이블 등은 접근이 불가능 하다
타 사용자가 생성한 객체에 접근하려면 사용 권한을 부여받아야 한다
2. 권한의 부여
- 권한 관리를 통한 보안
- 객체 권한
- 권한 부여 GRANT
- 권한 취소 REVOKE
- 역할
- 역할 생성 CREATE ROLE
- 역할에 대한 권한 부여 GRANT
- 역할 부여 GRANT
- 객체 권한
객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여하기 위해 필요한 것은 SQL 명령어로 GRANT이다
grant 권한 on 객체 to 사용자 [with grant on option]
데이터베이스에 존재하는 모든 유형의 객체에 다른 사용자 권한을 부여할 수있다
일반적으로는 테이블에 권한을 부여하는 경우가 많다
테이블에 관련하여 다른 사용자에게 부여할 수 있는 주요 권한으로는 insert, delete, update, select, references가 있다
references는 외래키 제약조건을 정의할 수 있는 권한이다
grant는 기본적으로 테이블의 모든 속성에 권한을 부여할 수 있지만, update, select는 테이블을 구성하는 속성중 일부 속성에만 접근할 수 있도록 할 수 있다
모든 사용자에게 권한을 부여하고 싶다면 사용자 지칭 대신 public를 사용하면 된다
grant로 부여받은 권한은 타 사용자게에 부여할 수 없지만, with grant option을 포함하면 권한을 부여받은 사용자가 다른 사용자게에게 권한을 부여할 수 있다
보안을 강화하기 위해 뷰를 이용할 수도 있다. 뷰를 이용하면 사용자가 테이블에 직접 접근하지 못하게 하면서 사용작에게 필요한 테이블 일부만 제공할 수 있다. 따라서 사용자와 관련 없는 테이블의 다른 부분을 숨겨 보안을 유지하는데 도움이 된다
시스템 권한
특정 객체에 대한 작업이 아닌, 데이터베이스 관리와 관련된 작업에 대한 권리
데이터베이스 관리자가 부여할 수 있다
DDL이 이 부분에 속한다
3. 권한의 취소
grant를 통해 다른 사용자에게 권한을 부여한 사용자가 자신이 부여한 권한을 취소할 수도 있다
revoke를 사용하여 시행한다
revoke 권한 on 객체 from 사용자 cascade | restrict;
cascade 옵션을 포함하여 권한을 취소하면 연관된 다른 사용자들의 권한도 함께 취소되므로 권한 취소 전에는 신중히 판단해야 한다
4. 역할의 부여와 취소
사용자가 다수일 경우 grant로 따로 작성하여 부여하기 까다롭다
역할 Role
여러 사용자에게 동일한 권한들을 부여하고 취소하는 번거로운 작업을 편리하게 수행할 수 있도록 도움을 주는 것
여러 권한을 그룹으로 묶어놓은 것, 사용자에게 부여하고 싶은 여러 권한을 역할에 미리 넣어두고 필요할 때 역할을 부여하면 여러 권한을 쉽게 부여할 수 있다
create role 역할이름;
역할에 필요한 권한들을 넣을때는 grant를 사용한다
grant 권한 on 객체 to 역할이름;
역할을 사용자에게 부여하는 것은 데이터베이스 관리자가 담당하며 grant문을 이용한다
grant 역할이름 to 사용자;
사용자에게 부여한 역할을 취소하는 작업은 데이터베이스 관리자가 담당하며, 권한 취소처럼 Revoke를 사용한다
revoke 역할이름 from 사용자;
역할을 제거하면 제거된 역할을 부여받은 모든 사용자도 역할에 속해 있던 권한을 더는 가지지 못하게 된다
drop role 역할이름;'공부 > 데이터베이스' 카테고리의 다른 글
| 12. 데이터베이스 응용 기술 / 01 객체지향 데이터베이스 (1) | 2025.09.16 |
|---|---|
| 11. 보안과 권한 관리 / 총 정리 (0) | 2025.09.15 |
| 10. 회복과 병행 제어 / 총 정리 (0) | 2025.09.15 |
| 10. 회복과 병행 제어 / 03 병행 제어 (0) | 2025.09.15 |
| 10. 회복과 병행 제어 / 02 장애와 회복 (0) | 2025.09.15 |