AI Agents と Agent API Keys のセキュリティ
指定されたエージェントのセキュリティを確保する関数として、@secureAiAgent デコレーターを使用します。セキュリティ方法をバイパスし、App API Keysを必要としないために、Agent API Keysを使用します。
Squid Clientを使用してAIエージェントを作成し、チャット機能を有効にする際、データのセキュリティは非常に重要です。AIエージェントおよびそのチャットには機微な情報が含まれる可能性があるため、不正な使用や変更を防ぐためにアクセスや更新を制限することが不可欠です。
AIエージェントが public に設定されていない限り、アクセスはデフォルトで制限され、アクセス許可を設定する明示的なルールがなければ機能しません。(どうぞお試しください!)
Squidはセキュリティルールを設定するために使用できる @secureAiAgent デコレーターを提供しています。これにより、不正なユーザーがエージェントを更新したり、不正なチャットを実行することを防ぎ、データの整合性を保護します。
AIエージェントのセキュリティを試す前に、セキュリティを確保したいエージェントの public 設定が OFF になっていることと、set up your backend が完了していることを確認してください。これは、AIエージェントのセキュリティルールを設定するために必要です。
チャットのセキュリティ
チャットの許可を管理するには、@secureAiAgent デコレーターを使用します。すべてのユーザーに対して すべてのエージェント へのチャットを開放するには、以下をbackendに追加してください:
import { secureAiAgent, SquidService } from '@squidcloud/backend';
export class ExampleService extends SquidService {
@secureAiAgent()
allowChat(): boolean {
return true;
}
}
チャットを認証済みユーザーにのみ制限するには、Squid backend の isAuthenticated() メソッドを使用してください。このメソッドは、アクションを試みるクライアントが認証済みであるかどうかを示す boolean を返します。
@secureAiAgent()
allowChat(): boolean {
return this.isAuthenticated();
}
すべてのエージェントへのアクセスを開放または制限するのは非常に広範囲であるため、アクセスセキュリティを構成する特定の Agent ID を指定することを推奨します。そのため、AIエージェントのIDを @secureAiAgent デコレーターに追加してください:
@secureAiAgent('AGENT_ID')
条件付きチェック
APIでは、クライアントがクエリとともに様々なオプションを送信でき、これを制限したい場合があります。
たとえば、クエリオプションにより、エージェントに設定されたものとは異なるAIモデルの使用を指定できる場合があります。それを制限するために、このメソッドは options.model に値が設定されているかを確認し、設定されていれば失敗します。
@secureAiAgent()
immutableModel(context: SecureAiAgentContext): boolean {
if (context.options?.model !== undefined) {
// エージェントに設定されたモデルの上書きを許可しません。
return false;
}
return this.isAuthenticated();
}
他にも多くのオプションが存在し、どこから始めるべきか不明な場合は、オプションを一切許可しないのが最も安全です。
@secureAiAgent()
immutableAgent(context: SecureAiAgentContext): boolean {
const options = context.options || {};
if (Object.keys(options).length > 0) {
// いかなるオプションも許可しません
return false;
}
return this.isAuthenticated();
}
詳細については、ブロックまたは許可可能なその他すべてのオプションをご覧ください。
Agent API Keys
エージェントは、独自のAPI Keysを持つことができ、これを用いてエージェントのセキュリティルールをバイパスするためにApp API Keysの代わりに使用できます。App API Keysは、破壊的な操作を含むアプリケーション全体へのフルアクセスを提供する可能性があるため、セキュリティリスクを最小限に抑えるために、エージェントにスコープされたAPI Keyを使用することが有用です。
制限事項
- Agent API Keys はエージェントベースの操作にのみ使用できるため、その有用性は制限されます。
- App API Key が存在する場合、Agent API Keys は無視されます。
使用方法
Agent API Keyを使用するには、Agent Client作成時にオプション配列の一部として渡します。
/**
* Squid インスタンス作成時にApp API Keyが指定されていない点に注意してください。ここにAPI Keyを渡すと、Agent API Keyが無視されるため重要です。
*/
const squid = new Squid({
appId: 'YOUR_APP_ID',
region: 'YOUR_REGION',
environmentId: 'dev',
squidDeveloperId: 'YOUR_SQUID_DEVELOPER_ID',
});
const agentClient = await squid
.ai()
.agent('banking-copilot', {
apiKey: process.env.SQUID_AGENT_API_KEY,
});