정보보안공부

DBMS_day16 본문

데이터베이스

DBMS_day16

Steady_sp 2017. 8. 1. 12:31

# Limit to Hosts Matching : 계정을 생성할 때 설정하는 옵션인데, 반드시 설정해야 하고 생략할 수 없다. 이 계정으로 어느 IP에서 접속하는 것을 허용할 것인지를 지정하는 옵션이다. 보안을 위해서 계정을 만들 때 특정 IP로 제한을 함으로써 계정에 비밀번호가 유출됐을 때 피해를 최소화할 수 있는 옵션이다.
특정 IP 한개로만 제한할 수도 있고, 모든 IP에서 접속할 수 있게 허용할 수도 있고, 특정 IP대역에서만 접속할 수 있게 제한할 수도 있다.

 

# IP대역으로 제한한다는 것은 예를들어

100.100.100.1~254 중에 어느 IP로든지 접속해도 접속을 허용하겠다라는 설정하는 것을 뜻 한다.

 

# 제한할 IP를 %로 설정하는 것은 어느 IP에서도 접속할 수 있게 허용하겠다라는 설정이다.

 

# 기본적으로 MySQL을 설치했을 때는 계정 생성, 권한 설정을 외부에서는 진행할 수 없게 막혀있다.

 

# GRANT ALL ON *.* to 'root'@'%' identified by 'qkdqoehd92' WITH GRANT OPTION;
위 MySQL 쿼리를 root 계정으로 어느 IP에서든지 계정을 만들거나 권한을 설정하는 것을 할 수 있게 하겠다.
( 위 쿼리는 로컬 접속을 진행해야 사용할 수 있다. )
( 위 쿼리를 사용하고 exit로 mysql 나간뒤 systemctl restart mysql 리눅스 명령어 실행 )

 

# MySQL은 패스워드 복잡성을 반드시 만족해야 한다.

 

# 패스워드 복잡성 : 비밀번호를 복잡하게 알파뱃 대문자, 소문자 , 숫자, 특수문자 중에 3가지 이상이 조합되야한다.

 

====================VMWare에서 사용======================

# VMWare Nat 네트워크 타입이라는 것을 사용하고 있다.

# Nat 네트워크일 때 통신할 때 IP가 다른것으로 바껴 통신이 진행된다.

# 실제PC와 NAT 네트워크인 가상 컴퓨터가 통신할 때 실제PC IP가 100.100.100.1로 변경되어서 통신이 진행 된다.

=======================================================

 

# 계정에 IP를 제한할 때
100.100.100.0/255.255.255.0
-> 위설정은 100.100.100.1 ~ 100.100.100.254 범위의 접속을 허용하는 설정이다.

 

# MySQL에 계정을 생성했을 때 그 계정이 아무것도 못한다.
USE쿼리, SELECT쿼리 모두 불가능하다 로그인만 가능

 

# 계정권한관리 : 특정 계정이 어떤 SQL을 사용할 수 있게 할 것인지를 지정하는 것이다.

 

# SCHEMA Privileges 메뉴는 계정에 권한을 부여하는 메뉴이다.
-> add entry -> selected schema -> employees 설정

 

# 계정에 권한 설정을 데이터베이스 별로 다르게 설정할 수 있다.
-> selected schema

 

# 계정에 권한 설정을 모든 데이터베이스에 일괄적으로 동일하게 설정할 수도 있다.
-> all schema

 

# Administrative Roles : 업무별로 권한을 그룹으로 만들어놓았다.

 

# test1 계정 delete하기

 

=====================쿼리로 계정만들기=====================

# create user 'ceo'@'%' identified by 'qkdqoehd92';
-> 위 SQL은 ceo라는 이름으로 계정을 만드는데, 어느 IP에서든지 접근 가능하게 설정하고 비밀 번호를 지정한 qkdqoehd02로 설정하겠다.

 

# grant : 권한을 설정하는 쿼리

 

