;

GitHub PAT 유출 대응: 토큰 삭제와 보안 로그 확인 순서 본문

Programing

GitHub PAT 유출 대응: 토큰 삭제와 보안 로그 확인 순서

WindowsHyun 2026. 7. 16. 11:02
반응형

GitHub PAT가 저장소나 로그에 섞였다고 판단되면 먼저 토큰을 끊어야 합니다. 새 토큰 발급은 그다음입니다.

직접 돌려보지는 않았습니다. GitHub 공식 문서 기준으로 보면 공개 저장소나 공개 gist에 유효한 OAuth token, GitHub App token, personal access token이 올라가면 자동 폐기될 수 있습니다. 저는 그래도 알림을 기다리지 않고 수동 삭제부터 하겠습니다. 노출 범위를 모르는 상태에서 기다릴 이유가 없습니다.

개인 개발 환경에서 토큰은 CI secret, .env, 로컬 설정 파일, Docker 빌드 인자에 남기 쉽습니다. Docker 쪽 설정 파일을 만질 때는 Docker Desktop Windows에서 Local Registry 사용 방법처럼 로컬 설정 경로와 공개 저장소 경로를 분리해서 보는 습관이 필요합니다.

1. 먼저 끊을 것

  • GitHub 우측 상단 프로필에서 Settings로 들어갑니다.
  • Developer settings에서 Personal access tokens를 엽니다.
  • Fine-grained tokens와 Tokens classic을 둘 다 확인합니다.
  • 의심되는 토큰은 바로 삭제하시면 됩니다.

삭제 전 복사나 보관은 하지 않는 편이 안전합니다. 이미 노출됐다고 보는 값이라 새 위치에 남기면 사고 범위만 늘어납니다.

GitHub 문서에는 만료되거나 폐기된 토큰은 Git과 API 요청 인증에 더 이상 쓸 수 없다고 적혀 있습니다. 복구도 안 됩니다. 필요한 작업은 새 토큰을 다시 만드는 일입니다.

2. 새 토큰 만들 때

  • 토큰 이름에는 용도를 적습니다. 예: jenkins-deploy, home-server-backup.
  • 만료일은 짧게 둡니다.
  • 권한은 필요한 저장소와 작업만 고릅니다.
  • 만든 뒤에는 CI secret이나 서버 환경 변수만 바꿉니다.

여기서 욕심내면 나중에 찾기 어렵습니다. 제 기준으로는 classic token보다 fine-grained token을 먼저 고르겠습니다. 저장소와 권한을 더 좁게 잡을 수 있기 때문입니다.

교체가 끝나면 예전 토큰 문자열이 남은 파일을 찾습니다. 공개 저장소만 보면 부족합니다. 개인 서버의 배포 스크립트, Jenkins credential, GitHub Actions secret, .env 백업까지 확인해주시면 됩니다.

저장소 현재 파일과 전체 커밋 이력은 아래 명령으로 확인합니다. 결과가 나오면 해당 파일만 지우고 끝내지 말고 토큰 삭제부터 마쳐야 합니다.

git grep -nE 'ghp_|github_pat_'
git log -G 'ghp_|github_pat_' --all --oneline

3. 보안 로그 확인

GitHub Security log는 최근 90일 동안의 계정 작업을 보여줍니다. Settings의 Archives 영역에서 Security log를 열면 됩니다.

확인할 항목은 다음 정도입니다.

  • personal_access_token: fine-grained token 작업입니다.
  • oauth_access: OAuth access token 작업입니다.
  • oauth_authorization: 토큰 만료나 폐기 시 보일 수 있는 작업입니다.
  • repo: 저장소 쪽 변경입니다.

낯선 시간대의 토큰 작업이나 저장소 접근 흔적이 있으면 비밀번호와 2FA 상태도 같이 확인하셔야 합니다. 토큰 하나만의 문제가 아닐 가능성이 높습니다.

확인

토큰 삭제, 새 토큰 교체, Security log 확인까지 끝나면 최소 대응은 끝입니다. 이후 배포나 자동화 작업에서 인증 오류가 나면 새 토큰 권한이 부족한 상태입니다.

반응형
Comments