GitHub가 10월 2일 검증되지 않은 npm trusted publishing 설정이 생성 48시간 뒤 만료된다고 발표했다. 저장소나 프로젝트 이름의 소유권이 바뀔 때 생기는 위험을 줄이려는 조치다.

trusted publishing은 OpenID Connect(OIDC)로 npm 게시 권한을 승인된 CI/CD 워크플로와 연결하는 방식이다. 장기 npm 쓰기 토큰을 보관하지 않아도 된다.

48시간이 적용되는 범위

새로 만든 설정은 검증 전 상태이며, 이때부터 48시간이 흐른다. 이 설정으로 첫 게시에 성공하면 검증 상태가 되어 만료 규칙에서 빠진다.

그 전에 48시간이 끝나면 더 이상 게시를 승인할 수 없다. 만료된 항목은 trusted publisher 설정에 계속 보이지만 패키지별 한도에는 포함되지 않는다.

새 48시간을 얻으려면 설정을 다시 만들어야 하고, 일반적인 수정으로는 기한이 다시 시작되지 않는다. 저장소나 프로젝트 식별 정보를 바꾸면 새 신뢰 관계가 필요하며, 같은 패키지의 다른 유효한 설정에는 영향이 없다.

게시가 거부되는 GitHub Actions 이벤트

같은 발표에는 GitHub Actions 이벤트 제한도 들어 있다. npm은 기존 pull_request_target 제한에 더해 issue_comment 이벤트에서 발급된 trusted publishing 토큰도 거부한다.

영향을 받는다면 push, release, workflow_dispatch처럼 허용된 이벤트로 게시를 옮기라고 안내한다.

설정 문서가 요구하는 실행 조건

npm 문서는 npm CLI 11.5.1 이상과 Node.js 22.14.0 이상을 요구한다. 지원 환경은 GitHub 호스팅 Actions 러너, GitLab.com 공유 러너, CircleCI 클라우드이며 자가호스팅 러너는 아직 지원하지 않는다.

패키지 하나에 trusted publisher를 최대 10개 둘 수 있다. GitHub Actions에서는 조직 또는 사용자, 저장소, 워크플로 파일명, 선택적인 환경 이름을 정확히 맞춰야 하고, 워크플로에 id-token: write 권한이 필요하다.

npm stage publish는 항상 허용되며, npm publish로 직접 게시할 권한은 별도로 선택한다. npm은 설정을 저장할 때 내용을 검증하지 않아 오류는 실제 게시 때 드러난다.

첫 릴리스 일정에 맞춘 설정 순서

릴리스 워크플로의 트리거, 러너, 게시 권한을 먼저 준비하고, 예정된 첫 릴리스 직전에 신뢰 관계를 만드는 순서가 기한과 잘 맞는다. 설정을 살리려고 검토를 서두를 필요가 없다.

이미 만료됐다면 릴리스 준비가 끝난 뒤 다시 만들고, 의도한 trusted publishing 경로로 게시가 성공하는지 확인한다. 허용된 이벤트를 쓰더라도 검토와 릴리스 통제는 여전히 필요하다.

주의할 점: 기존 토큰 경로와 문서 변경

48시간 기한은 검증되지 않은 trusted publisher 설정에만 적용된다. 패키지 설정이 허용하는 한 기존 토큰 인증은 별도의 게시 경로로 남는다.

10월 6일 확인 때 npm 설정 문서에는 만료 규칙이 없었지만, 10월 14일 다시 확인한 문서에는 2일 안에 첫 게시를 마쳐야 한다는 절이 추가돼 있었다. 문서는 만료된 설정을 삭제하고 새로 만들라고 안내한다.

변경 기록은 발표 전에 만들어졌지만 아직 검증되지 않은 설정을 어떻게 처리하는지 밝히지 않는다. 그런 설정의 실제 상태는 변경 기록만으로는 알 수 없다.

npm trusted publisher는 이제 만들어 두는 설정이 아니라, 첫 릴리스 직전에 만들어 48시간 안에 검증하는 설정이다.