Heroku에 .env파일 적용

Park Choong Ho·2020년 1월 31일
2

오늘 Heroku에 배포하다 꽤 땀이 나는 일이 발생했습니다.

배포하려는 프로젝트에 aws S3를 이용한 logic이 있었는데 해당 AWS KEY를 .env에 저장해 있었습니다. .gitignore 파일 리스트에 .env 파일을 입력해 두었습니다. (보안상 드러나서는 안되는 설정들을 저장해두는 파일입니다.)

이 상태에서 heroku에 배포를 하니 heroku 서버에서 .env 파일에 설정해 놓은 변수들을 읽어오지 못해 서버가 작동하지 않는 상황이 일어났습니다.

여기서 결국 큰 실수를 해버리고 맙니다........

빨리 서버가 돌아가는 것을 확인하고 싶은 나머지, 중요한 환경 변수들을 모두 고대로 적어서

process.env.AWS_KEY || "어쩌구 저쩌구"

위와 같은 형태로 코드를 작성하고 heroku에 push했습니다. 그 다음 나름 github에는 이 사항들이 올라가면 안된다고 생각해 (하나는 알고 둘은 모르는...) 환경 변수를 하드코딩한 것을 지우고 github에 push했지만 commit에는 기록이 남는다는 사실...(더 놀라운 것은 이를 aws에서 파악하고 저에게 바로 email과 전화를 했다는 사실입니다.)

그래서 우선 저는 제 원격 저장소에 남아있는 commit을 지우기 위해 고군분투했습니다. 전에 맘에 안드는 commit이 있어 이를 되돌릴 때 사용했던 git revert 명령어는 해당 commit을 지워주는게 아니라 원격저장소의 상태를 그 commit이 있기전으로 되돌리는 것일 뿐... (상태를 되돌리는 commit을 다시 날리는 것입니다.) 과거에 있던 제 잘못을 지워주지는 못하더군요. 다행히 구글링 끝에 git reset HEAD 명령어가 최근 commit을 지워준다는 것을 알게되어 이를 적용해 급한불은 껐습니다.

그리고 aws에 들어가서 해당 user와 bucket을 모두 삭제했습니다. 왜냐하면 aws에서 온 메일 내용을 읽어보니 제 보안사항이 유출되어 있는 파일을 지우는 것만으로는 보안이 유지되지 않는다고 했기 때문입니다. (물론 당연한 얘기이기도 합니다.)

aws 보안 사고를 어느정도 수습한 뒤, 다시 heroku에 배포를 하려고 하니 .env 파일에 있는 사항을 heroku로 보낼 수 있는 방법을 찾다 heroku-dotenv package를 찾게 되었습니다. 사용 방법은 아래와 같습니다.

$ npm i -g heroku-dotenv
$ heroku-dotenv push

이렇게 하면 heroku-dotenv 가 제가 .env 파일에 저장해 놓은 환경변수들을 연결되어 있는 heroku서버에 전달하고 적용시킵니다.

profile
백엔드 개발자 디디라고합니다.

0개의 댓글