본문 바로가기

[데이터베이스] 12-3. 역할 관리

Notice

이 글은 다음 강의를 수강한 후 학습한 내용을 정리한 글입니다.

- 강의: [K-MOOC] 단국대학교 오세종 교수님의 '데이터베이스의 이해와 활용'

 

역할 관리는 권한 관리의 일부분이라고 볼 수 있다.

 

역할의 필요성

정보 시스템을 개발한 업체에서 여러 개발자가 팀을 나누어 각 업무 영역을 개발한다고 가정해보자. 데이터베이스의 보안 유지를 위해서 각 팀의 개발자들은 자기가 맡은 개발에 관련된 테이블에 접근할 수 있는 권한만 부여받게 된다. 하나의 계정을 여러 개발자에게 부여하는 것은 보안상 적절하지 않아서 개발자 50명에게 각각의 계정을 만들어주었다. 이렇게 일일이 권한 부여하는 방식은 오래 걸리기도 하고, 같은 팀별로 같은 권한을 반복적으로 부여해야 하고, 나중에 일괄 수정하기 어렵다는 번거로움이 있다. 사람이 많고 계정이 많아질수록 관리가 어려워진다. 

 

역할 Role을 사용하면 권한 관리가 좀 수월하다.

같은 권한을 갖는 사람들을 그룹으로 묶어서 관리할 수 있다.

 

역할 부여 순서

(1) 동일한 권한을 갖는 사용자들을 하나의 역할로 묶는다.

(2) 그리고 권한을 역할에 부여한다.

(3) 그 다음에 사용자들에게 역할을 부여한다.

 

장점

- 어떤 팀에 새로운 개발자가 들어오면 이미 생성된 역할을 부여함으로써 필요로 하는 권한들을 손쉽게 할당할 수 있다.

- 어떤 팀에 권한 하나를 추가하면 그 팀에 속한 모든 사용자가에게 권한을 한 번에 부여할 수 있다. 회수 시에도 동일.

 

MySQL에서 역할의 생성과 부여

먼저 사용자 계정을 만든 뒤에 역할을 생성하고 권한, 사용자를 부여한다.

# 역할의 생성
CREATE ROLE team1;

# 역할에 권한 부여
GRANT select, insert, update ON my_db.emp TO team1;
GRANT select ON my_db.dept TO team1;

# 역할을 사용자에게 부여
GRANT team1 TO 사용자계정@접속위치

 

역할 부여 확인

# 팀에게 부여된 권한 확인
SHOW GRANTS FOR team1;

# 유저에게 부여된 권한 확인
SHOW GRANTS FOR 사용자계정@접속 위치;