1
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?

こんにちは。
Dependabotを利用した依存関係の自動更新は便利です。
しかし、自動化された更新ほど「どこから取得しているのか」を明示しておきたいものです。

npm パッケージのサプライチェーン攻撃対策として、 Takumi Guard があります。
Takumi Guard は npm レジストリのプロキシとして動作し、悪性パッケージのインストールをブロックしてくれます。

ローカル開発環境や GitHub Actions で使う例は見かけます。
この記事では、GitHub Dependabot の npm バージョンアップデートでも Takumi Guard を経由させる設定をまとめます。

最初に告白しておきます。
私は npm 界隈に詳しいわけではありません。

Takumi Guard 自体の紹介記事や、Dependabot の cooldown と組み合わせたサプライチェーン攻撃対策の記事は見つかりました。

しかし、Takumi Guard を Dependabot の registries に設定し、Dependabot の npm 更新処理でも Takumi Guard を経由させる具体的な手順は、私が調べた範囲では見つけられませんでした。

私のググり力が足りないだけかもしれません。笑

それでも、少なくとも自分が設定するときには少し迷いました。
この記事では、実際に試した内容を記録として残します。

やりたいこと

Dependabot が npm パッケージを確認するときに、通常の npm レジストリへ直接アクセスするのではなく、Takumi Guard の npm プロキシを参照するようにします。

Dependabot
  -> https://npm.flatt.tech/
  -> npm registry

設定するファイルは主にこの2つです。

  • .github/dependabot.yml
  • .npmrc

前提

この記事では npm を対象にします。

Takumi Guard の npm レジストリ URL は次の通りです。

https://npm.flatt.tech/

Takumi Guard は匿名でも利用できます。
一方、ダウンロード追跡や通知なども使いたい場合は、トークンを利用します。

今回は Dependabot からも認証付きで利用できるように、Dependabot Secret にトークンを登録する構成にします。

0. トークンの発行

まず、Takumi Guard のトークンを発行します。

ユーザー登録して利用する」に書いてあります。
2026-07-03現在、「Shisho Cloud アカウントは不要で、無料で利用できます。」とのことです。

1. Dependabot Secret を登録する

次に、Takumi Guard のトークンを GitHub の Dependabot secrets に登録します。

ここで重要なのは、GitHub Actions 用の Secret ではないという点です。

Dependabot は Actions の Secret をそのまま読むわけではありません。
Dependabot から参照したい値は、Dependabot 専用の Secret に登録します。

手順は以下です。

  1. GitHub リポジトリを開く
  2. Settings を開く
  3. Security -> Secrets and variables -> Dependabot を開く
  4. New repository secret を押す
  5. 次の名前で登録する
Name: TAKUMI_GUARD_TOKEN
Secret: tg_anon_... または tg_org_...

2. .npmrc を置く

リポジトリのルートに .npmrc を置きます。

registry=https://npm.flatt.tech/

3. .github/dependabot.yml を設定する

.github/dependabot.yml に、Takumi Guard の npm レジストリを registries として定義します。

version: 2

registries:
  takumi-guard-npm:
    type: npm-registry
    url: https://npm.flatt.tech/
    token: ${{secrets.TAKUMI_GUARD_TOKEN}}

updates:
  - package-ecosystem: "npm"
    directory: "/"
    registries:
      - takumi-guard-npm
    schedule:
      interval: "weekly"
    cooldown:
      default-days: 5
      semver-major-days: 30
      semver-minor-days: 7
      semver-patch-days: 3

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

これで npm の Dependabot update job では、takumi-guard-npm に定義したレジストリ情報を使います。

github-actions の更新は npm ではないため、ここでは Takumi Guard の registry を紐付けていません。

.npmrc がないとエラーになることがある

私がつまずいたのはここです。

dependabot.ymlregistries を書いただけで十分だと思っていました。
しかし、リポジトリに .npmrc がない状態では、Dependabot の実行時に次のようなエラーになることがありました。

Dependabot can't access a private package registry without explicit configuration

Dependabot was unable to resolve a private registry configuration for npm.flatt.tech.
Please add a .npmrc file to your repository, or configure explicit scope or replaces-base on your registry credentials in your dependabot.yml.

スクリーンショット 2026-07-03 8.41.33.png

原因は、Dependabot が npm の依存関係を解決するときに、どのパッケージをどのレジストリへ向けるのかを判断できないためです。

そのため、リポジトリのルートに .npmrc を置き、npm のデフォルトレジストリを明示します。

registry=https://npm.flatt.tech/

lock ファイルの URL 表示について

uv の uv.lock では、設定した index URL が見えることがあります。

一方、npm の package-lock.json は見え方が少し違います。
各パッケージの resolved に tarball URL が記録されることはありますが、.npmrcregistry=https://npm.flatt.tech/ を設定したからといって、lock ファイル内の URL が単純にすべて https://npm.flatt.tech/ になる、というわけではありません。

npm 公式ドキュメントでは、package-lock.jsonresolved について、registry 由来の依存関係では tarball のパスが registry URL からの相対パスとして扱われると説明されています。
また、npm の registry ドキュメントでは、デフォルト registry を使って作成された lock ファイルについて、lock ファイル内のデフォルト registry は「現在設定されている registry」という特別な意味を持つと説明されています。

つまり、npm では lock ファイル内の URL 表示だけを見て、Takumi Guard を通っているかどうかを単純には判断できません。

参考:

まとめ

Dependabot の npm 更新でも Takumi Guard を経由させるには、次の設定を行います。

  1. Takumi Guard のトークンを Dependabot Secret に登録する
  2. .npmrcregistry=https://npm.flatt.tech/ を書く
  3. .github/dependabot.ymlregistries に Takumi Guard を定義する
  4. npm の updates にその registry を紐付ける

自動更新は便利です。
しかし、便利なものほど、入口を固めておく価値があります。

Dependabot、GitHub Actions、ローカル開発環境。
それぞれの取得経路をそろえておくと、依存関係更新の不安をひとつ減らせます。

参考リンク

1
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
1
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?