# grant select on *.* to 'ceo'@'%';
-> 위 SQL은 ceo라는 계정이 모든 데이터베이스를 대상으로 select 쿼리를 사용할 수 있게 설정한다.
-> %부분을 create 의 'ceo'@'%' 와 같게설정

 

# select * from shopDB.memberTBL;
-> 실행

 

# insert into shopDB.memberTBL values (
"오진석", "따까리", "수빈이"
);
-> 실행안된다.

 

# select * from mysql.user;
-> mysql이라는 데이터베이스에 user라는 테이블에는 만들어져 있는 계정 정보가 저장 돼 있는 테이블이다.

 

# update mysql.user set Host = '100.100.100.1' where User = 'ceo';
-> 위 쿼리를 통해 ceo 계정에 접근 제한 IP를 100.100.100.1로 변경하는 것이다.

 

# flush privileges
-> 계정 관련된 설정을 적용시키라는 쿼리이다.

 

# set password for ceo=password('qkdqoehd92');
-> 나중에설명

 

# create user 'staff'@'%' identified by 'qkdqoehd92';

 

# grant select, insert, delete on shopDB.* to 'staff'@'%';
-> 위 쿼리는 staff계정에 권한을 shopDB 데이터베이스에 select, insert, delete 권한을 부여하겠다.

 

# select * from mysql.user;
-> mysql.user 목록보기

 

# drop user 'ceo'@'100.100.100.1';
-> ceo계정을 삭제하는 쿼리

 

# revoke delete on shopDB.* from 'staff'@'%';
-> 위 쿼리는 staff 계정에 shopDB 데이터베이스에 부여했던 delete 권한을 제거하겠다.

 

# select * from mysql.user where User = 'staff';
-> staff 계정에 delete권한 제거됬는지 확인

 

# show grants for 'staff'@'%';
-> staff 계정에 부여한 권한을 확인한다.

 

# revoke all on shopDB.* from 'staff'@'%';
-> shopDB에 부여한 모든권한을 제거한다.

 

# 내일은 지금까지 사용한 SQL을 좀 더 세부적으로 다양한 기능을 사용 해 볼 예정

< GUI를 통한 계정 생성 >

 

-> 기본적으로 MySQL을 설치했을 때는 계정 생성, 권한 설정을 외부에서는 진행할 수 없게 막혀있다.


 

-> VMWare나 PuTTY를 이용해 mysql창 들어가서

-> grant all on *.* to 'root'@'%' identified by 'qkdqoehd92' with grant option;

-> 위 MySQL 쿼리를 root 계정으로 어느 IP에서든지 계정을 만들거나 권한을 설정하는 것을 할 수 있게 하겠다.

 

-> Limit to Host matching = 100.100.100.%을 이용해 IP대역 저장

-> 100.100.100.1~254까지 사용가능하다.

-> 설정해놓은 test1의 IP가 100.100.100.1~254이므로 가상컴퓨터의 IP 100.100.100.100 으로 test1의 계정을 사용 할 수 있다.

 

< 쿼리를 통한 계정 생성 >

-> create user 'test'@'%' identified by 'qkdqoehd92' 로 qkdqoehd92비번으로된 test계정을 생성한다.

-> grant select on *.* to 'test'@'%'를 통해 select권한 사용가능하도록 설정

 

-> test계정에서 select쿼리 사용가능

 

-> insert는 사용되지 않는다.

 

-> user계정목록확인가능

 

-> update로 수정하는데 test계정의 Host를 100.100.100.1로 수정한다.

-> flush privileges; 로 설정사항 적용한다.

 

-> staff계정을만든다.

-> staff 계정으로 shopDB 데이터베이스에 select, insert, delete 권한을 부여하겠다.

 

-> revoke를통해 insert 권한을 제거할 수 있다.

 

-> revoke all : 모든 권한을 제거 할 수 있다.

 

 

 

'데이터베이스' 카테고리의 다른 글

DBMS_day18  (0) 2017.08.03
DBMS_day17  (0) 2017.08.02
DBMS_day15  (0) 2017.08.01
DBMS_day_14  (0) 2017.07.28
DBMS_day13  (0) 2017.07.27
Comments