Speedle AI · 2つの連携する方向性

AI でアクセスを管理し、AI のアクセスを制御する

AI を活用してアクセスポリシーを設計・管理・検証し、同じポリシーを AI 自身にも適用:AI エージェント向けの MCP 認可、権限を考慮した RAG、最小特権。両方向とも明確で強制力のあるポリシー決定に基づいています。

オープンソースの Speedle 認可エンジン上に構築されています。

Use AI to manage access

アクセスポリシーに AI を活用する

人間のアクセス管理を支援する AI:ポリシー文書を SPDL に変換するオープンソーススキル、ポリシーの設計・管理・検証を行う Speedle MCP のプレビュー、および計画中の AI リスク検知アプローチ。

Speedle ポリシーモデラー · オープンソース Agent Skill利用可能

ポリシー文書をレビュー可能な SPDL に変換

就業規則や規制文書を読み込み、明記されていない箇所について質問し、結果を RBAC + ABAC ポリシーとしてモデル化する Agent Skill。推測でルールを作成することはありません。

生成物5つのファイル

規定条項からテスト済みポリシーへ

すべてのポリシーは実装した条項または確認済みの回答を引用します。モデル文書には Mermaid ロール継承図と各ポリシーの根拠が含まれます。

  • ファイルストアに直接インポート可能な .spdl(spctl check で検証済み)。
  • 部署、場所、データ分類、金額に関する ABAC 条件。
  • 許可、拒否、承認境界を網羅した実行可能なテストケース。
スキルフォルダーを開く
サンプル出力英語 + 中国語

架空の就業規則をエンドツーエンドでモデル化

どちらの実行例も架空の就業規則から開始し、テスト済みのモデルで完了します。それぞれローカルの PMS および ADS に対して spctl check と全 37 件の認可ケースに合格しています。

  • ロール継承と部署スコープのマネージャーロール。
  • 広範な従業員権限を上書きする明示的な拒否。
  • entity としてモデル化された給与計算サービスアカウント。
英語サンプルを読む

このパッケージは Agent Skills 形式に準拠しています:name と description のフロントマターを含む SKILL.md、リファレンス、スクリプト、サンプルが含まれます。その形式をサポートするすべてのエージェントで動作します。一般的なインストールの場合は、エージェントのスキルディレクトリにスキルフォルダーをコピーし、エージェントに就業規則のモデル化を依頼してください。以下の例は、互換性のある2つのエージェントを示しています。

前提条件

  • spctl — — spctl check -f policies.spdl で生成された SPDL を検証します。
  • speedle-pms and speedle-ads — — ローカルの Speedle に対してエンドツーエンドの認可テストケースを実行します。
  • Python 3 — — scripts/run-cases.py 内のテストケースを実行します。
インストール + 使用法Claude Code · 例
claude plugin marketplace add teramoby/ai.speedle.io
claude plugin install speedle@speedle

# Claude Code で:
/plugin configure speedle@speedle
/speedle:speedle-policy-modeler ./employee-handbook.md
インストール + 使用法Codex · 例
git clone --depth 1 https://github.com/teramoby/ai.speedle.io.git
mkdir -p ~/.agents/skills
cp -R ai.speedle.io/skills/speedle-policy-modeler \
  ~/.agents/skills/

# Codex CLI または IDE 拡張機能で:
$speedle-policy-modeler ./employee-handbook.md

Speedle MCPプレビュー

Speedle MCP:1つのパッケージ、明確に分離された2つのモード

@speedle/mcp は npm で公開されています。ローカルの stdio MCP サーバーとして動作する speedle-mcp バイナリを含む 1 つのパッケージです。

README を読む
モード 01check

認可チェック

check モードはデフォルトで is_allowed のみを登録し、ADS 設定のみを読み込みます。diagnose、all_granted_roles、all_granted_permissions は、--expose-diagnose、--expose-all-granted-roles、--expose-all-granted-permissions フラグによってオプトインできます。diagnose はセルフホストの Speedle でのみ動作します。サーバーは Speedle Cloud に対しては起動しません。認可に関する質問に回答するのみで、呼び出し側アプリケーションで何かを強制することはありません。

  • Speedle ADS REST API を介した読み取り専用の認可チェック。
  • 主体、リソース、アクション、型付き属性を入力として受け取ります。
  • 環境変数から ADS ベース URL、サービス名、オプションのベアラートークンを取得します。
