티스토리 뷰
본 포스팅은 데이터베이스 보안에 대해 알아보겠습니다.
데이터베이스 보안은 매우 중요한 부분입니다. WEB/WAS Server의 비밀번호를 탈취 당했다와는 비교도 할 수 없을 정도로 커다란 문제라고 할 수 있습니다. 누군가 아무나 DB에 접속하여 테이블을 수정하고, 데이터를 지우고 할 수 있다면 이는 정말 끔찍한 일이 아닐 수 없습니다.
이에 데이터베이스를 안전하게 관리하는 것이 매우 중요합니다. 여러가지 보안 사항들에 대해 하나씩 살펴보겠습니다.
먼저 루트 사용자 계정 보호입니다.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('REAS');
사용자 비밀번호 변경 방법(for MYSQL)은 다음과 같습니다.
ALTER USER root IDENTIFIED BY 비밀번호;
사용자 비밀번호 변경 방법(for ORACLE)은 다음과 같습니다.
ALTER USER narason IDENTIFIED BY '비밀번호';
일반 개발자 또는 운영자에게는 사용자 계정을 추가하여 적당한 GRANT를 부여하고 관리할 수 있도록 하는 것이 매우 중요하지 않을 수 없습니다.
다음으로 GRANT & REVOKE 활용으로 인한 관리 측면입니다.
GRANT 문을 사용해서 사용자가 테이블과 열에 무엇을 허용할 지 통제할 수 있습니다. (ALL의 경우 SELECT INSERT UPDATE DELETE를 포함합니다.)
REVOKE 문의 사용해서 사용자가 테이블과 열에 무엇을 제어할 지 선택할 수 있습니다.
GRANT ALL ON WORLD.* TO 'narason'@'%';
REVOKE ALL ON WORLD.* FROM 'narason'@'%';
권한을 부여 받은 narason이 다른 사용자에게 동일 권한을 부여 할 수 있습니다.
GRANT SELECT ON world.city TO 'narason'@'%';
GRANT INSERT ON world.city TO 'narason'@'%';
REVOKE SELECT ON world.city FROM 'narason'@'%';
REVOKE INSERT ON world.city FROM 'narason'@'%';
GRANT SELECT ON world.city TO 'narason'@'%' WITH GRANT OPTION;
GRANT INSERT ON world.city TO 'narason'@'%' WITH GRANT OPTION;
해당하는 열만 조회 또는 삽입이 가능합니다.
GRANT SELECT(id,name) ON world.city TO 'narason'@'%' WITH GRANT OPTION;
GRANT INSERT(id,name) ON world.city TO 'narason'@'%' WITH GRANT OPTION;
권한 부여 권한을 수거하는 방법입니다.
REVOKE GRANT OPTION ON world.* FROM 'narason'@'%';
현재 가지고 있는 권한 확인 방법입니다.
SHOW GRANTS FOR 'narason'@'%';
다음으로 CASCADE & RESTRICT 권한을 명확하게 제거하는 방법입니다.
CASCADE는 부여된 권한 트리를 모두 제거하는 방법입니다.
RESTRICT는 지정한 권한을 제거 할 경우 타 사용자에게 영향이 가면 실패 처리하도록 하는 명령어입니다.
일반적으로 사용자 계정은 1일 1계정을 원칙으로 합니다. (DBA는 제외)
부득이한 사유로 계정을 공유할 때는 다음과 같은 문제점이 발생할 수 있습니다.
DB에 대한 지식이 부족한 사람이 접근하여 실수 할 가능성이 발생할 수 있습니다.
비밀번호 LOCK 현상이 빈번하게 발생할 수 있습니다.
실제 데이터가 변경이 되었을 경우 추적이 어렵다는 문제가 발생할 수 있습니다.
이에 역할 제거 및 부여는 매우 중요한 부분이라 할 수 있습니다.
역할 생성
CREATE ROLE data_entry;
역할에 권한 부여
GRANT SELECT, INSERT ON world TO data_entry;
사용자에게 역할 부여
GRANT data_entry TO narason;
역할 버리기
DROP ROLE data_entry;
역할을 다른 사용자에게 부여 할 권한을 부여
GRANT data_entry TO narason WITH ADMIN OPTION;
역할 제거
REVOKE data_entry FROM narason;
ROLE REVOKE문에도 CASCADE, RESTRICT를 사용할 수 있습니다.
지금까지 6강으로 나누어 Database에 대해 기초적인 지식을 나누어 보았습니다.
추후에는 지속적인 학습으로 Database Architecture, SQL 등에 대해 더욱 심도 있는 공유가 될 수 있도록 노력하겠습니다.
고맙습니다.
'⑤ 개발, 데이터베이스 > ⓓ Database' 카테고리의 다른 글
[Oracle] getConnection 지연 조치 방법 (2) | 2018.08.04 |
---|---|
Oracle CTF vs TAF (0) | 2018.07.09 |
[SQL 5일차] 데이터베이스 서브쿼리와 제약조건, 뷰, 트랜잭션 (0) | 2018.07.03 |
[SQL 4일차] 데이터베이스 다중테이블 연산과 JOIN (0) | 2018.07.03 |
[SQL 3일차] 데이터베이스 설계 (0) | 2018.07.03 |
- Total
- Today
- Yesterday
- JEUS7
- node.js
- apache
- git
- nodejs
- 오픈스택
- MSA
- aa
- Architecture
- OpenStack
- JEUS6
- 마이크로서비스
- Da
- aws
- SA
- openstack tenant
- API Gateway
- JBoss
- TA
- kubernetes
- jeus
- SWA
- 아키텍처
- wildfly
- 쿠버네티스
- 마이크로서비스 아키텍처
- Docker
- openstack token issue
- webtob
- k8s
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |