git-crypt (git 암호화) 사용해보기 (Mac)

2024. 11. 19. 20:11·개발노트/기타
반응형

API Key 등을 따로 파일 분리하여 관리하다보면 싱크가 안 맞는 경우가 생기는 게 조금 불편하다고 생각했다.

(원래 형상관리를 깃이 편하게 해주는데 깃에 올리지를 않으니..)

그래서 깃에는 올리되 특정 인원만 해당 파일을 볼 수 있게 암호화 하는 방법이 있지 않을까? 하는 생각으로 검색해봤고,

그에 대한 기록을 작성해두는 포스팅이다.

참고로 새삼스럽게 적어보자면 맥 환경을 기준으로 작성했다.


1. 사용 준비

1-a. GPG 설치

❓ GPG란?
GPG(gnupg, GNU Privacy Guard)는 데이터를 암호화하고 디지털 서명을 생성할 수 있는 오픈 소스 소프트웨어입니다. 주로 이메일, 파일, 코드 등의 보안을 유지하기 위해 사용됩니다. GPG는 공개 키 암호화를 사용하여 데이터를 안전하게 암호화하고, 디지털 서명을 통해 데이터의 무결성과 출처를 확인할 수 있습니다.
brew install gnupg

 

1-b. git-crypt 설치

brew install git-crypt

 

 

1-c. 공개키 만들기

git-crypt 생성자가 아닌 팀원들은 모두 만들어서 공유해야 한다.
기본적으로 초기에 git-crypt를 설정한 사람은 올리고 내릴때 자동으로 encrypt decrypt가 되지만, 다른 collaborator들은 적용되지 않으므로 추가적인 설정이 필요한데 이때 사용하는 키파일이다.
gpg --full-generate-key

<키 생성 시 권장 설정값>

1. Key Type: RSA and RSA (옵션 1)

2. Key Size: 4096 bits

3. Expiration Date: 설정 (예: 1y 또는 무제한 0)

4. User ID: 이름과 이메일 주소

5. Passphrase: 강력한 패스프레이즈 설정 (추후 git-crypt unlock 할 때 비밀번호로 사용됨)

 

gpg --export -a "[A@example.com]" > [A_public_key].asc

위에서 생성한 키를 공개키로 내보낸다. 각 [] 괄호 안의 값은 알맞게 셋팅해주자.
그리고 만들어진 ```[A_public_key].asc``` 파일을 git-crypt 생성자에게 전달하면 된다.

 

 

2. 프로젝트 적용

2-a. 프로젝트 폴더에서 git-crypt 초기화

git-crypt init

그러면 .git/git-crypt가 추가되고, git-crypt 할 수 있게 된다.

 

2-b. 프로젝트 폴더에 .gitattributes 파일 작성

[암호화할 파일의 경로] filter=git-crypt diff=git-crypt

vim .gitattributes

 

2-c. 프로젝트에 팀원들의 공개키 추가

2-a, 2-b를 진행한 git-crypt 생성자가 해주면 되는 과정이다.
gpg --import [A_public_key].asc

생성자의 gpg 키 리스트에 팀원 공개키 추가하는 과정이다.

최초 1회만 하면 될 것으로 추정하는데, 직접 확인해본 것은 아니긴 하다.

 

gpg --list-keys

명령어를 통해 gpg 키 리스트에 위 공개키가 잘 추가됐는지 확인해볼 수 있다.

 

git-crypt add-gpg-user --trusted [A@example.com]

gpg 키 리스트에 추가한 사용자를 프로젝트의 git-crypt에도 추가해준다.

여기까지 해주면 git-crypt 생성자의 역할은 끝이다.

 

2-d. 암호화된 파일 복호화 하기

생성자가 공개키를 추가해주고 나면, git-crypt 생성자가 아닌 팀원들은 이제 파일을 암호화된 파일을 받아 복호화 할 수 있다.
git-crypt unlock

프로젝트를 ```pull``` 한 후 위 명령어를 실행하면 비밀번호를 입력하라고 한다.

1-c에서 5번 과정에 입력한 비밀번호를 사용하면 된다.

 

혹시라도 Local change가 있다면 복호화가 불가능하므로, 수정사항이 있다면 discard를 하든 백업을 해두든 하자.

(해보진 않았지만 stash도 괜찮겠지?)

 

 


 

 

 

일단 암호화 한 파일을 깃에 올리고 다른 계정에서 해당 파일 복호화하는 작업까지 해보긴 했는데,

아직 낯설고 이해도가 낮다는 판단 하에 실제로 팀 내에 도입하지는 않았다.

 

테스트해보지 않았지만, 초기에 git-crypt를 설정한 사람이 아니더라도 collaborator가 또 사용자를 추가해 줄 수 있을까?

만약 아니라면 다른 사람이 퇴사해도 공용으로 사용할 수 있는 최고 관리자 계정을 또 따로 둬야 할 것 같은데..

나중에 기회가 된다면 좀더 계속 알아보고 싶은 부분이다. 

(API Key 외부에 백업해두고 싱크 안 맞고 하는거 너무 불편하기 때문에..)


<도움 받은 링크들>

  • [git] git-crypt

 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'개발노트 > 기타' 카테고리의 다른 글

git head 사라짐;; (유실된 커밋 복원)  (0) 2022.12.25
Moving git repository and all its branches  (0) 2022.12.16
'개발노트/기타' 카테고리의 다른 글
  • git head 사라짐;; (유실된 커밋 복원)
  • Moving git repository and all its branches
Jeck Lee
Jeck Lee
Android까지의 정복을 노리고 있는 iOS 앱 개발자입니다
  • Jeck Lee
    쩩쩩노트
    Jeck Lee
  • 전체
    오늘
    어제
    • 분류 전체보기 (39)
      • 개발노트 (37)
        • iOS (17)
        • Android (1)
        • Flutter (15)
        • JavaScripit (1)
        • 기타 (3)
      • 자유노트 (2)
        • 이 앱 저 앱 사용기 (1)
  • 인기 글

  • 최근 글

  • 링크

    • 쩩깃
  • 태그

    Xcode
    APPLE LOGIN
    sns login
    Android
    Firebase
    Flutter
    Swift
    git
    SwiftUI
    ios
  • «   2025/07   »
    일 월 화 수 목 금 토
    1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31
    250x250
  • hELLO· Designed By정상우.v4.10.1
Jeck Lee
git-crypt (git 암호화) 사용해보기 (Mac)
상단으로

티스토리툴바