# Takumi Guard が RubyGems に対応

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

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

![Takumi Guard が RubyGems に対応](/docs/ja/_md-assets/a1a666fcc8-eyecatch.png)

## 概要 {#overview}

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

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

- **[パッケージブロック](/docs/ja/t/guard/features/package-blocking)**: 悪性な gem をコード実行前にブロック
- **[ダウンロード追跡](/docs/ja/t/guard/features/installation-logs)**: 認証済みユーザーのインストール履歴を記録
- **[感染可能性の通知](/docs/ja/t/guard/features/breach-notifications)**: ダウンロードした Gem が後から悪性であると判明した場合に通知

## 利用開始方法 {#getting-started}

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

### Bundler

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

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

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

### GitHub Actions

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

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

認証や感染可能性の通知を含む詳細なセットアップ手順は [RubyGems クイックスタートガイド](/docs/ja/t/guard/quickstart/rubygems) をご覧ください。

## 検証方法 {#verify}

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

```bash
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 クイックスタートの「セットアップの確認」](/docs/ja/t/guard/quickstart/rubygems#verify-setup) を参照してください。

## メール登録してより便利に（無料） {#email-registration}

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

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

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

```bash
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 で取得したトークンを使用）

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

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

## 組織単位での管理も可能 {#organization-setup}

チームで Takumi Guard を運用するなら、[管理ツールによる一括セットアップ](/docs/ja/t/guard/features/admin-deployment)、[インストールログの検索](/docs/ja/t/guard/features/installation-logs)、[組織ユーザートークンの一元管理](/docs/ja/t/guard/features/token-management)、[感染可能性の Webhook 通知](/docs/ja/t/guard/features/breach-notifications) など、組織単位での運用を効率化する機能がまとめて利用できます。Takumi サブスクリプション（Guard 有効化）で始められます。

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

![Guard 設定画面](/docs/ja/_md-assets/b8eb0c3026-ui-guard-settings.png)

有効化が完了したら、[管理ツールによる一括セットアップ](/docs/ja/t/guard/features/admin-deployment)ガイドに従ってセットアップを進めてください。

なお、**GitHub Actions の [Bot トークン](/docs/ja/t/guard/quickstart/rubygems#setup-ci-org) 利用だけなら決済は不要**です。組織登録時に決済画面が表示されてもそのままスキップして、Guard ページから GitHub 組織を登録するだけで Bot ID を取得できます。
