Takumi Guard が Go モジュールに対応
Takumi Guard が npm・PyPI・RubyGems に加えて Go モジュール に対応しました。
Go プロジェクトで go get・go mod download・go build を Takumi Guard 経由でルーティングすることで、CI や開発環境に届く前に悪性モジュールをブロックできるようになりました。

概要
Takumi Guard は、パッケージマネージャーと上流レジストリの間に位置するセキュリティプロキシです。すべてのインストールリクエストを GMO Flatt Security の脅威データベースと照合し、悪性パッケージをブロックします。
今回のリリースにより、npm・Python・Ruby のユーザーが利用していた保護機能が Go エコシステムでも利用可能になりました。
- パッケージブロック: 悪性モジュールをコードの取得前にブロック
- ダウンロード追跡: 認証済みユーザーのインストール履歴を記録
- 感染可能性の通知: ダウンロードしたモジュールが後から悪性であると判明した際に通知
Takumi Guard は標準の GOPROXY プロトコルに対応しているため、ツールチェーン側の変更は不要で、GOPROXY を Takumi Guard に向けるだけで利用できます。
利用開始
以下の手順は匿名で利用できます。アカウント登録は不要です。
Go ツールチェーン
すべてのモジュール取得を Takumi Guard 経由にルーティングするには、環境変数を 1 行設定するだけです。
go env -w GOPROXY=https://golang.flatt.tech
モジュールメタデータはブロックリスト適用のため Takumi Guard を経由しますが、モジュールアーティファクト(.zip)のダウンロードは proxy.golang.org に透過的にリダイレクトされるため、ダウンロード速度に影響はありません。
GOPROXY には https://golang.flatt.tech のみを指定してください。,direct や |direct は付けないでください。どちらのフォールバックも、プロキシがエラーを返した際に Go ツールチェーンが直接 VCS から取得する動作を有効にします。これにより、まだインデックスされていないモジュール(404)や、|direct の場合は明示的にブロック対象となっているモジュール(403)まで Takumi Guard を回避してしまいます。URL のみを指定する構成が、ブロックリストの完全な適用条件です。
GitHub Actions
flatt-security/setup-takumi-guard-golang Action を利用してください。ブロックのみであればアカウントもトークンも不要です。
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.23"
- uses: flatt-security/setup-takumi-guard-golang@v1
- run: go build ./...
組織レベルのダウンロード追跡と感染可能性の通知を利用する場合は、bot-id を追加し id-token: write 権限を付与してください。Action が OIDC → 短期トークン交換を自動で行うため、CI に長期シークレットを保存する必要はありません。詳細は Go モジュールのクイックスタートを参照してください。
動作確認
セットアップ後、ブロック対象として用意してある無害なテストモジュール github.com/flatt-security/hola-takumi-go のバージョン v0.1.0 をインストールしてみてください。
cd $(mktemp -d) && go mod init verify-takumi-guard && go get github.com/flatt-security/hola-takumi-go@v0.1.0
Takumi Guard が正しく動作していれば、go get は次のエラーで失敗します。
go: github.com/flatt-security/hola-takumi-go@v0.1.0: reading https://golang.flatt.tech/github.com/flatt-security/hola-takumi-go/@v/v0.1.0.info: 403 Forbidden
hola-takumi-go v0.1.0 がすでにモジュールキャッシュに残っている場合は、rm -rf "$(go env GOMODCACHE)/github.com/flatt-security/hola-takumi-go@v0.1.0" で該当キャッシュを削除してから再実行してください。
詳しくは、Go モジュールクイックスタートの「動作確認」を参照してください。
ユーザー登録で更に多くの機能を(無料)
メールアドレスを登録すると、ダウンロードしたモジュールが後から悪性であると判明した際に通知が届くようになります。無料で利用できます。
npm・PyPI・RubyGems で組織ユーザートークンまたはメール認証トークンを取得済みの場合は、再登録は不要です。同じトークンをそのまま Go モジュールで利用できます。
ステップ 1: メールアドレスを登録します。
curl -X POST https://golang.flatt.tech/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "language": "ja"}'
ステップ 2: ウェルカムメール本文に直接記載された API キーを確認します。リンクのクリックは不要です。
ステップ 3: トークンを ~/.netrc に追記して、Go ツールチェーンが取得時に認証情報を送るようにします。
echo "machine golang.flatt.tech login token password tg_anon_xxxxxx" >> ~/.netrc
chmod 600 ~/.netrc
Go ツールチェーンは GOPROXY サーバーに対して .netrc 経由の HTTP Basic 認証を使います。ユーザー名は無視され、トークンはパスワード欄に記述します。これでインストール履歴が記録され、ダウンロードしたモジュールが後から悪性であると判明した際に通知が届くようになります。
プライベートモジュール
公開モジュールは Takumi Guard 経由で取得し、プライベートモジュール(社内 GitHub Organization など)は Takumi Guard を経由せず VCS から直接取得する構成を推奨します。Go 標準の GOPRIVATE 環境変数を使ってください。
go env -w GOPROXY=https://golang.flatt.tech
go env -w GOPRIVATE=github.com/your-org/*,*.internal.your-corp.com
GOPRIVATE にマッチしたモジュールは、既存の git 認証情報で VCS から直接取得され、プロキシを経由しません。詳しくは Go モジュールクイックスタート を参照してください。
組織全体での運用
チームで Takumi Guard を運用する場合、インストール履歴の検索、組織ユーザートークンの一元管理、感染可能性通知の Webhook 配信 などの組織向け機能が利用できます。Guard を有効化した Takumi サブスクリプションでご利用ください。
- https://cloud.shisho.dev/hello/takumi にアクセスしてサインインします。
- 組織を登録し、Takumi のサブスクリプションを開始します。
- サイドバーから Guard > Settings に移動します。
- 「Enable」をクリックして Guard を有効化します。

Guard を有効化したら、Go モジュールクイックスタート に従って CI や開発者端末を設定してください。
GitHub Actions から長期の組織ユーザートークンのみを利用する場合は、お支払いの登録は不要です。組織登録時にお支払い画面が表示されますが、スキップして問題ありません。Guard ページから GitHub Organization を登録するだけで、組織ユーザートークンを発行できます。
