728x90
< 목차 >
0. TL;DR
1. 보안
2. 권한 관리를 통한 DB 보안
3. 역할 (role)
0. TL;DR
- 물리적 DB 보안: 자연재해 or 데이터베이스에 물리적으로 손실을 발생시키는 위험으로부터 보호
- 권한 관리를 통한 DB 보안 | 로그인 사용자 관리: 로그인 단계에서 접근 제한 기능 제공
- 권한 부여: GRANT
- 권한 삭제: REVOKE
- 역할 (role): 데이터베이스 객체에 대한 권한을 모아둔 집합
1. 보안
기업의 데이터베이스는 중요 정보를 담고 있어, 데이터의 유출은 기업의 생존과도 연결돼 있다.
DBMS는 정보 유출을 막기 위해 여러 가지 안전장치가 존재한다.
물리적 DB 보안
: 자연재해 or 데이터베이스에 물리적으로 손실을 발생시키는 위험으로부터 보호
- 물리적 공간 확보 및 잠금 장치
- 보안 카메라가 적용된 하드 메탈
- 장비 접근에 대한 제한 (인가된 사람만 접근)
- 이중 전원 장치 (비상 배터리 등)
2. 권한 관리를 통한 DB 보안
로그인 사용자 관리
: 로그인 단계에서 접근 제한 기능 제공
- 로그인한 사용자별로 특정 데이터로의 접근 제한 기능 제공
- DBMS를 통해 데이터베이스에 접근하는 각 사용자들은 사용자 ID 및 비밀번호로 접근 허용
- 로그인은 외부로부터 DBMS의 접근을 차단하는 1차적 안전장치
- 로그인을 통해 DBMS에 접근하면 로그인 아이디에 매핑*된 사용자의 권한에 따라 DB 사용 가능
👾 매핑 (Mapping)
: 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 짝지어(=연결지어) 저장하는 데이터 구조
권한 관리
DBMS에는 여러 데이터베이스와 테이블이 존재하는데, 업무의 특성 및 중요도에 따라 특정 사용자만 접근이 필요할 수 있다.
- DBMS에서는 여러 종류의 권한을 제공하고 있으며 각 권한에 따라 읽기만 가능하거나 쓰기만 가능, 실행만 가능 등으로 다양한 권한이 있음
- 권한이 없다면 접근을 거부하고 사용할 수 없음
- 데이터베이스 사용자 계정 생성, 변경, 제거 등의 관리는 DBMS 관리자가 담당
- 데이터베이스 관리자는 계정 관리를 위한 모든 권한을 갖고 있음
- 데이터베이스 권한 부여는 상세한 수준에서 관리할 수 있고, 각 사용자는 허용된 범위 내에서만 데이터베이스에 접근할 수 있음
권한 부여 | GRANT
: 객체에 대한 사용 권한을 부여
- 모든 속성에 전체 or 일부 권한을 부여
- UPDATE와 SELECT 속성 중, 일부만 부여 가능
- GRANT 권한을 부여받은 권한은 기본적으로 다른 사용자에게 부여할 수 없음
- WITH GRANT OPTION으로 다른 사용자에게 부여 가능
예를 통해 이해해보자.
- 고객 테이블에 대한 삽입과 삭제 권한을 모든 사용자에게 부여
- GRANT INSERT, DELETE ON 고객 TO PUBLIC;
- 고객 테이블 중 등급과 주소에 대한 수정 권한을 Kang에게 부여
- GRANT UPDATE(등급, 주소) ON 고객 TO Kang;
- 고객 테이블에 대한 검색 권한을 WITH GRANT OPTION을 포함해 Jung에게 부여
- GRANT SELECT ON 고객 TO Jung WITH GRANT OPTION;
권한 삭제 | REVOKE
: 부여된 권한 삭제
- REVORK 권한 ON 객체 FROM 사용자 CASCADE | RESTRICT;
- A → B(부여) → C(부여) 상황에서 B의 권한을 취소하게 되면?
- C의 권한도 취소하려면 CASCADE 명령 사용
- C의 권한을 유지하려면 RESTRICT 명령 사용
- REVOKE SELECT ON 고객 FROM Kang CASCADE; (= Kang이 부여한 모든 사용자의 권한도 삭제됨)
객체 타입별로 지정 가능한 권한
객체 타입 | 권한 |
테이블 | INSERT, UPDATE, DELETE, SELECT, REFERENCES |
뷰 | INSERT, UPDATE, DELETE, SELECT, REFERENCES |
스칼라 함수 | EXECUTE, REFERENCES |
저장 프로시저 | EXECUTE |
3. 역할 (role)
: 데이터베이스 객체에 대한 권한을 모아둔 집합
- 데이터베이스는 여러 사람이 함께 운영하기 때문에 각 역할의 구분이 필요
- 역할을 사용하면 역할이 변경됐을 때, 부여된 역할만 변경하면 권한을 굳이 수정하지 않아도 권한 관리 가능
역할 생성 및 부여
- [역할 생성] GRANT ROLE role_name;
- [생성된 역할에 권한 부여] GRANT 권한 ON 객체 TO role_name;
- [역할 삭제] DROP ROLE role_name;
- [역할을 사용자에게 부여] GRANT role_name TO 사용자;
- [부여한 역할 삭제] REVOKE role_name FROM 사용자;
728x90
'CS (Computer Science)' 카테고리의 다른 글
[개발 공부 104일차] DB 개론 | 엔티티 타입 및 속성 (20) | 2024.09.26 |
---|---|
[개발 공부 103일차] DB 개론 | 데이터베이스 모델링 개념 (2) | 2024.09.25 |
[개발 공부 101일차] DB 개론 | 트랜잭션과 동시성 (0) | 2024.09.23 |
[개발 공부 100일차] DB 개론 | 관계대수 (2) | 2024.09.22 |
[개발 공부 99일차] DB 개론 | 관계형 데이터 모델 (25) | 2024.09.21 |