ai

Auth0 で Cloudflare Agents を保護する

Cloudflare のエッジネットワークで実行する AI に Auth0 の認証と認可を実装する方法を紹介します。トークンベースのセキュリティで Workers AI を保護し、スターターキットとステップバイステップのデプロイ手順を提供します。

本記事は 2025年8月1日 に更新された「Securing Cloudflare Agents with Auth0」を翻訳した記事です。

AI の波は間違いなく押し寄せており、アプリケーションの開発、デプロイ、ユーザーインターフェースの考え方を変革し始めています。もはや単にアプリケーションを構築するだけでなく、インテリジェントな体験を創り出しています。AI をユーザーの近くに配置することで、高速な応答と真にグローバルなスケールを実現するために、Cloudflare Agents が注目されています。Cloudflare Agents は、AI ロジックを Cloudflare の巨大なグローバルネットワーク上に直接デプロイする優れた方法を提供し、Workers AI の活用方法を変革します。

しかし、これらの強力なエージェントがエッジで登場し、機密性の高い操作やデータを扱う可能性があるため、どのようにして保護するのかという課題が出てきます。そのスピードと俊敏性を損なうことなく、認可されたユーザー、サービス、その他の機能だけが高度な AI エージェントと対話できるようにするにはどうすればよいでしょうか。

そこで Auth0 の出番です。本記事では、Auth0 を使用して、堅牢で柔軟、かつデベロッパーフレンドリーな認証認可で Cloudflare Agents を強化する方法を詳しく紹介します。スマートで高速なだけでなく、安全で信頼性の高い AI を構築する準備をしましょう。

Cloudflare Agents とは

Cloudflare Agents を使用すると、Cloudflare WorkersWorkers AI を利用して、高度な AI ワークロードを Cloudflare のグローバルなエッジネットワーク上で直接実行できます。これらは従来の生成 AI を超え、自律的、論理的推論、適応的な意思決定を行えるエージェント型 AI システムを構築できます。

つまり Cloudflare Agents は、単にプロンプトに受動的に応答するだけではありません。代わりに、以下のような能動的な AI を作成できます。:

  1. メール、WebSocket、SMS、音声通話など、複数のソースからユーザー入力をキャプチャできます。
  2. Cloudflare 上で直接実行される LLM モデルを使用するか、AI ゲートウェイを使用して人気のプロバイダーが提供する最先端のモデルに接続し、計画、推論、アクション、またはコンテンツ生成を実行します。
  3. 高度で複雑なワークフローで状態と処理を組み合わせられる実行エンジンを使って、必要なステップを実行します。
  4. 与えられたタスクを完了させるために、エージェントにツールへのアクセス権を与え、現実世界へのアクションを実行します。これらのツールにより API の呼び出し、データの操作、外部システムやデータベースとの連携を行え、エージェントの機能を拡張できます。

認証の確認事項

Cloudflare Agents は非常に強力です。さまざまなソースからデータを取り込み、高度な LLM 機能で推論し、複雑なワークフローを実行し、さらには外部システムと連携して現実世界のアクションを実行できます。これは次世代の AI アプリケーションを構築できる素晴らしいことです。しかし、大きな力には大きな責任が伴います。開発者は、セキュリティ、認証、認可といった他の重要な課題に取り組む必要があります。

そのため、これらのエージェントを構築する際には、以下のようなことを自問する必要があります。:

  1. 誰 (または何) がエージェントと対話しているのか? エージェントが複数のソースからアクセスされる可能性がある中で、リクエスト元を確実に確認するにはどうすればよいでしょうか。正当なエンドユーザーでしょうか、それとも別のマシンでしょうか、あるいは誰かを装った悪意ある試みでしょうか。
  2. それを行うことが許可されているのか? リクエスト元を確認したら、次に重要なステップは何を行うことが許可されているかを判断することです。ユーザーはすべてのツールにアクセスできるべきでしょうか。
  3. タスクにユーザー確認は必要か? エージェントが実行するタスクの中には、取引の実行や旅行先の確認など、重要なステップが含まれる場合があります。実行前の承認ステップなどのヒューマンインザループ (人間参加型) の対話をどのツールでも要求すべきでしょうか。
  4. ユーザーは AI が共有する情報にアクセスして良いのか? AI が他の情報元からのドキュメントを処理して応答を生成する際に、認可されていない情報がユーザーに漏洩していないでしょうか。ユーザーが自身のアクセスレベルに応じた情報のみを受け取ることを保証するために、どのようにして堅牢な認可制御を追加できるでしょうか。

Cloudflare Agent に認証の追加

これまでに説明した課題は困難に思えるかもしれませんが、良いニュースは、エージェントを適切に保護するために、これらをゼロから解決する必要はないということです。ここで、Auth0 のような堅牢な ID プラットフォームが役立ち、認証と認可を管理するための標準化され、安全で、スケーラブルで、開発者に優しい方法を提供します。

