[mongodb atlas] - OperationFaulure Error 발생

기존에 온라인 강의에서 mongodb atlas를 활용하여 학습을 진행하였으며, 이를 체화하기 위해서 프로젝트를 진행하게 되었다.

이때 이슈는 기존 강의 방식 그대로 구현 시 깃헙에 db접속정보가 코드에 그대로 노출될 수 있기에 보안 문제가 발생할 수 있다.

이를 해결하기 위해서 별도의 파일에서 접속정보를 관리하고 읽어오는 방식으로 DB에 접속하고자 했으며, 해당 파일은 .ignore에 등록하여접속 정보가 노출되지 않게 하고자 했다. 그리고 다른 부분들은 크게 건들지 않았다. 그러나 INSERT하는 코드 부분에서 다음과 같은 ERROR가 발생하며 해당 페이지를 보여주었다.

1.) 먼저는 강의에서 진행했을 경우는 당연히 돌아갔기에 우선적으로 기존과 바뀐 부분부터 살펴보려고 했다. 그래서 먼저는 파일에서 접속정보를 읽어오는 것이 아닌 직접 접속정보를 지정해서 실행을 해봤다. 그러나 동일한 에러가 발생했다.

 

2.) 다음으로 위에 네모 친 에러 메세지 중  user is not allowed to do action [insert] on [playlist.users] 를 보고 접속정보 관련해서 무엇인가 문제가 있다는 생각이 들었고 연습삼아 다시한번 설정해보다가 패스워드가 달라서 그런가?라는 생각으로 mongo atlas에서 기존 사용자를 삭제하고 다시 만들고 접속정보를 얻어서 지정해주었다. 그러나 결과는 똑같았다.

 

3.) 마지막으로 기존에 RDBS를 사용했을 때 각각의 대상에게 CRUD에 대한 권한을 부여할 수 있었던 부분이 생각나서 mongo atlas에서 권한관련 된 부분들을 찾아보고 확인해봤으며, 결과적으로 다음과 같은 화면에서 권한을 부여할 수 있었다.

 

당시에 Only read any ~~ 로 설정이 되어있기에 당연히 읽기는 가능해도 쓰기(insert)를 할 수 없었다. 그리고 다음과 같이 권한을 변경하여 쓰기도 가능하도록 변경해주고 다시 한번 데이터를 insert 해봤다.

결과는 깔끔하게 성공!!!!


 

   결과적으로 해당 메세지는 사용자가 DB에 접근하면서 DB를 조작할 수 있는 권한 관련된 이슈였다. 초반부터 에러메세지만 꼼꼼하게 살펴봤어도 충분히 생각해볼 수 있는 부분이었는데, 페이지 단위로 그냥 똭! 에러메세지가 나오다보니 당황해서 전혀 상관 없는 부분부터 해결을 시도해나갔다.

 

   해당 이슈는 보통 강의에서는 동작하도록 설정을 따라하다보니 마주치기는 드문 에러가 아닐까라는 관점에서 실제 해당 권한이 없을 경우 에러가 어떤식으로 나타나는지 확인해 볼 수 있는 좋은 기회라 생각한다.