check モードの設定を読む
モード 02manage

ポリシーの設計と管理

manage モードは管理ツールのみを登録し、PMS REST API を介して Speedle ポリシーを設計および管理するための PMS 設定のみを読み込みます。

  • サービス、認可ポリシー、ロールポリシー。
  • SPDL 形式の有効なポリシー。PMS は作成時に各ポリシーを検証します。
  • 読み取り専用オプション。破壊的な削除には明示的なターゲットの確認が必要です。
manage モードの設定を読む

Node.js 22 以降が必要です。これらの例は公開されているパッケージの README と一致しています。上記の Claude Code プラグインは @speedle/mcp@0.2.1 に固定されています。

インストールnpm · npx
npm install @speedle/mcp

npx @speedle/mcp check
npx @speedle/mcp manage
check モードセルフホスト
{
  "mcpServers": {
    "speedle-check": {
      "command": "npx",
      "args": ["-y", "@speedle/mcp", "check"],
      "env": {
        "SPEEDLE_ENDPOINT": "http://127.0.0.1:6734",
        "SPEEDLE_SERVICE_NAME": "books"
      }
    }
  }
}
check モード · オプトインセルフホスト
{
  "mcpServers": {
    "speedle-check": {
      "command": "npx",
      "args": [
        "-y",
        "@speedle/mcp",
        "check",
        "--expose-diagnose",
        "--expose-all-granted-roles",
        "--expose-all-granted-permissions"
      ],
      "env": {
        "SPEEDLE_ENDPOINT": "http://127.0.0.1:6734",
        "SPEEDLE_SERVICE_NAME": "books"
      }
    }
  }
}
manage モードセルフホスト
{
  "mcpServers": {
    "speedle-manage": {
      "command": "npx",
      "args": ["-y", "@speedle/mcp", "manage"],
      "env": {
        "SPEEDLE_PMS_ENDPOINT": "http://127.0.0.1:6733"
      }
    }
  }
}

AI リスク検知

計画中

AI はより多くの次元や関係性を横断して、単一のルールでは見落とされがちなリスクを発見できます。これは Speedle が探究および構築している方向性であり、既存のリリース機能ではありません。ポリシーが拒否権を保持します:リスクシグナルによって監視や保護を強化することはできますが、拒否を許可に変更することはありません。

ターゲットフローを見る

Control what AI can access

AI の構築と運用におけるアクセスを統制

AI システムがデータ、モデル、ツール、他のエージェントと接するあらゆる場所に適用される Speedle のポリシーエンジン:モデル提供前の構築フェーズ、および提供・動作中の運用フェーズ。これらはソリューションパターンであり、特定の ML やエージェントプラットフォームとの既成連携機能ではありません。

コンセプト

AI の構築と運用のための単一の決定ポイント

各領域にはアプリケーション内の執行ポイントがあります。動作を実行する前に Speedle に問い合わせ、その回答を執行します。

