secret 파일 관리하기(feat.서브모듈)

HeoSeungYeon·2022년 1월 30일
2

Record the project

목록 보기
2/3
post-thumbnail

🗯️ 문제 : 민감한 정보는 노출되지 않게 관리 해야한다.


최종 프로젝트를 진행하면서 AWS 계정 정보나 DB 계정 정보 등 민감한 정보들을 application.yml 에 담아야 했습니다.

프로젝트는 협업 및 버전 관리를 위해 Github Repository을 사용하는데, 민감한 정보들이 노출되면 안되므로 이를 숨기는 방법들이 여러가지가 있습니다.

  • 외부 서비스 이용
    • Spring Cloud Config(Vault), AWS Service Manager
  • 설정파일 암호화
  • Git Submodule
  • Git Secrets 이용

이 중 우리 프로젝트에 적용하기로 결정한 것은 Git Submodule 입니다. 결정한 이유로는 크게

  • 기존 코드를 추가 및 수정하는 비용이 제일 적고
  • 나름 쉽게?! 적용할 수 있다!

정도로 볼 수 있겠습니다 😄

🔥 해결 방법 : Git Submodule 이용


Git Submodule 이란?


서브모듈은 깃 레포지토리를 사용할 때, 메인 레포지토리(상위)에서 다른 레포지토리(하위)의 파일을 사용할 때, 이 둘을 연결하고 관리하기 위한 도구 입니다. 사용하는 목적은 다양할 수 있겠지만 저희는 민감한 정보(Secret)들을 관리하기 위해 위 도구를 사용하였습니다.

Git Submodule 적용 방법


  1. private Repository 생성

먼저 민감한 정보들이 담긴 설정파일을 관리할 repository를 private으로 생성해야 합니다.

저희는 ‘Everevent-Kazedon-BE’ Organization을 따로 생성하고( 프로젝트 레포지토리는 프로그래머스 데브코스 Organization에서 public으로 관리되어지고 있습니다.) 해당 Organization에 security라는 private 레포지토리를 생성하였습니다.

  1. submodule 등록

하위 레포지토리(서브 모듈)을 만들고 설정파일을 두었으면 상위 레포지토리(메인)에서 아래 명령어를 통해 서브모듈을 등록해야 합니다.

git submodule add https://github.com/{사용자명}/{저장소명}.git {폴더명}

폴더명은 resources/config 하위에서 설정파일을 관리하기 위해 resources/config 폴더로 설정하였습니다.

그러면 .gitmodules 파일이 루트 디렉터리에 생성되고 내용은 다음과 같습니다.

[submodule "src/main/resources/config"]
	path = src/main/resources/config
	url = https://github.com/Everevent-Kazedon-BE/security.git
  • path 정보와 하위 레포지토리 url 을 확인할 수 있습니다.
  1. 서브 모듈 commit 최신화하기

서브 모듈 레포지토리의 변경 사항을 메인 레포지토리에 적용하기 위해선 서브모듈 레포지토리의 upstream에 반영된 커밋을 메인 레포지토리에 가져와야 합니다.

git submodule update --remote

위 명령어를 실행하게 되면 메인 레포지토리 현재 브랜치의 서브모듈(config) commit을 서브모듈 repository의 최신 commit으로 변경하고 이는 파일 변경 이력으로 남게 됩니다.

+추가)

해당 프로젝트를 진행하는 팀원이 있을 경우, 팀원의 로컬 레포지토리에서도 submodule을 관리해야 할 때는,

git submodule init

위 명령어를 통해 팀원 로컬의 메인 레포지토리에서 .gitmodules 파일에 작성된 submodule을 관리할 수 있습니다.

회고( 거의 예고 )


서브모듈을 프로젝트에 적용한 배경 및 방법에 대해서 간단히 알아보았습니다!

다음 포스팅에선 서브모듈을 다른 organization의 private 레포지토리를 사용함에 따라 github action 을 사용할 때 발생한 문제에 대해서 알아보도록 하겠습니다.

📖 참고문서


Git Submodule 설정하기

https://jujeol-jujeol.github.io/2021/07/12/git-submodule-적용하기/

Git: 서브모듈 이해하기 (git submodule)

[Git] Git Submodule에 대하여

git Submodule 사용하기

git submodule로 중요한 정보 관리하기

0개의 댓글