<MariaDB 공식 문서>
https://mariadb.com/resources/blog/5-essential-practices-for-database-security
문제
팀원들은 Dbeaver과 같은 DB관리 툴을 통해 데이터베이스에 접속하여 개발 중이였다.
DB 관리 툴에서 한 번 유저네임과 패스워드를 입력하면 세션 연결이 유지되어야 하지만, 몇 시간 만에 세션이 만료되어 계속 재연결하여 사용해야 했다.
상황
MariaDB를 AWS EC2 인스턴스에서 Docker Container로 구동하여 사용하고 있었다.
또한 모두 계정 이름을 root로 사용했고 비밀번호도 동일하게 사용했다.
원인
MariaDB 뿐 만 아니라 데이터베이스 보안 규칙에서 로컬 환경에서만 root 권한으로 접속할 수 있다고 한다.
따라서 인스턴스 내의 컨테이너 내부에서만 root 계정으로 데이터베이스를 접속이 허용되는 것이였다.
해결
root계정에 대해 모든 IP를 허용하도록 바꾸는 방법도 있지만 권장하지 않는다. 물리적으로 로컬 환경의 사용자만 허용함으로써 외부 공격을 제한 할 수 있기 때문이다.
→ 개발용 데이터베이스였기 때문에 새로운 계정을 생성 후, 해당 계정에 root권한을 주고 모든 IP에 대한 접속을 허용하도록 했다.
모든 IP 를 허용
GRANT ALL PRIVILEGES ON *.* TO '계정이름'@'%' IDENTIFIED BY '비밀번호';