git 프로젝트의 secret key 관리, heroku 배포 시 secret key 관리
이전에 구글 로그인을 구현했는데 구현을 다 하고 나서 문제가 생겼다.
https://tose33.tistory.com/1303
Google OAuth2
구글 로그인 구현 https://lsh-instaweb.herokuapp.com/login 로그인 lsh-instaweb.herokuapp.com OAuth (Open Authorization) 만든 웹사이트에 구글로 로그인을 구현하고 싶어서 이에 대해서 공부해봤다. 요즘 많은 웹사이
tose33.tistory.com
구글 api 에 내 클라이언트를 등록하고 나면 secret key 가 발급되고, 해당 키로 구글과 소통하게 된다.
프로그램을 만들때 git 같은 version control system 은 필수다.
그렇다면 git 에 올릴때 secret key 는 어떻게 감춰야 할까?
우선 결론부터 말하면 여러가지 방법이 있는데 나는 환경변수에 등록하는 방법을 선택했다.
이제 두번째 문제가 생겼다.
나는 내 웹을 heroku 에 배포할것인데, 환경변수를 로컬에 등록하면 heroku 는 그 값을 어떻게 알수있을까?
secret key 환경변수 등록
환경변수를 등록하는데도 여러가지 방법이 있는데 나는 내가 사용하는 intellij 에 등록하는 방법을 선택했다.
Edit Configurations.. -> Environment variables 에 환경변수를 key,value 로 등록한다.
그 후에 spring의 @Value 를 이용해서 아래와 같이 사용할수 있다.
@Value("${GOOGLE_AUTH_URL}")
private String googleAuthUrl;
@Value("${GOOGLE_LOGIN_URL}")
private String googleLoginUrl;
@Value("${GOOGLE_CLIENT_ID}")
private String googleClientId;
@Value("${GOOGLE_REDIRECT_URL}")
private String googleRedirectUrl;
@Value("${GOOGLE_SECRET_CLIENT}")
private String googleClientSecret;
이렇게 되면 이 변수들 (secret key) 은 내 로컬에만 존재하고,
프로젝트를 깃에 올린다고 해도 secret key 들은 올라가지 않게 된다.
heroku 배포 시 secret key 관리
secret key 를 git 에 올리지 않은건 좋다.
그런데 heroku 는 깃을 기반으로 배포된다.
그러면 이 상태에서는 heroku 가 해당 secret key 값들을 알수가 없으니 당연히 빌드가 실패한다.
heroku 는 config vars 라는 기능을 제공한다.
https://devcenter.heroku.com/articles/config-vars
Configuration and Config Vars | Heroku Dev Center
Last updated March 09, 2020 A single app always runs in multiple environments, including at least on your development machine and in production on Heroku. An open-source app might be deployed to hundreds of different environments. Although these environmen
devcenter.heroku.com
config vars 는 쉽게 말해 heroku 에 등록하는 환경 변수다.
위 링크의 레퍼런스에 현재 등록된 config vars 조회, config vars 등록, 삭제 방법이 나와있다.
이전에 intellij 환경 변수에 등록한 GOOGLE_SECRET_CLIENT 와 같이 등록해주면, 이제 heroku 도 해당 변수들의 실제 값을 알수가 있다.