-
[Trouble Shooting] 환경변수를 배포 파이프라인에서 인식하지 못하는 문제SSAFY(프로젝트)/1) relpl - Trouble Shooting 2024. 2. 12. 21:18
1. 문제상황
이 글에서 보안적인 측면을 신경쓰기 위해 포트, ID, Password, Jasypt key같은 환경 변수들을 전부 인텔리제이 내에 환경변수로 따로 빼두었다.그리고 현재 프로젝트는 깃랩 러너를 이용해 CI/CD를 구축했는데 환경변수가 없어서 재대로 배포가 안되는 문제가 생겼다.빌드부터 안되길래 원인 파악을 하다 보니 환경변수들을 몰라 Jasypt로 암호화한 DB에 접근하지 못해 문제가 생기는것을 확인했다.
2. 고민해본 내용
처음 환경변수들을 Jasypt로 암호화하기 전에 고민했던건 env.properties 파일을 따로 만들고, 이 파일을 도커에서 접근하도록 하려고 고민했었다.하지만 도커를 처음 써보는 입장에서 도커 안에 빌드에 필요한 yml파일을 넣고 파이프라인에서 이를 참조하도록 하는 작업에 어려움을 겪었고 Jasypt라는 좋은 대안을 찾았다.
이후 CI/CD 파이프라인에서 Jasypt로 암호화된 변수들을 복호화하기 위해 Jasypt의 key가 필요했고 처음 해당 내용을 찾을때는 dockerfile에 넣는 방법이 나왔다.하지만 결국 깃에 dockerfile이 올라가므로 dockerfile에 복호화에 필요한 키들을 넣게되면 보안적으로 문제가 있다고 판단되었다.이후 찾아보니 아래와 같은 방법으로 해결했다.
3. 해결 방안
크게 두 가지 방법을 이용해 해결했다.
1. 깃랩에서 환경변수 등록
Variables에 들어가서 내가 등록하고싶은 환경변수의 Key값과 실제 값을 넣는다
2. 파이프라인에 해당 환경변수 내용 추가-e 키워드를 이용해 원하는 환경변수를 주입(?)시킬 수 있다
- docker run -d --restart always -e TZ=Asia/Seoul -e REDIS=$REDIS -e JASYPT=$JASYPT -e MONGODB=$MONGODB -e REDIS=$REDIS -p $SPRING:$SERVER/tcp --name test $IMAGE_NAME:latest
4. 느낀점
로컬 환경과 서버 환경의 차이점을 느꼈고, 별거 아닌 행동이었지만 보안에 신경쓰는게 꽤 어렵다는것을 느꼈다.
반응형'SSAFY(프로젝트) > 1) relpl - Trouble Shooting' 카테고리의 다른 글
[Trouble Shooting] 경로가 제대로 나오지 않는 문제 - 2 (0) 2024.02.24 [Trouble Shooting] 경로가 제대로 나오지 않는 문제 - 1 (0) 2024.02.24 [Trouble Shooting] 추천 경로 계산 시간이 너무 느린 문제 (1) 2024.02.12 [Trouble Shooting] TMap Api 요청 도중 Api 키가 정지된 문제 (1) 2024.02.12 [Trouble Shooting] MongoDB가 해킹 당한 문제 (0) 2024.02.12