その核となるのは、トークンベースの認証の実装です。大まかなフローは次のとおりです。

  1. クライアントを認証する: Cloudflare Agent と対話したいユーザーまたはサービスは、まず Auth0 で認証します。これは、人間のユーザーの場合は Universal Login、自動化されたサービスの場合は M2M フローを通じて行います。クライアントアプリケーションは Cloudflare を使用してホストできますが、別のサービスプロバイダーを使用してホストしたり、コンピューターやサーバー上のローカルで実行したりする、まったく別のアプリケーションでもかまいません。
  2. Auth0 が JWT トークンを発行する: ユーザーが正常に認証されると、Auth0 は認証されたエンティティに関するクレーム (情報) を含み、デジタル署名で検証可能な JWT トークンを発行します。JWT は、Auth0 SDK のいずれかを使用してクライアントアプリケーションに安全に保存されます。
  3. クライアントはリクエストごとに JWT をエージェントに送信する: クライアントがエージェントと対話する必要がある場合、HTTP リクエストまたは WebSocket 接続リクエストを送信し、たとえば Authorization HTTP ヘッダーを使用して JWT トークンを渡します。
  4. Cloudflare Agent が JWT を検証する: この部分が重要です。エージェントはリクエストを受信すると、有効な JWT が存在することを確認し、Auth0 の公開鍵で署名されていることを暗号技術で検証する必要があります。

このパターンを実装することで、Cloudflare Agent は誰がリクエストを行っているかを確実に確認し、それを処理するかどうか情報に基づいて決定を行えます。

これらの 4 つの重要なステップは適切に実行される必要があり、Auth0 は各ステップを簡単に実装できるように役立つ SDK を提供することで、価値を発揮します。

次のセクションでは、Auth0 認証を使用するチャットボットアプリケーションを構築します。

Auth0 for Cloudflare Agents の作成を始める

実際に手を動かして、ツール呼び出しを使用してさまざまな都市の時刻や天気をユーザーが尋ねることができるシンプルなチャットアプリケーションを構築してみましょう。

アプリケーションのデモ です。

Auth0 Cloudflare Agent スターターキット

最も簡単に始める方法は、Cloudflare Agents 用の Auth0 スターターキットを使用することです。スターターキットは GitHub からクローンできます。:

git clone https://github.com/auth0-lab/cloudflare-agents-starter

この例は Cloudflare Workers にデプロイされる Hono を使ったチャットのクライアントアプリケーションと、Cloudflare Agents で構築される AI エージェントの両方を提供します。

スターターキットの実行とデプロイする手順を紹介する前に、まずその主要なコンポーネントを紹介します。

クライアント

クライアントアプリケーション (src/client) は、Hono と React で構築されたチャットアプリケーションで、シンプルな UI 体験を提供します。アプリケーションは、Web アプリケーションに認証を追加するために auth0-hono パッケージを使用します。

このパッケージは、サーバーアプリケーションのミドルウェアとして機能し、関連するユーザー情報と認証メソッドを提供します。

以下がライブラリの使用方法を示す基本的なサンプルコードです。:

import { Hono } from "hono";
import { auth } from "@auth0/auth0-hono";

const app = new Hono();

// Configure auth middleware with Auth0 options
app.use(
  auth({
    domain: process.env.AUTH0_DOMAIN,
    clientID: process.env.AUTH0_CLIENT_ID,
    clientSecret: process.env.AUTH0_CLIENT_SECRET,
    baseURL: process.env.BASE_URL,
    session: {
      secret: "password_at_least_32_characters_long",
    },
  }),
);

app.get("/", (c) => {
  const user = c.var.auth0Client?.getSession(c)?.user;
  return c.text(`Hello ${user?.name}!`);
});

export default app;

このライブラリをプロジェクトで使用するには、次を実行します。:

npm install @auth0/auth0-hono

エージェント

エージェント (src/agent) は、Cloudflare Agent SDK を使用して、ツールにアクセスできるチャット形式のエージェントを構築します。これまでに説明したように、エージェントはクライアントから送信されたリクエストに含まれる JWT アクセストークンを検証する責任があります。このために @auth0/auth0-cloudflare-agent-api パッケージを使用できます。

以下はライブラリを使用してエージェントのエンドポイントを保護する方法を示す基本的なサンプルコードです。:

import { AIChatAgent } from "agents/ai-chat-agent";
import { AuthAgent, OwnedAgent } from "@auth0/auth0-cloudflare-agents-api";

const SuperAgent = OwnedAgent(AuthAgent(AIChatAgent<Env>));

/**
 * Chat Agent implementation that handles real-time AI chat interactions
 */
export class Chat extends SuperAgent {
  ...
}

このライブラリを自身のプロジェクトで使用するには、次を実行します。:

npm install @auth0/auth0-cloudflare-agent-api

