git에서 커밋에 서명하기

3696 단어 securitygpggit
나는 GPG key 으로 git 에 커밋을 서명하는 습관을 들였습니다. 누가 각 커밋을 생성했는지 알 수 있으므로 소스 코드에 추가 무결성 계층을 추가합니다(관행이 광범위하게 준수되는 경우).

약간의 초기 구성이 필요하지만 그 이후에는 오버헤드가 거의 추가되지 않습니다.

조직에 이를 요구하는 정책이 없더라도 여전히 설정할 가치가 있다고 생각합니다. 어떻게 하는지 봅시다.

조직의 정책에서 요구하지 않더라도 설정할 가치가 있다고 생각합니다. 어떻게 하는지 봅시다.

내가 무엇이 필요 하나?



명백해질 위험이 있으므로 gpg 키가 필요합니다. 이메일에 서명하거나 gopass에 비밀을 저장했다면 이미 가지고 있을 수 있습니다.

그렇지 않은 경우 먼저 만들어야 합니다. 걱정하지 마십시오. 무료이며 너무 고통스럽지 않습니다. 열쇠를 Yubikey에 보관하는 방법을 동료에게 배웠습니다. Check this guide 이 작업을 수행하는 방법을 알고 싶다면.

자식 구성 설정



conditional configuration을 사용하여 업무 관련 저장소를 다른 폴더에 보관하고 있습니다. 일과 사생활을 깔끔하게 구분하기 때문에 추천합니다. This post에는 추가 정보가 포함되어 있습니다.

메인 ~/.gitconfig 에서 가져온 내 구성은 ~/work/gitconfig 에 있습니다. 해당 폴더의 모든 리포지토리에 대한 커밋 서명을 활성화합니다.

[user]
  email = [email protected]
  signingkey = 7C58C79F397ED302595958045F0F068E59529E71
[commit]
  gpgsign = true


이메일은 키에 할당된 이메일과 일치해야 합니다. gpg --list-keys를 실행하여 키의 ID를 볼 수 있습니다. 무언가를 커밋하려고 하면 gpg 키의 암호를 묻는 메시지가 표시됩니다.

서명 시각화



커밋이 올바르게 서명되었는지 여부를 표시하는 git log 플래그가 있습니다( %G? ). 다음 별칭을 사용합니다.

lg = log --pretty=format':%C(yellow)%h%Cred%d%Creset %C(green)%G?%Creset %s %C(cyan) %an, %ar%Creset'


커밋 기록의 발췌 부분은 다음과 같습니다.

43d4e36 (HEAD -> master) N fix typo Mario Fernandez, 13 hours ago
b433463 (origin/master, origin/HEAD) N add on call talk Mario Fernandez, 4 days ago
aae0b0c U Merge pull request #870 from sirech/dependabot/npm_and_yarn/eslint-7.22.0 dependabot-preview[bot], 7 days ago


서명에 대한 정보를 제공하는 커밋 해시 및 분기 뒤에 단일 문자가 있습니다. N는 서명되지 않았음을 의미하고 U는 유효성을 알 수 없는 양호한 서명을 의미합니다. 추가 세부 정보를 위해 서명을 로그 출력의 일부로 표시할 수도 있습니다.

[log]
    showSignature = true


Github



이 정보를 Github에서 직접 시각화할 수 있습니다. these instructions 다음에 gpg 키를 추가할 수 있습니다. 다음과 같이 표시됩니다.



Github는 확인된 커밋에 대한 정보를 UI에 직접 표시합니다. 이 정보를 시각적으로 접근 가능하게 만드는 데 유용합니다.



그게 다야?



예! 아직 gpg 키가 없는 경우 약간의 작업이 필요합니다. 솔직히, 아마 가지고 있어야합니다. 추가 구성을 추가하고 구성을 약간 분리하는 것은 좋은 투자입니다. 한 번에 작은 단계씩 배송을 좀 더 안전하게 만들어 봅시다.

좋은 웹페이지 즐겨찾기