npm Trusted Publishing
長期間にわたり強力な権限を保有する NPM_TOKEN の利用に対し、短時間だけ有効かつスコープが限定された署名付きトークンが使われることにより、 NPM_TOKEN がなんらかの攻撃によって流出した際の被害を小さくできる
設定手順
npm側の設定
npmで管理するパッケージの設定画面に行くと、以下のように「Trusted Publisher」の設定がある
https://gyazo.com/8670893d5c6318061a3ebc5c9dc47b72
「GitHub Actions」のボタンを押すと、以下のように設定が出てくるので、埋める
Organization or user / Repository: GitHub上のレポジトリの所有者ならびにレポジトリ名
Workflow filename: パッケージの公開に利用するWorkflowのファイル名。例えば、 .github/workflows/publish.yml の場合、 publish.yml と入力する
https://gyazo.com/7aa322ccb0af70f877ad21f59a3456e0
「Set up connection」を押せば、npm側の準備は完了
その下にある「Publishing access」も、最強設定にして良いので、この際一緒に変えておきましょう
「Update Package Settings」のクリックを忘れずに
https://gyazo.com/8c218040bb69629327e636dfedfba0e6
GitHub Actionsの設定
Publishを行うWorkflowまたはJobに対して、以下の権限付与を行う
code:publish.yml
permissions:
id-token: write
パッケージの公開
これで NPM_TOKEN なしにパッケージを公開できるようになりました
レポジトリに設定してある NPM_TOKEN は削除しておこう
Settings > Secrets and variables > Actions から削除できます