-Daniel Bass
AI エージェントの使用を通じてアプリケーションのパフォーマンスを向上させることは、業界全体のハイプや実際の有用な使用事例のせいで非常に一般的な実践になっています。
しかし、これらのAIエージェントはしばしば高度に敏感なデータへのアクセスを必要とし、重大なセキュリティリスクをもたらします。AIアシスタントが敏感な患者情報を暴露複数のAIエージェントが脅かされ、急速な注射攻撃で。
この文脈におけるAIエージェントの保護は、AIエージェント自身の能力と同じくらい重要になってきています。
この問題を解決するために、我々は、許可今日紹介したい構造化されたセキュリティアプローチについて、しばらく作業してきました。
4 Perimeter Framework
この方法は、実装することでAIエージェントを保護するための包括的な戦略を提供します。Fine Grain Access Control(フィン・グリーン・アクセス・コントロール)コンプライアンスを確保し、潜在的な攻撃ベクターを軽減する前に、解決策に入る前に、問題空間についてもっと話しましょう。
問題:敏感なドメインにおけるAIのセキュリティリスク
従来のアプリケーションセキュリティ対策とアクセス制御メカニズムは、AIエージェントの取り扱いに関して不足していますが、従来のアクセス制御システムは、role-based access control (RBAC)静的許可を管理する上で優れているので、AIの応答のダイナミックな性質と闘っています。予測可能な出力への入力マップとアクセスパターンがよく定義されている従来のアプリケーションとは異なり、AIは各クエリに対してユニークな応答を生成します。
AI システムがデータにアクセスする方法もセキュリティ基準に適合しません。正確かつ有用な応答を提供するためには、AI エージェントはさまざまなデータソースや知識ベースへの幅広いアクセスを必要とします。属性ベースダイナミックなアクセスを決める方法です。
別の懸念点は、AIシステムが導入する新たな攻撃ベクターです。従来のセキュリティ対策は、迅速な注入攻撃、モデル抽出の試み、またはデータ中毒攻撃に対処するように設計されていませんでした。
このソリューションは、4つの基本的な周囲に構築された包括的なセキュリティフレームワークの形で提供されています。
タイトル: The Four-Perimeter Framework
AIアプリケーションは、インプットを処理し、データを取得し、アクションを実行し、出力を生成する方法で標準のソフトウェアと異なるため、これらの課題に対処するためには、AIの相互作用のあらゆる段階にアクセス制御を適用する構造化されたセキュリティアプローチが必要です。
THEFour-Perimeter Frameworkアイデンティティー意識を強化するために、AIのライフサイクル全体を通じて精製された認証AIモデルがどのデータにアクセスできるか、どのような操作を実行できるか、どのように反応が検証されるかを規制するセキュリティの限界を導入します。
この枠組みは4つの部分から構成されています:
- ♪
- Prompt Filtering - 検証された、安全な入力のみがAIモデルに到達することを保証します。 ♪
- RAG Data Protection - AI が外部の知識源へのアクセスを制御する。 ♪
- Secure External Access - AI エージェントの権限を外部ツールと相互作用するときに定義する。 ♪
- Response Enforcement - Compliance checks を適用し、AI によって生成された出力をフィルタリングします。 ♪
適用することによりfine-grained access control (FGA)これらの周辺の原則を超えて、AIエージェントは残る。secure, auditable, and compliant柔軟性や機能性を犠牲にしてはいけません。
FGAはどこへ入るの?
前述したように、RBACのような伝統的なアクセス制御方法は、AIのダイナミックで文脈依存的な行動に対処できず、特に属性ベースのアクセス制御(ABAC)と関係ベースのアクセス制御(ReBAC)を通じて、フィンセーネド・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・オブ・
- ♪
- ABAC for Prompt Filtering AI モデルは非構造化された入力を処理し、従来のセキュリティルールを適用することは困難です。 ♪
- ♪
- ReBAC for RAG Data Protection Retrieval-Augmented Generation (RAG) により、AI モデルはベクトルデータベースから情報を抽出できます。 ReBAC は、ユーザー、データ ソース、AI エージェント間の関係を定義することによって、この設定でセキュリティを強化する自然な方法を提供します。 ♪
ABAC と ReBAC を組み合わせることにより、AI アプリケーションは、手動の介入を必要とせずに異なる AI ワークフローに適応する柔軟でポリシーに基づくアクセス制御メカニズムを獲得します。
Step-by-Step Implementation ってどんな感じですか?
実践的な実施を通じて歩いてみましょう。Four-Perimeter Framework in actionこの例では、AIエージェントがvalidating prompts, enforcing data protection, restricting external access, and moderating responsesリベラル許可 AI Access Control各ステップの統合
許可1. Implement Prompt Filtering
ファーストセキュリティ・ペリメーターは、AI 入力がモデルに到達する前に検証し、浄化することに焦点を当てています。
- ♪
- 認証チェックは即時認証パイプラインに組み込まれており、不正なデータがAI出力に影響を与えないようにします。 ♪
- 役割、属性、および関係に基づくアクセス制御が実施され、承認されたパラメータのみがAIに移行されることを保証します。 ♪
- ポリシー違反はリアルタイムで記録され、アクセス決定の監査可能なトラックを保持します。 ♪
以下は、プロンプトをフィルタする3つの方法 - 最も簡単なことから最も高度なことまで:
- ♪
- Token Validation - プロンプトの長さやシステム内の実行入力の一般的な許可などの単純なチェックのための効率的な方法。 ♪
- パターン マッチング - この方法では、許可チェックは、プロンプト テキストのパターンを調べ、例えば、パターンが SQL クエリまたはコード サンプルに一致するかどうかを調べます。 ♪
- AI 分類 - このリストで最も高度な方法で、AI 分類は AI を使用してプロンプトを専用のシステムプロンプトを使用して分析し、許可チェックで正確に分析できる構造化された入力に分類します。 ♪
Prompt Filtering with PydanticAI
効率的なプロンプトフィルタの実装を最適に示すために、ここでは、PydanticAIツールを使用してAIエージェントへのユーザ入力をフィルタリングする例です。PydanticAIは、Pythonの有名なPydanticライブラリとその静的入力機能を活用し、非構造化データを処理する構造化されたAIフレームワークに変換するエージェントフレームワークです。
次の GitHub リポジトリには、PydanticAI のフレームワークの完全な実装が含まれています。github.com/permitio/permit-pydanticai トップページ
@financial_agent.tool
async def validate_financial_query(
ctx: RunContext[PermitDeps],
query: FinancialQuery,
) -> bool:
"""Key checks:
- User has explicitly opted in to AI financial advice
- Consent is properly recorded and verified
- Classifies if the prompt is requesting advice
Args:
ctx: Context containing Permit client and user ID
query: The financial query to validate
Returns:
bool: True if user has consented to AI advice, False otherwise
"""
try:
# Classify if the prompt is requesting advice
is_seeking_advice = classify_prompt_for_advice(query.question)
permitted = await ctx.deps.permit.check(
# The user object with their attributes
{
"key": ctx.deps.user_id,
},
# The action being performed
"receive",
# The resource being accessed
{
"type": "financial_advice",
"attributes": {"is_ai_generated": is_seeking_advice},
},
)
if not permitted:
if is_seeking_advice:
return "User has not opted in to receive AI-generated financial advice"
else:
return "User does not have permission to access this information"
return True
except PermitApiError as e:
raise SecurityError(f"Permission check failed: {str(e)}")
2. Enforce Data Protection –
次に、保証します。retrieval-augmented generation (RAG)AI モデルだけがアクセスできることを確実にすることによるクエリauthorized knowledge sourcesこれは、AIワークフロー内でAIエージェントのデータをユーザーの名義で細かいフィルタリングすることで達成できます。
- ♪
- 優れたポリシーは、関係ベースのアクセス制御などの高度なデータフィルタリングモデルを使用して、ポリシーエンジンへの高度なクエリフィルタを可能にします。 ♪
- AI エージェントに接続されたベクトルおよびグラフソースには、エンジンが構造化されていないクエリを操作するのに役立つメタデータがあり、それをフィルタリングして、許可されたデータのみを含めることができます。 ♪
- Every time the agent fetches data from the RAG knowledge base, it filters the results per the user's permission. ♪
エージェントアプリケーションが RAG フィルタリングを実行する場合、次の方法のいずれかを使用します。
- ♪
- FilterObjects - この方法では、グラフアプリケーションは RAG からすべての関連データを取得し、その後、ユーザー権限ごとにそれらをフィルタリングします。 ♪
- GetUserPermissions - この方法では、エージェントは RAG に非構造化されたクエリを提供します。 RAG は GetUserPermissions 関数を呼び出し、非構造化された RAG クエリにフィルター クエリを付加します。 ♪
RAG Data Protection with Langchain
有名なAIアプリケーションフレームワークであるLangchainは、あらゆる種類のデータソースと組み合わせることができるカスタマイズされたリトリバーの素晴らしいサポートを提供するリトリバーコンポーネントで知られており、安全なRAGの実装を容易にします。SelfQueryRetriever
, you can wrap the usual RAG with aGetUserPermissions
PermitSelfQueryRetriever は、LLM の結果をフィルタリングするためのユーザー、アクション、および RAG リソースのタイプを取得する例です。
# 1. Build a small in-memory vector store
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embedding=embeddings)
# 2. Initialize the PermitSelfQueryRetriever
retriever = PermitSelfQueryRetriever(
api_key=os.getenv("PERMIT_API_KEY", ""),
pdp_url=os.getenv("PERMIT_PDP_URL"),
user=USER,
resource_type=RESOURCE_TYPE,
action=ACTION,
llm=embeddings,
vectorstore=vectorstore,
enable_limit=False,
)
以下のリポジトリには、Langchainのフレームワークの完全な実装が含まれています。HTTPS://github.com/permitio/langchain-permit バージョンアップ
3. Secure External Access –
AIエージェントはしばしば外部のAPI、サービス、および自動化ツールと相互作用します。適切なアクセス制御がなければ、許可されていないアクションを実行するリスクがあります。
- ♪
- AIエージェントが外部サービスと相互作用するサーバークライアントモデルを定義するMCPのようなモデルの使用は、AI外部アクセス(データベース、API、支払いシステムなど)のセキュリティを可能にする大きなステップです。 ♪
- AIアクションインフラストラクチャはPermit.ioのようなサービスを使用して、アクションレベルで権限チェックを実行し、誰がリクエストを提出しているか、どのようなアクションを実行したいかを確認することができます。 ♪
- 開発者はAIエージェントに機械のアイデンティティを割り当てることができ、その機能は事前に承認された機能に限られます。
GPTと自然言語インターフェイスは新しいものではありませんが、ユーザーの名義でアクションを実行させることは、多くのエンジニアが直面している新しい課題です。
- ♪
- 直接アクセスセキュリティ - 最も単純なレベル. ユーザーはAIエージェントにHTTP呼び出しなどの操作を実行するように依頼します. AIエージェントは、現在の文脈とユーザーを考慮して、操作が許可されているかどうかをチェックすることができる。 ♪
- エージェント対エージェントのコミュニケーション - この次のレベルでは、エージェント自身が最小特権の原則に基づいて行動を行うことを可能にするアイデンティティと許可のキャスティングフローを必要とします。 ♪
- アクセスリクエスト フロー - 外部アクセスの最もエキサイティングなレベルは、AI エージェントが操作を実行したいときに、人間のユーザーから直接アクセスを要求する必要性を理解するときです。 ♪
MCP, Human-in-the-Loop, and External Access
モデル・コンテキスト・プロトコル(Model Context Protocol)は、AIエージェントが積極的なアクションを実行できるようにする問題を解決し、外部アクセスを確保するための最大のエンパイアとして機能する、Anthropicが導入した新しいプロトコルです。
次の例では、アクセス リクエスト フローを管理する方法を知っている MCP サーバを示し、 Permit.io の API を使用してアクセス リクエスト フローを管理します。
MCP アクセス リクエスト サーバの完全なコード サンプルはこちらでご覧いただけます。https://github.com/permitio/permit-mcp にアクセスする
@mcp.tool()
async def request_access(username: str, resource: str, resource_name: str) -> dict:
"""
Initiate access request call to a specific resource in the system
Args:
username: The username of the person requesting access
resource: The resource type the user is request access for
resource_name: The name of the restaurant to request access for
"""
login = await permit.elements.login_as({ "userId": slugify(username), "tenant": "default"})
print(login)
url = f"https://api.permit.io/v2/facts/{PROJECT_ID}/{ENV_ID}/access_requests/{ELEMENTS_CONFIG_ID}/user/{slugify(username)}/tenant/default"
payload = {
"access_request_details": {
"tenant": "default",
"resource": resource,
"resource_instance": resource_name['id'],
"role": "viewer",
},
"reason": f"User {username} requests role 'viewer' for {resource_name}"
}
headers = {
"authorization": "Bearer YOUR_API_SECRET_KEY",
"Content-Type": "application/json",
}
async with httpx.AsyncClient() as client:
await client.post(url, json=payload, headers=headers)
return "Your request has been sent. Please check back later."
4. Validate AI Responses –
The final perimeter enforces content moderation and compliance on AI-generated responses. This can be done by creating a workflow that applies policy-based filtration before delivering AI outputs. AI-generated responses. この作業は、AI 出力を提供する前にポリシーベースのフィルタリングを適用するワークフローを作成することによって行うことができます。
- ♪
- エージェントアプリケーションに許可チェックを追加し、ユーザーが実際に回答を得る前にチェーンの各段階でポリシーの執行を可能にします。 ♪
- 統合されたデータ検証と認証ワークフローにより、検証済みおよび許可済みのデータのみが進めることができます。 ♪
- ユーザーに返される応答は、事前定義された制限に基づいて編集することができ、データのマスクや使用制限についてユーザーに通知することを可能にします。 ♪
Response Filtering with Langflow
次の例では、Langflow を使用して、コードなしの AI アプリケーションエディターで、ユーザーへのチャット応答の前に配置される許可チェックコンポーネントを作成します。LangFlow のフレンドリーなフローモデリング機能を使用すると、返された応答の不要な詳細を隠す別のコンポーネントを簡単に貼り付けることができます。このリポジトリセキュアな Langflow アプリケーションに必要なすべてのアクセス制御コンポーネントが含まれています。
結論
AI システムは業界全体のアプリケーションに急速に統合されていますが、従来のソフトウェアと比較してセキュリティフレームワークは未開発です。 適切なアイデンティティー認識のアクセス制御がなければ、AI エージェントは機密データを暴露し、許可されていない操作を実行し、コンプライアンスガイドラインに該当しない反応を生成するリスクがあります。
Four-Perimeter Frameworkは、インテリジェンスワークフローをあらゆる段階でセキュアにするための構造化された方法を提供します - プロンプトの検証とリクエスト拡張生成(RAG)データの保護から、AI駆動の外部アクションを制御し、応答コンプライアンスを強化するまで。
Permit.io の AI Access Control は、PydanticAI、LangChain、MCP、LangFlow との統合により、チームが開発ワークフローを妨げることなく、AI アプリケーションに直接セキュリティを組み込むことができます。自分で試してみてはこちらで。
言い換えれば、この分野はまだ比較的新しいものであり、AIエージェントのセキュリティを確保するための最良の実践はまだ進化している。The Four-Perimeter Framework is an experimental approach, and while it provides a strong foundation, I recognize that real-world deployments always require further refinement and adaptation.
私は、このフレームワークを改善する方法についてのあなたのフィードバック、思考、アイデアを聞きたいです 生産準備のAIシステムのためのさらに良い - ここでコメントするか、私達の私達にヒットしますSlack コミュニティで。