powered by TechFeed
表示モード
Amazon

IPベースの許可リストではAIエージェントを識別できない — AWS WAFが暗号署名によるボット認証に対応

7月15日、AWSが「Authenticate legitimate AI agent traffic with AWS WAF Bot Control」と題した記事を公開した。この記事では、AWS WAF Bot ControlのWeb Bot Authentication(WBA)機能を使い、AIエージェントのトラフィックを暗号署名で認証する方法について詳しく紹介されている。

7月15日、AWSが「Authenticate legitimate AI agent traffic with AWS WAF Bot Control」と題した記事を公開した。この記事では、AWS WAF Bot ControlのWeb Bot Authentication(WBA)機能を使い、AIエージェントのトラフィックを暗号署名で認証する方法について詳しく紹介されている。


IPベースの許可リストはもう機能しない

AIエージェントや自動化ツールがWebアプリケーションへアクセスするケースが急増している。しかし、従来のIPベースのフィルタリングや逆引きDNSによる識別は、Amazon Bedrock AgentCoreのようなマルチテナント環境では機能しない。Amazon Bedrock AgentCoreとは、AWSが提供するAIエージェントのホスティング・実行基盤であり、複数のワークロードが同一インフラを共有して動作する。数千のエージェントが同一のIPを共有するため、IPアドレスだけではどのエージェントからのリクエストかを特定できないのだ。ユーザーエージェントの偽装も容易で、手動の許可リスト管理はスケールしない。

この状況を放置すれば、正規のAIエージェントを誤検知でブロックするか、逆に不正なボットを通過させるかのどちらかになる。この課題を根本から解決するのが、Web Bot Authentication(WBA)だ。2025年11月からAWS WAF Bot Controlに導入されたこの機能は、非対称暗号(asymmetric cryptography)を用いた署名ベースの検証により、ボット識別の仕組みを刷新する。


仕組み:暗号署名でボットの身元を証明する

WBAは、IETFが策定・公開した2つの仕様に基づいている。HTTPリクエストへ署名を付与するプロトコル仕様であるRFC 9421: HTTP Message Signatures(正式なRFCとして確定公開済み)と、公開鍵を共有するためのシグネチャディレクトリ仕様(現在ドラフト段階)だ。

処理フローは以下の通り:

  1. ボット登録 — ボットオペレーターが公開鍵をシグネチャディレクトリに公開。AWS WAFが定期的にポーリングし、有効な鍵レジストリを維持する。
  2. リクエスト署名 — ボットが秘密鍵でリクエストに署名し、Signature-InputSignatureヘッダーを付与する。
  3. 検証 — AWS WAFがエッジで署名を検証し、結果に応じたラベルをリクエストに付与する。

実際のWBA署名済みリクエストのヘッダーは次のようになる:

Signature-Agent: https://signature-agent.test
Signature-Input: sig2=("@authority" "signature-agent")
;created=1735689600
;keyid="poqkLGiymh_W0uP6PZFw-dvez3QJT5SolqXBCW38r0U"
;alg="ed25519"
;expires=1735693200
;nonce="e8N7S2MFd/qrd6T2R3tdfA..."
;tag="web-bot-auth"
Signature: sig2=:jdq0SqOwHdyHr9+r5jw3iYZH6aNGKijYp/EstF4RQ..

署名アルゴリズムにはed25519が使われる。検証にかかるレイテンシへの影響は最小限だとAWSは説明している。


付与されるラベルと推奨アクション

AWS WAFは検証結果に応じて以下のラベルを付与する。このラベルをWAFルールで参照することで、トラフィック制御を細かく設定できる。

ラベル 意味 推奨アクション
bot:web_bot_auth:verified 暗号検証に成功 許可
bot:web_bot_auth:invalid 検証に失敗 ブロックまたはレート制限
bot:web_bot_auth:expired 期限切れの鍵 ブロック&アラート
bot:web_bot_auth:unknown_bot 未登録の鍵 監視またはブロック
bot:vendor:<vendor_name> ボットベンダー名 ベンダー固有のルールに活用
bot:account:<hash> AWSアカウント識別子(AgentCore限定) アカウントレベルの制御

重要な変更点として、**verifiedラベルが付いたリクエストはBot Controlのデフォルトルール(Category:AIおよびTGT_TokenAbsent)による遮断対象から除外**されるようになった。正規のAIエージェントが誤ってブロックされるケースを減らす設計だ。


実装ステップ

Step 1: WBA対応のBot Controlをデプロイする

WBAをサポートするには、Bot ControlルールグループをAmazon CloudFrontに関連付けたWeb ACLに追加し、**Version_4.0以降を明示的に指定する必要がある。Version_5.0(2026年2月リリース)ではAI検索エンジンクローラー、AIデータコレクター、LLMトレーニングクローラーなど650種類以上**のユニークなボットとエージェントに対応する。

# Bot Control rule group with WBA support
ManagedRuleGroupStatement:
  VendorName: AWS
  Name: AWSManagedRulesBotControlRuleSet
  Version: Version_5.0
  ManagedRuleGroupConfigs:
    - AWSManagedRulesBotControlRuleSet:
        InspectionLevel: COMMON

Step 2: ボットからのリクエストに署名する

Amazon Bedrock AgentCore Browser上で動作するエージェントであれば、署名は自動で処理される。設定不要だ。

AgentCore外で動作するエージェントの場合は、ed25519の鍵ペアを生成し、公開鍵をシグネチャディレクトリに公開したうえで、アウトバウンドHTTPリクエストにweb-bot-authタグ付きで署名する。実装の詳細はRFC 9421AWS WAF Bot Controlドキュメントを参照のこと。なお、エージェントオーナー向けの登録APIは現時点ではロードマップ段階だ。

Step 3: WBAラベルを使ったカスタムルールを記述する

verifiedラベルの許可、invalidのレート制限、expiredのアラートといったルールをWAFに追加することで、きめ細かいトラフィック制御が実現できる。

Step 4: トラフィックを監視する

AWS WAFコンソールにはAIアクティビティダッシュボードが追加されており、AIボットおよびエージェントのトラフィックを一元的に可視化できる。検証ステータスでフィルタリングし、許可・レート制限・ブロックを判断する用途に使える。


対応状況

WBAはVersion_4.0(2025年11月)でAmazon CloudFrontディストリビューション向けに導入された。Version_6.0以降では、標準的な商用AWSリージョンにおいてAWS WAFがサポートするすべてのリソースタイプに対応する予定だ。Version_6.0の一般提供時期については元記事時点では明示されていないため、最新の対応状況はAWS WAF Bot Controlドキュメントで確認されたい。

詳細はAuthenticate legitimate AI agent traffic with AWS WAF Bot Controlを参照していただきたい。