티스토리 뷰

728x90
반응형

 포스팅은 데이터베이스 보안에 대해 알아보겠습니다.


데이터베이스 보안은 매우 중요한 부분입니다. 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 등에 대해 더욱 심도 있는 공유가 될 수 있도록 노력하겠습니다.

고맙습니다.

728x90
반응형