コンセプト: AI の構築と運用のための決定ポイントとしての Speedle An identity band at the top: your IdP and OAuth authenticate users and agents, MCP authorization builds on OAuth, and the principals flow into Speedle. On the left, the Build lane has two areas: data and training, asked by the data loader and job scheduler; and model release, asked by the model registry and release pipeline. On the right, the Run lane has four areas: inference and RAG, asked by the retriever per document and the API gateway; agents acting for users, asked by the agent runtime about the agent’s token scope and then the delegating user; tool calls over MCP, asked by the MCP host or gateway; and agent-to-agent calls, asked by the calling or receiving agent. Every area's enforcement point sends a request to Speedle's policy decision point in the centre and receives allow or deny. From Speedle, decisions and their explanations flow into the audit and explain band at the bottom: the diagnose API shows which policy matched and why, and applications アプリはエージェントと委任した 人間とともに各決定を記録します。 アイデンティティ入力 横断的関心事 IdP と OAuth がユーザーとエージェントを認証します。MCP 認可は OAuth 上に構築されます。 アプリケーションはこれらをプリンシパルとして渡します。Speedle は渡されたプリンシパルに基づいて決定します。 プリンシパル ビルド モデル提供前 実行 AI の提供および動作中 01 データとトレーニング データローダー、ジョブスケジューラー データセット、トレーニングジョブ、 チェックポイントのエクスポート 02 モデルリリース モデルレジストリ、リリースポリシー 登録、承認、プロモート、 ロールバック 03 推論と RAG ドキュメントごとのリトリーバー ゲートウェイ 04 ユーザーに代わって 動作するエージェント エージェントランタイム ユーザー + エージェント 05 ツール呼び出し (MCP) MCP ホストまたはゲートウェイ 呼び出しごと 06 エージェント間呼び出し (A2A) 呼び出し側または受信側のエージェント SPEEDLE ポリシー決定 ポイント 各領域のリクエストに対して SPDL ポリシーを評価 許可 | 拒否 決定 + 理由 監査と説明の出力 横断的関心事 すべての決定は Speedle の diagnose API で説明できます:どのポリシーが一致したか、その理由。 アプリケーションはエージェントと委任した人間とともに各決定を記録します。 コンセプト: AI の構築と運用のための決定ポイントとしての Speedle Stacked from top to bottom. Identity in: your IdP and OAuth authenticate users and agents, MCP authorization builds on OAuth, and the application passes the principals to Speedle. Speedle's policy decision point evaluates SPDL policy and answers allow or deny. Every area's enforcement point asks it. Build lane: data and training, asked by the data loader and job scheduler; model release, asked by the model registry and release pipeline. Run lane: inference and RAG, asked by the retriever per document and the API gateway; agents acting for users, asked by the agent runtime about the agent’s token scope and then the delegating user; tool calls over MCP, asked by the MCP host or gateway per call; agent-to-agent calls, asked by the calling or receiving agent. Audit and explain out: the diagnose API shows which policy matched and why, and applications アプリはエージェントと委任した 人間とともに各決定を記録します。 アイデンティティ入力 横断的関心事 IdP と OAuth がユーザーと エージェントを認証します。 MCP authorization builds on OAuth. Speedle は渡されたプリンシパルに 基づいて決定します。 プリンシパル SPEEDLE ポリシー決定ポイント SPDL ポリシーを評価 許可 | 拒否 ビルド モデル提供前 実行 AI の提供および動作中 01 データとトレーニング データローダー、ジョブスケジューラー 02 モデルリリース モデルレジストリ、リリースポリシー 03 推論と RAG ドキュメントごとのリトリーバー ゲートウェイ 04 ユーザーに代わって 動作するエージェント エージェントランタイム ユーザー + エージェント 05 ツール呼び出し (MCP) MCP ホストまたはゲートウェイ 呼び出しごと 06 エージェント間呼び出し (A2A) 呼び出し側または受信側のエージェント 監査と説明の出力 すべての決定は Speedle の diagnose API で説明できます。 どのポリシーが一致したか、その理由。 アプリはエージェントと委任した 人間とともに各決定を記録します。
執行ポイントが Speedle に問い合わせます:主体、アクション、リソース、属性。 Speedle が許可または拒否を回答し、アプリケーションがそれを執行します。

ソリューションパターン

領域ごとに1つのポリシーパターン

領域ごとに1つの文と1つの代表的なルール。各チェックに必要な属性を含む完全な SPDL 例は、パターンページにあります。

ビルド · 01 データとトレーニング

データとトレーニング

トレーニングジョブはデータセットを読み取り、チェックポイントを書き込みます。同意とリージョンはデータセットごとにチェックされ、制限されたデータがトレーニングに入ることはありません。

grant role training-pipeline read expr:^/datasets/ if consent == true && data_region == job_region

ビルド · 02 モデルリリース

モデルリリース

登録、承認、昇格、ロールバックは個別の操作であり、自分がトレーニングしたモデルを承認することはできません。

deny role release-manager approve expr:^/models/ if trained_by == request_user

実行 · 03 推論と RAG

推論と RAG

リトリーバーはドキュメントの内容がプロンプトに入る前に各ドキュメントについて問い合わせるため、モデルにはユーザーが閲覧を許可されたもののみが表示されます。

grant role tenant-user retrieve expr:^/collections/ if doc_tenant == user_tenant && doc_label in user_clearances

実行 · 04 ユーザーに代わって動作するエージェント

