인텔리제이에서 github를 잘 쓰고 있던 나!
어느날부터 패스워드 기반 인증을 더 이상 지원하지 않으니 PAT(Personal Access Token)을 발급받으라는 안내 문구를 받았다.
github는 왜 패스워드 기반 인증 대신 PAT를 사용하게 되었을까?🤔
동아리의 DevOps 스터디에서 github에 대한 TMI를 한가지씩 발표하기로 하였고 때마침 이전부터 궁금했던 github이 PAT를 사용하는 이유를 알아보기로 하였다.
2021년 8월 13일부터 패스워드 기반 인증을 더 이상 지원하지 않습니다. 대신 PAT를 사용하도록 권장합니다.
GitHub는 플랫폼을 최대한 안전하게 만들고자 합니다. 유명한 클라이언트가 암호를 해킹당하면 GitHub는 그들이 얼굴에 알을 품을 것이라고 걱정합니다. 사용자가 GitHub 리포지토리에 대한 권한이 있는 사람, 사용자가 가져야 하는 세분화된 리포지토리 액세스 유형에 대해 생각하도록 강제하고 취약한 암호가 사용될 가능성을 제거함으로써 Git 플랫폼이 더 안전해질 것이라는 희망이 있습니다.
- PAT 이점
- Github의 토큰은 기본 해시에 불과하며, 이는 암호 기반 인증에 필요한 무거운 암호화/암호화 해제보다 더 효율적입니다. 이를 통해 Github에서 인증 프로세스를 빠르게 완료할 수 있습니다.
- 토큰은 사용 케이스 또는 장치 별로 여러 개를 생성할 수 있습니다.
- 토큰은 언제든지 각 토큰에 대한 접근 권한을 철회할 수 있습니다.
- 토큰은 임의로 생성되는 일련의 문자열이며 암호 기반 인증 시스템에 대해 실행할 수 있는 무차별 대입 공격에 영향을 받지 않습니다. 따라서 토큰 기반 시스템은 암호에 의존하는 시스템보다 더 안전합니다.
- 토큰을 한 번 생성하고 나면 토큰을 다시 확인할 수 없기 때문에 username과 password가 해킹되더라도 토큰이 유출되는 것을 막을 수 있습니다.
개인 액세스 토큰(Personal Access Token) 유형 2개
- 세분화된 개인 액세스 토큰 → 베타 기능
- 세분화된 개인 액세스 토큰은 GitHub의 조직, 사용자 및 리포지토리 API에 대한 액세스를 제어하는 50개 이상의 세분화된 권한 집합에서 권한이 부여됩니다 . 각 권한은 '액세스 금지', '읽기' 또는 '읽기 및 쓰기' 기준으로 부여될 수 있습니다
- 이점
- 각 토큰은 단일 사용자 또는 조직이 소유한 리소스에만 액세스할 수 있습니다.
- 각 토큰은 특정 리포지토리에만 액세스할 수 있습니다.
- 각 토큰에는 개인 액세스 토큰(클래식)에 부여된 범위보다 더 많은 제어를 제공하는 특정 권한이 부여됩니다.
- 각 토큰에는 만료 날짜가 있어야 합니다.
- 조직 소유자는 조직의 리소스에 액세스할 수 있는 세분화된 개인 액세스 토큰에 대한 승인을 요구할 수 있습니다.
- 개인 액세스 토큰(클래식)
- 개인용 액세스 토큰(클래식)에는 광범위한 읽기 및 쓰기 범위 의 권한이 부여됩니다 . 또한 영구적으로 접근 가능하다.
- 개인 액세스 토큰(클래식)은 덜 안전합니다. 그러나 일부 기능은 현재 개인 액세스 토큰(클래식)에서만 작동합니다.
- 이점
- 개인 액세스 토큰(클래식)만 귀하 또는 귀하가 구성원이 아닌 조직이 소유하지 않은 공용 리포지토리에 대한 쓰기 액세스 권한이 있습니다.
- 외부 공동 작업자는 개인 액세스 토큰(클래식)만 사용하여 공동 작업자인 조직 리포지토리에 액세스할 수 있습니다.
- 개인 액세스 토큰(클래식)만 GraphQL API에 액세스할 수 있습니다.
- 세분화된 개인 액세스 토큰에는 일부 REST API 작업을 사용할 수 없습니다. 세분화된 개인 액세스 토큰에 대해 지원되는 REST API 작업 목록은 " 세분화된 개인 액세스 토큰에 사용 가능한 엔드포인트"를 참조하십시오.
- classic PAT 토큰 예시:
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
- Fine-grained PAT 토큰 예시:
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
prefix
를 통해 classic 토큰인지 세분화된 개인 액세스 토큰인지 확인 가능하다.
[참고자료]
https://ourtechroom.com/tech/why-personal-access-token-how-to-generate-it-in-github/
https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github/
https://github.blog/changelog/2022-10-18-introducing-fine-grained-personal-access-tokens/
https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Fix-GitHubs-support-for-password-authentication-was-removed-error