4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【急報】npm のセキュリティポリシー更新で npm publish が失敗 → GitHub Actions を即更新する話

Last updated at Posted at 2025-12-09

この記事は デジタル創作サークル UniProject Advent Calendar 2025 および Node.js Advent Calendar 2025 10 日目の記事です。

はじめに

2025 年 9 月 29 日、npm のセキュリティポリシーが大きく変更されました。

なんと、Classic Token が利用不可になりました
加えて Fine-grained Token の最大有効期限も「無期限 → 90 日」へと短縮されました。

その結果、つい昨日まで動いていたはずの CI が一斉に落ち始めるという非常に困る状況が起きています。

何があったのか

要点だけ並べると以下の通りです。

  • 長期トークンは攻撃のリスクが高いため、有効期限を短縮
  • 権限過大な Classic Token を廃止
  • GitHub/GitLab からの自動 publish は OIDC 認証へ移行
  • これらは 12 月 9 日より完全適用

つまり、CI/CD で自動公開していた人のトークンが突然全部使えなくなったわけです。
(この記事を読んでいる時点で、すでに Fail している人も多いと思います。)

どうすればいいのか

ローカルでの npm login は従来通りで問題ありません。

問題は GitHub Actions のような Automation Workflow です。
すべての Token ベースの認証が実質終了したため、OIDC 認証に移行する必要があります

新しい認証方法: OIDC 認証

npm は GitHub の ID トークンを使った OIDC 認証に対応しました。

この方法の利点は以下のとおりです。

  • トークン漏洩のリスクがない
  • ローテーション不要
  • secret にトークンを登録する必要がなくなる
  • CI の保守が大幅に減る

では、具体的に何を変えれば良いのか見ていきます。

従来

jobs:
  # (中略)
  - name: Publish package
    run: npm publish --access public
    env:
      NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

これから必要な設定

GitHub Workflow に id-token: write を付与します。

permissions:
  # (中略)
  id-token: write

jobs:
  # (中略)
  - name: Publish package
    run: npm publish --access public

さらに npm 側の設定として、パッケージ設定画面の「Trusted Publisher」を登録する必要があります。

設定項目

  • Publisher - GitHub or GitLab(今回は GitHub)
  • Organization or user / Repository - 対象リポジトリ
  • Workflow filename - .github/workflows 以下のファイル名
  • Environment name - 利用していれば指定(今回は割愛)

スクリーンショット

保存したら設定完了です。


設定後、CI を実行してみてください。
正常に成功し、npm レジストリ側には OIDC 認証を示すバッジが表示されます。

スクリーンショット

これが出ていれば、認証は正しく設定されています。

最後に

今回は npm のセキュリティ強化に伴う変更に追従した記録でした。

トークン管理はセキュリティ上の課題が多く、
有効期限、ローテーション、漏洩リスクなど、常に問題がつきまといます。

今回のように CI/CD プロバイダーの OIDC を利用する方式は非常に合理的ですが、
現時点(2025 年)では GitHub Actions と GitLab CI/CD のみの対応です。
今後、CircleCI・Azure Pipelines などにも順次対応予定とのことで期待しています。

また、この対応のきっかけとなった CLI の記事も書いているので、興味があればぜひ。

お読みいただきありがとうございました!
よければ、いいね・ストック・フォローお願いします!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?