[Node] 비밀 설정 정보 관리

2023. 5. 19. 18:00기술 창고/Node.js

728x90
반응형
SMALL

개발 프로젝트를 진행하다보면 감추어야할 정보들이 있습니다.

예를 들어서 DB 계정 정보같은 것들 말이죠.

따라서 이러한 정보들을 감추는 작업이 필요합니다.

그 뿐만 아니라 개발 프로젝트를 로컬 환경에서 진행하는지 배포 환경에서 진행하는지에 따라 설정값이 변하게 되는데

이번에는 DB 기준으로 환경에 따른 설정과 설정 정보들을 비밀로 관리해보는 시간을 가져볼까 합니다.

 

 

기존에 작성한 index.js 파일을 보면 이런식으로 mongoose.connect 에 직접적으로 DB 정보와 계정정보가 다 노출된 상태로 작성된 것을 볼 수 있습니다.

 

이것을 비밀로 설정하고 관리해주도록 합니다.

 

 

우선 config 폴더를 새로 만들어주고 dev.js, prod.js, key.js 3개의 파일을 만들어줍니다.

- dev.js :로컬 환경에서 사용할 정보를 넣는 곳입니다.

- prod.js : 배포 환경에서 사용할 정보를 넣는 곳입니다.

- key.js : 입력받는 정보에 따라 dev.js / prod.js 둘 중 하나의 DB 정보를 가져오도록 하는 파일입니다.

 

 

index.js 에서 적어놨던 MongoDB 정보들을 빼서 dev.js 에 넣어줍니다.

또한, 주소가 있던 자리에 config.mongoURI, {} 를 넣습니다.

config는 key.js를 require로 호출받은 객체 입니다.

 

dev.js 에는 index.js에서 빼온 MongoDB 주소 정보를 넣어줍니다.

module.exports 로 추출 정보를 mongoURI 라는 항목에 저장해 놓습니다.

 

 

prod.js 는 어플리케이션을 배포한 환경에서 사용할 정보를 가진 파일로서, 위의 이미지에 보이는 MONGO_URI 라는 데이터가 현재 heroku라는 사이트에서 관리해주는 주소 정보를 말합니다.

그 주소 정보는 당연히 MongoDB 주소 정보입니다.

마찬가지로 module.exports 로 추출 정보를 mongoURI 에 저장해놓습니다.

 

 

key.js 는 process.env.NODE_ENV 정보에 따라 module.exports 로 dev.js 와 prod.js 호출해옵니다.

 

 

처음에 변경한 index.js 코드를 살펴보면 connect 안에 config.mongoURI 를 파라미터 값으로 받는데,

해석하면 key.js 에 들어온 NODE_ENV 정보에 따른 prod.js 혹은 dev.js 를 호출해서 그 안에 있는 mongoURI 정보를 가져와서 연결한다는 의미입니다.

 

 

이제 터미널에서 npm run backend 명령어로 서버를 실행해줍니다.

기존에 작성된 코드 내용처럼 DB 연결에 성공하면 나오는 MongoDB Connected... 문구가 나오면 정상적으로 연결된 것입니다.

 

(여기서 개인적으로 주의해야 하는 점은 코드를 생성하거나 추가 했을 때, ctrl + s 를 통해 저장을 하고 실행해야 한다는 점입니다.)

 

이제 민감한 DB 정보 비밀 설정이 완료되었습니다.

이제 추가로 지금까지 작업한 내용을 git에 올려봅시다.

 

 

 

우선 MongoDB 주소 및 계정 정보를 직접 갖고 있는 dev.js 는 git에 올릴 필요가 없으니 gitignore에 추가해주도록 합니다.

추가하고 반드시!! ctrl + s 를 눌러서 저장하도록 합니다.

 

 

터미널에 이제까지 작업한 내용들을 git add . 명령어를 통해 올려주도록 합니다.

그 다음 git status 명령어로 어떤 작업 내용들이 올라갔는지 확인해봅니다.

gitignore 에 추가해서 dev.js 는 올라가지 않은 것을 확인할 수 있습니다.

 

 

git commit -m "비밀 정보 보호" 명령어를 입력하여 로컬 저장소에 커밋해주도록 합니다.

 

 

git push origin main 명령어를 통해 원격지에 push 해주도록 합니다.

 

 

이제 올리는 작업은 완료했으니 git에 가서 확인해보도록 합니다.

정상적으로 "비밀 정보 보호" 라는 메세지와 함께 push 된 것을 확인할 수 있습니다.

728x90
반응형
LIST