スターターキットを実行するための前提条件

スターターキットを実行するには、以下が必要です。:

Auth0 テナントの設定

  1. Auth0 API を作成し、後で使用するために API 識別子をメモします。
  2. 「一般的な Web アプリケーション」(Regular Web Application) タイプの Auth0 アプリケーションを作成します。
  3. Auth0 アプリケーションを以下の設定で構成します。
    1. 許可するコールバック URL (Allowed Callback URLs): 開発用の http://localhost:3000/callback と本番 URL
    2. 許可するログアウト URL (Allowed Logout URLs): 開発用の http://localhost:3000 と本番 URL
  4. 後で使用するために、ドメイン、クライアント ID、クライアントシークレットをメモしておきます。

サンプルアプリ

スターターキットの実行

スターターキットをローカルで実行するには、リポジトリをすでにクローンしていることを確認してください。そうでない場合は、次を実行します。:

git clone https://github.com/auth0-lab/cloudflare-agents-starter.git
cd cloudflare-agents-starter

次に、NPM またはお好みのパッケージマネージャーを使用して、すべての依存関係をインストールします。

npm install

デモを実行する前に、環境変数を設定する必要があります。プロジェクトのルートに、以下の情報を含む .dev.vars ファイルを作成します。:

# OpenAI API key
OPENAI_API_KEY=sk-your-openai-api-key

SESSION_STORE=cloudflare-kv
SESSION_STORE_NAMESPACE=Session

# auth0
AUTH0_DOMAIN="YOUR-ACCOUNT.us.auth0.com"
AUTH0_CLIENT_ID="YOUR CLIENT ID"
AUTH0_CLIENT_SECRET="YOUR CLIENT SECRET"
AUTH0_SESSION_ENCRYPTION_KEY="RANDOM 32 CHARS KEY"
AUTH0_AUDIENCE="YOUR AUDIENCE"

BASE_URL="http://localhost:3000"

注: ランダムなキーを生成するには、次のコマンドを使用できます: openssl rand -hex 32

これで、プロジェクトをローカルで実行する準備ができました。

npm start

Auth0 を利用したエージェントを Cloudflare にデプロイ

アプリケーションをローカルで実行することは開発やテストには最適ですが、本当の魔法は Cloudflare のグローバルネットワークにデプロイするときに起こります。保護されたエージェントとクライアントアプリケーションを公開するための手順を見ていきましょう。

デプロイの前提条件

Wrangler CLI がインストールおよび更新されていることを確認し、Wrangler を使用して Cloudflare アカウントにログインします。

wrangler login

Worker のデプロイ

Cloudflare へのデプロイはビルドとデプロイと同じくらい簡単で、スターターキットではこれら 2 つのステップを単一のコマンドで実行できます。:

npm run deploy

コマンドの実行が完了したら、レスポンスから Worker の URL を取得します。次で必要になります。

ウェブサイトにアクセスすると、まだ機能していないことに気付くと思います。これは Cloudflare で環境変数を設定していないためです。次で設定しましょう。

Cloudflare でシークレットの設定

ローカルの .dev.vars ファイルは本番環境では使用されません。これらの環境変数を Cloudflare ではシークレットとして設定する必要があります。

Cloudflare で環境変数を設定するには、次のコマンドを実行します。:

wrangler secret put OPENAI_API_KEY

wrangler secret put AUTH0_DOMAIN
wrangler secret put AUTH0_CLIENT_ID
wrangler secret put AUTH0_CLIENT_SECRET
wrangler secret put AUTH0_SESSION_ENCRYPTION_KEY
wrangler secret put AUTH0_AUDIENCE

wrangler secret put BASE_URL

アプリケーションのテスト

デプロイと設定を行ったら、Worker の URL を使用してクライアントアプリケーションにアクセスし、新しい AI エージェントとのチャットを試してください。

まとめ

Cloudflare Agents は、強力な AI エージェントをユーザーに近いエッジに直接デプロイするための素晴らしい方法です。AI エージェントには堅牢なセキュリティが必要で、そのために Auth0 を活用できます。

Auth0 を統合することで、Cloudflare Agents に強力な認証と認可を簡単に追加し、適切なユーザーとサービスのみがアクセスできるように構成できます。

このブログ記事では、提供されているスターターキットを使ってインテリジェントで高速なだけでなく、安全な AI アプリケーションを構築するための方法を紹介しました。

しかし、安全な AI への道のりはここで終わりではありません。このブログ記事では、ツールの呼び出しの認可や、エージェントがユーザーに代わってサードパーティと対話できるようにするために Auth0 をどのように使用できるかについては紹介しませんでした。

Auth for GenAI は、安全な AI アプリケーションとサービスを構築するのに役立つ新世代のツールと SDK を提供します。安全な AI アプリケーションとサービスの構築に関しては、Auth for GenAI を確認ください。

お読みいただきありがとうございました。