メインコンテンツまでスキップ

Takumi Guard が RubyGems に対応

· 約6分
Deividas Turskis
Software Engineer @ GMO Flatt Security Inc.

Takumi Guard が npm・PyPI に加えて RubyGems に対応しました。

Bundler を使用する Ruby プロジェクトで、Takumi Guard 経由でインストールをルーティングすることで、CI や開発環境に届く前に悪性パッケージをブロックできるようになりました。

Takumi Guard が RubyGems に対応

概要

Takumi Guard は、パッケージマネージャーと上流レジストリの間に位置するセキュリティプロキシです。すべてのインストールリクエストを GMO Flatt Security の脅威データベースと照合し、悪性パッケージをブロックします。

今回のリリースにより、npm・Python ユーザーが利用していた保護機能が Ruby エコシステムでも利用可能になりました。

利用開始方法

以下のいずれも、アカウント登録不要で匿名のまま利用できます。

Bundler

Takumi Guard 経由で bundle install をルーティングする設定です。設定行を 1 つ追加するだけで、すべてのインストールリクエストがプロキシを通過するようになります。

bundle config set --global mirror.https://rubygems.org https://rubygems.flatt.tech/

Gemfile の変更は不要で、透過的にプロキシを通じてすべてのインストールリクエストが処理されます。

GitHub Actions

ワークフローに 1 行追加するだけで導入できます。

steps:
- uses: actions/checkout@v4
- uses: flatt-security/setup-takumi-guard-rubygems@v1
- run: bundle install

認証や感染可能性の通知を含む詳細なセットアップ手順は RubyGems クイックスタートガイド をご覧ください。

検証方法

セットアップが完了したら、検証用・無害なブロック済み gem hola-takumi のバージョン 0.1.0 をインストールしてみてください。

cd $(mktemp -d) && printf 'source "https://rubygems.org"\ngem "hola-takumi", "0.1.0"\n' > Gemfile && bundle install

Takumi Guard が正しく動作していれば、Bundler は以下のエラーでインストールに失敗します。

Fetching gem metadata from https://rubygems.flatt.tech/.
Could not find gem 'hola-takumi (= 0.1.0)' in rubygems repository
https://rubygems.org/ or installed locally.
note

過去に hola-takumi 0.1.0 をローカルに install したことがある場合は、事前に gem uninstall hola-takumi --all --force で削除してから実行してください。Bundler がローカルの gem を流用してしまい、ブロックが確認できない場合があります。

詳しい手順は RubyGems クイックスタートの「セットアップの確認」 を参照してください。

メール登録してより便利に(無料)

メールアドレスを登録すると、ダウンロードした Gem が後から悪性であると判明した場合に通知が届きます。無料で利用できます。

info

既に npm や PyPI で Takumi Guard を利用していて、組織ユーザートークンやメール認証トークンをお持ちの場合は、再取得の必要はありません。そのまま RubyGems の設定でも利用できます。

ステップ 1: メールアドレスを登録する

curl -X POST https://rubygems.flatt.tech/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "language": "ja"}'

ステップ 2: ウェルカムメールから API キーを取得する。API キーはメール本文に直接記載されています。リンクをクリックする手順は不要です。

ステップ 3: トークンでパッケージマネージャーを設定する(ステップ 2 で取得したトークンを使用)

bundle config set --global mirror.https://rubygems.org https://token:tg_anon_xxxxxx@rubygems.flatt.tech/

以降のインストールが追跡され、ダウンロードしたパッケージに問題が見つかった場合に通知が届きます。

組織単位での管理も可能

チームで Takumi Guard を運用するなら、管理ツールによる一括セットアップインストールログの検索組織ユーザートークンの一元管理感染可能性の Webhook 通知 など、組織単位での運用を効率化する機能がまとめて利用できます。Takumi サブスクリプション(Guard 有効化)で始められます。

  1. https://cloud.shisho.dev/hello/takumi にアクセスし、サインインする
  2. 組織を登録し、Takumi サブスクリプションを契約する
  3. 画面左のサイドバーから Guard > 設定 にアクセスする
  4. 「有効化する」ボタンをクリックして Guard を有効化する

Guard 設定画面

有効化が完了したら、管理ツールによる一括セットアップガイドに従ってセットアップを進めてください。

なお、GitHub Actions の Bot トークン 利用だけなら決済は不要です。組織登録時に決済画面が表示されてもそのままスキップして、Guard ページから GitHub 組織を登録するだけで Bot ID を取得できます。