자동 발급 러너 식별자
모든 워크플로 실행은 자동으로 발급되는 GITHUB_TOKEN을 받아. 이건 현재 저장소에 범위가 지정된 러너의 설치 토큰이야. PAT를 발급받지 않고도 GitHub API를 호출할 때 쓰지.
${{ secrets.GITHUB_TOKEN }}이나 ${{ github.token }}으로 사용해. 실행 동안에만 유효하고 끝나면 만료돼.
기본 권한은 너무 관대해
2023년까지 GITHUB_TOKEN은 대부분의 항목에 쓰기 권한을 기본값으로 줬어(contents, issues, pull-requests). 지금은 조직 기본값이 'permissive'(레거시)나 'restricted'(모두 읽기) 둘 중 하나야. 항상 확인하고 restricted를 선호해.
워크플로마다 permissions:로 범위를 지정해:
contents: read— 체크아웃, 푸시 없음.contents: write— 커밋, 태그, 릴리스 푸시.pull-requests: write— PR 코멘트, PR 생성.issues: write— 이슈 코멘트.id-token: write— OIDC 토큰 요청(다음 레슨).packages: write— GHCR에 푸시.security-events: write— 코드 스캐닝용 SARIF 업로드.