Github

GPG를 이용하여 Git 커밋에 서명하기

커밋에 서명이 필요한 이유

Git은 분산형 버전관리 시스템(VCS, Version Control System)이기 때문에 가지고 있는 태생적인 문제가 있다. Subversion과 같은 중앙 집중형 버전관리 시스템은 모든 수정 사항이 중앙(버전관리서버)에서 관리 되기 때문에 사용자가 자신의 수정 사항을 소스 트리에 저장하고 싶으면 중앙에 있는 버전관리 시스템으로 커밋(서브버전 기준)하여야 한다. 인증 이 필요한 원격의 저장소를 사용한다고 가정하면 커밋할때 마다 매번 인증을 받아야 하고 인증이 정상적으로 완료 되어야 Commit이 반영되기 때문에 인증 정보를 도용당하지 않는 이상 기여자의 정보가 부정(도용) 사용될 경우는 거의 없다.

하지만 Git와 같은 분산형 버전관리 시스템의 경우 로컬에서 자신만의 소스트리의 관리가 가능하고 커밋에 저장되는 커밋의 작성자(Author) 커밋터(Committer)정보가 커밋을 하고자 하는 사람(또는 장치)가 제공하는 정보에 의존하기 때문에 기여자의 정보가 부정(도용) 사용 될 우려가 있다.

최근 나오는 치팅의 대부분은 권위있는 사람이나 사이트 또는 단체로 가장하여 사용자의 결제 정보를 포함한 개인 정보를 탈취하는 것이다.

프로젝트의 관리자가 Pull Request를 받았다고 가정하자. 가장 이상적인 관리 방법은 관리자가 모든 코드를 리뷰 하고 문제가 없을 경우에만 해당 요청을 승인 하는것이지만 관리자가 모든 코드를 리뷰 하지 못하는 경우 앞서 학습된 기여자의 평판에 의존 하여 승인 여부를 결정 할 수 있다. 공격자는 관리자가 신뢰할 만한 기여자의 이름을 도용하여 Pull Request를 하면 관리자는 도용된 기여자의 평판을 기반으로 승인 여부를 결정할 수 있기 때문에 문제가 발생할 수 있다. 그렇다면 이러한 명의의 도용을 막는 방법은 무엇이 있을까?

utterances: github issue as comment for Hugo

utterances: github issue as comment for Hugo

Simple method

thmem/<theme-name>/partials/ 디렉터리에 utterances.html 파일을 만들고 아래 와 같은 내용을 추가 한다.

thmem/<theme-name>/partials/utterances.html

<script src="https://utteranc.es/client.js"
        repo="<username>/<username>.github.io"
        issue-term="pathname" 
        theme="github-light"
        crossorigin="anon"
        async>
</script>

<username>/<username>.github.io은 자신의 github username으로 변경 한다.

About authentication to Github

다음과 같은 메일이 왔다.

Hi @euikook,

You recently used a password to access the repository at euikook/wiki.notes with git using git/2.30.2.

Basic authentication using a password to Git is deprecated and will soon no longer work. Visit https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information around suggested workarounds and removal dates.

Thanks, The GitHub Team

Github Blog Token: Token authentication requirements for Git operations

보안 강화를 위하여 2021년 08월 13일 부터 Git 작업을 위한 인증 시 암호를 통한 인증을 지웒 하지 않는다고 한다. 2021년 08월 13일 이후에는 Git 작업을 위해서는 토큰 기반 인증을 사용하거나 SSH 키를 통한 인증을 사용해야 한다.

지금도 2 단계 인증을 활성화 한 사람은 암호를 통한 인증을 사용할 수 없다.

About authentication to Github

Github에 인증하는 방법은 다음과 같다.

  • (2 단계 인증을 통한) username, password
  • Personal access token
  • SSH Key

Github.com에 수정사항을 기여(Contribution)하지 않는 다면 크게 상관 없다.

2 단계 인증을 사용하고 있다면 지금도 계정 암호가 아니라 Personal Access Token을 통해서 인증 해야 하기 때문에 상관이 없다.

Continous Deployment Hugo with Github Actions

Continous Deployment Hugo with Github Actions

Github Page(이하 GH)를 사용하여 정적 사이트를 배포 하고자 한다.

jekyll 유명한 Static Site Generator가 있지만 Go를 공부할 목적으로 Hugo 를 선택했다.

Hugo는 Github Page에서 공식적으로 지원하는 jekyll과 달리 로컬에서 정적 사이트를 빌드 하여 GH 저장소에 push 해주어야 한다.

Github 에서지원하는 CI/CD 인 Github Actions을 이용하여 이를 자동화 할 수 있는데 Github Actions은 일반적은 CI/CD 와 사용법이 비슷하다.