コンテンツにスキップ

独自リレーサーバー管理 & ガバナンス承認

AegisMesh は WireGuard によるダイレクト P2P メッシュを基本としますが、対称型 NAT(Symmetric NAT)や厳格な社内ファイアウォール環境では P2P 接続が成立しない場合があります。

このようなケースにおいて、トラフィックを安全に中継するのが リレーサーバー(Relay Node) です。AegisMesh では、不正なノードの中継参加を防止する HMAC-SHA256 自己登録 と SuperAdmin 承認ガバナンス、および テナント専用リレー隔離 を独自実装しています。


リレーサーバーのライフサイクルと承認フロー

sequenceDiagram
    autonumber
    actor Admin as 運用インフラ / 自動デプロイ
    participant Relay as 新規リレーサーバー (Relay Daemon)
    participant Mgmt as AegisMesh 管理サーバー
    actor SA as SuperAdmin (統括管理者)
    participant Peer as クライアント端末 (ピア)

    Admin->>Relay: 共有シークレット (RELAY_REGISTRATION_SECRET) と共に起動
    Relay->>Mgmt: HMAC-SHA256 署名付き自己登録 (POST /api/relays/register)
    Mgmt-->>Relay: 登録受理。ステータス: "pending" (未承認)
    Note over Mgmt,Peer: 未承認リレーはクライアントへの配信リストに含まれない
    
    SA->>Mgmt: 管理コンソールでノード素性を確認し「Approve」実行
    Mgmt->>Mgmt: ステータスを "approved" へ昇格
    Relay->>Mgmt: 1分周期で SessionToken ハートビート送信
    
    Peer->>Mgmt: 最適リレー一覧を要求 (GET /api/peers/{peerId}/relays)
    Mgmt-->>Peer: 承認済み・低負荷なリレーリストを返却
    Peer->>Relay: E2E暗号化トラフィックを安全に中継

主要セキュリティ機能

1. HMAC-SHA256 動的自己登録

リレーサーバーの新規デプロイ時、プラットフォーム全体の共有シークレット(RELAY_REGISTRATION_SECRET)を使用してリクエスト本文を HMAC-SHA256 で署名します。管理サーバーは署名をアトミックに検証し、改ざんや第三者による偽造登録を遮断します。

2. SuperAdmin 承認ガバナンス (Pending / Approved)

不正なリレーノードが勝手にネットワークへ参加して通信を盗聴・中継しようとする攻撃(中間者攻撃の試行)を防ぐため、登録直後は必ず pending(保留) 状態となります。

  • pending: クライアントピアへのリレー一覧には一切公開されません。
  • approved: SuperAdmin が管理画面から IP アドレスやロケーションを確認して承認したノードのみが、クライアントへ中継ノードとして配信されます。

3. SessionToken ハートビート & 自動フェイルオーバー

登録されたリレーサーバーには動的な SessionToken が発行され、1分周期で負荷情報(CPU、帯域幅、接続ピア数)を管理サーバーへ送信します。

  • タイムアウト監視: 90秒間ハートビートが途絶えた場合、管理サーバーはそのリレーを自動的に offline 扱いとし、クライアントの中継リストから即座にパージします。
  • クライアントは瞬時にセカンダリの健全なリレーサーバーへ自動切り替え(フェイルオーバー)を行います。

4. テナント専用リレー割り当て (DedicatedTenantID)

金融機関や機密性の高い特定テナント向けに、特定テナント専用のリレーサーバー を設定できます。 他のテナントの通信が同一リレーサーバーを経由することが物理的・論理的になくなり、完全なトラフィック隔離を保証します。


ダッシュボード UI 操作

管理コンソールの 「Relays」 画面からリレーノードの一覧・承認・死活監視が行えます。

  1. ノード一覧: 各リレーの外部IP、地域、稼働時間、接続ピア数、現在のトラフィック帯域を確認。
  2. 承認・拒絶: 新規ノードの「Approve(承認)」または「Reject(拒絶)」を実行。
  3. 専用テナント紐付け: ノード編集モーダルから特定テナントを選択し、専用ノードとしてアサイン。

API リファレンス

リレー自己登録 (Daemon ➔ Mgmt)

POST /api/relays/register
X-Relay-Signature: <HMAC-SHA256 Hex>
Content-Type: application/json
{
"host": "relay-tokyo-01.aegismesh.kusa-cloud.com",
"port": 443,
"region": "ap-northeast-1"
}

SuperAdmin 承認 API

POST /api/relays/{id}/approve
Authorization: Bearer <SuperAdmin_Token>