이번 공강구조대 프로젝트에서 FCM을 이용하여 모바일 사용자에게 푸쉬알림을 보내기로 하여 Firebase관련 설정을 해야 했다.
설정파일에서 firebase admin sdk를 스프링부트에서 사용하기위해 연결에 사용될 json파일을 프로젝트에 저장해야하는데, 로컬에선 나말곤 못보니 상관없지만 깃헙에 프로젝트를 올리게되면 누구나 다 해당 json파일을 볼 수 있기에 보안적으로 문제가 된다고 생각했다.
따라서, 해당 json파일을 암호화 하여 다른 사람들이 보지 못하게 설정하는 방법을 찾아보았다.
github-secret, gpg(GnuPG)를 이용해서 파일을 암호화 하고 커밋하고 빌드 과정에서 해당 파일을 복호화 하는 방식이 좀 보였는데 추가로 설치해야 되는 부분도 있고 해서 이 방식으로 하지 않기로 했다..
*여기랑 여기를 참고하면 위 방식으로도 가능할 것 같다
그래서 JSON자체를 github secret에 등록하고 그걸 파일로 복원시켜 저장하는 방식을 선택했다.
원리는 말처럼 간단하다 github secret에 json파일을 통채로 저장하고 workflow파일에서 빌드전에 json파일을 secret에서 꺼내와 원하는 경로에 저장하는 것이다.
천천히 살펴보면
1. 이렇게 github secret에 원하는 json파일을 저장한다.
- name: create-json
id: create-json
uses: jsdaniell/create-json@v1.2.2
with:
name: "emptyAdminSDK.json"
json: ${{ secrets.FIREBASE_JSON }}
dir: 'src/main/resources/firebase/'
2. workflow내의 deploy.yaml파일에서 해당 과정을 추가해준다.
여기서, name은 저장될 json의 이름을 의미하고
json은 말그대로 json데이터를 넣어주면 된다.
dir의 경우 없어도 되지만, 난 해당 경로에 json파일이 존재해야 설정파일에서 해당 json파일을 열 수 있기에 설정해주었다.
위 과정은 깃헙 마켓플레이스에 create-json를 검색해보면 나오는 여기에 자세히 나와있다.
참고한 글을 보면 json을 github secret에 저장하지 않는게 좋다고 하는데.. 뭐 일단 급한불부터 끄는게 우선이라 일단 이렇게 설정했다 !
-끝-
참고
https://github.com/marketplace/actions/create-json
'DevOps' 카테고리의 다른 글
리액트는 무슨 웹서버를 이용해서 호스팅 될까? (0) | 2023.05.05 |
---|---|
React+Github Action+AWS로 CI,CD 하기 (0) | 2023.05.01 |
[AWS RDS] 로컬에서 RDS 연결이 안된다..! (0) | 2023.04.29 |
Github secret으로 배포용 application.yml 암호화 하기 (0) | 2023.04.17 |
GitHub Action, AWS S3,CodeDeploy, EC2로 CI, CD해보기 (2) (0) | 2023.04.16 |