본문 바로가기

개발일지/TIL

[230719] [미니] 모여봐요 인생네컷 Git에서 application. properties 보안

이유

💬 Jenkins에서 자동 빌드 및 배포를 위해서 Git Repository에 Application.properties 파일이 포함되어야 했다. 그런데 DB, S3 등 중요한 정보가 담겨 있어서 문제가 되었다. 이걸 해결하기 위해 별도 Private Repository를 만들어 배포 코드 Repository의 Submodule로 사용하기로 했다.

Submodule 적용하기

✔ 진행

1. Private Git Repository 생성
2. Application Repository에서 submodule 추가
    ➡ git submodule add https://github.com/mini-project-evey-team/four-cuts-backend-security.git
3. application.properties 파일을 submodule 폴더로 이동
    ➡  mv ./src/main/resources/application.propety ./for-cut-backend-security
4. build시 application.properties 복사하도록 설정
    ➡ build.gradle에 추가
5.. gitIgnore에 application.properties를 추가
6. git application.properties에 관련 캐시 삭제
    ➡ git rm -r --cached ./src/main/resources/application.properties
7. git commit & push
    ➡ git add .
    ➡ git commit -m "chore: set submodule"
    ➡ git push --recurse-submodules=on-demand

 

✔ build.gradle 설정 추가

processResources.dependsOn('securityInfo')
task securityInfo(type: Copy) {
    from './four-cuts-backend-security'
    include '*.properties'
    into './src/main/resources'
}

 

✔ 결과

 

생각

보안은 항상 중요하다. 하지만 너무나도 지나치기 쉬운 것 같다. Git에 중요한 정보들을 담은 것처럼 말이다. 사후 처리를 하더라도 커밋 내용이 남기 때문에 완벽한 처리로는 볼 수 없다. 이번 기회를 통해 이러한 경각심을 일깨우고 다음 실전 프로젝트부터는 처음부터 적용함으로 정보 보안을 더 철저히 해야겠다.