ユーザーに代わって動作するエージェント

エージェントは委任トークンのスコープ内でチェックされ、その後委任ユーザーが現在の権限でチェックされます。

grant entity triage-agent in-time if request_time < token_expires

実行 · 05 ツール呼び出し (MCP)

MCP によるツール呼び出し

すべてのツール呼び出しは実行前にチェックされ、引数はポリシーが制限できる属性になります。

grant role billing-agent call /tools/issue-refund if amount <= 100 && customer_verified == true

実行 · 06 エージェント間呼び出し (A2A)

エージェント間呼び出し

各ホップがチェックされ、呼び出し先は呼び出し元がすでに保持しているスコープのみを受け取ることができます。

grant role planner-agent call /agents/researcher if IsSubSet(requested_scopes, caller_scopes) && hops <= 2

実行 · 07 常設特権ゼロ · セルフホスト

常設特権ゼロ (ZSP)

適切な発行と制御が行われている場合、ジャストインタイムで有効期間の短いトークンにより常設特権ゼロのパターンを実現できます。Speedle では ZSP 戦略をポリシーとして定義し、すべてのリクエストで適用できます:SPDL で記述した時間枠と条件内でのみアクセスが存在します。

grant role agent-runtime invoke /api/orders if expires_at > issued_at && expires_at - issued_at <= 600 && issued_at <= request_time + 60 && not_before <= request_time + 60 && request_time < expires_at && TokenUnused(token_id)

完全なパターンと SPDL 例を見る

横断的関心事

すべての領域に共通する要素

アイデンティティ、監査、リスクマッピング、境界は、構築と運用のすべての領域に適用されます。

アイデンティティ統合

Speedle が認可を決定し、IdP が認証を行う

Speedle は認可決定ポイントです。認証は IdP または OAuth 認可サーバーから行われ、ユーザーとエージェントの両方に適用されます。MCP 認可は OAuth 上に構築されます。アプリケーションは検証されたアイデンティティをプリンシパル(ユーザー、グループ、エンティティ)にマッピングしてから Speedle に問い合わせます。

監査と説明可能性

診断および監査ログ

Speedle の diagnose API は決定、理由、有効なロール、およびどのポリシーがなぜ一致したかを含む検証されたポリシーを返します。アプリケーションはエージェントおよび委任した人間とともに各決定をログに記録します。診断はポリシーとリクエストの詳細を公開するため、信頼できる運用者に限定してください。

リスクマッピング

OWASP LLM06:2025 過剰なエージェンシーに対応

OWASP Top 10 for LLM Applications 2025 では過剰なエージェンシー(Excessive Agency)を挙げています:タスクが必要とする以上の機能、権限、または自律性を持つエージェントです。エージェントごとのロール、ツールごとのチェック、タスクと時間にバインドされた委任、および高リスクのアクションに対する人間の承認により、この3つをそれぞれ絞り込みます。

境界

Speedle の適用範囲

Speedle はプロンプトインジェクションの検出、モデルの入出力フィルタリング、モデルやデータセットのサプライチェーン検証は行いません。これらには専用の管理策を使用してください。侵害された、または誤導されたエージェントができることを制限します:プロンプトの内容に関わらず、ポリシー外のすべてのリクエストに対して Speedle は拒否を返します。

エコシステム

Speedle の構成要素からはじめる

Python SDK · 決定をリクエスト0.2.0
from speedle import Auth, Client

with Client(backend="speedle", endpoint="http://localhost:6734",
            auth=Auth.none(), service_name="docs") as speedle:
    allowed = speedle.is_allowed("alice", "get", "/docs/public")
    # docs サービスが alice に get /docs/public を許可すると True になります

簡単な例です。SDK ドキュメントでは、各言語クライアント、リクエストモデル、エラー処理について説明しています。Node.js クライアントは npm で公開されています:npm install @speedle/sdk。

オープンソース · オープンな探求

実際の AI 認可シナリオを共有してください

今後の例作りにご協力ください。アプリケーションが保護を必要とするデータセット、モデル、ツール、エージェントワークフローを共有してください。

Speedle は Oracle Speedle から発展し、Universal Permissive License (UPL) 1.0 のもとでオリジナルの開発者によってメンテナンスが続けられています。プロジェクトのストーリーを読む。