AI Agents と Agent API Keys のセキュリティ保護
@secureAiAgent デコレーターを使用して、特定の agent をセキュリティ保護する関数であることを指定します。Agent API Keys を使用すると、セキュリティ方法をバイパスでき、App API Keys を不要にできます。
Squid Client を使用して AI agents を作成し、チャットを有効化する際には、データの保護が不可欠です。AI agent およびそれらとのチャットには機密情報が含まれる可能性があるため、不正使用や改ざんを防ぐために、アクセスと更新を制限することが重要です。
AI agent が public に設定されていない限り、アクセスはデフォルトで制限され、アクセス権限を明示的に設定するルールがないと動作しません。(ぜひ試してみてください!)
Squid は、セキュリティルールを設定するために使用できる @secureAiAgent デコレーターを提供します。これらのルールは、認可されていないユーザーによる agent の更新や、認可されていないチャットの実行を防ぎ、データの完全性を保護します。
AI agent をセキュリティ保護しようとする前に、保護したい agent の public 設定が OFF に切り替わっていること、そして AI agent のセキュリティルール設定に必要となるため、バックエンドをセットアップ済みであることを確認してください。
チャットのセキュリティ保護
チャット権限を管理するには、@secureAiAgent デコレーターを使用します。すべてのユーザーに対して すべての agents へのチャットを開放するには、バックエンドに次を追加します:
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();
}
ただし、すべての agents へのアクセスを開閉するのは範囲が非常に広いため、アクセスセキュリティを設定する対象として Agent ID を指定することを推奨します。
そのためには、AI agent の ID を @secureAiAgent デコレーターに渡します:
@secureAiAgent('AGENT_ID')
条件付きチェック
API は、クライアントがクエリとともにさまざまな options を送信できるようになっており、これを制限したい場合があります。
例えば、query options では agent に設定されているものとは異なる AI model を指定できます。これを制限するために、このメソッドは options.model に値が指定されているかどうかをチェックし、指定されていれば失敗(拒否)します。
@secureAiAgent()
immutableModel(context: SecureAiAgentContext): boolean {
if (context.options?.model !== undefined) {
// Don't allow overriding the model that was configured for the agent.
return false;
}
return this.isAuthenticated();
}
他にも多くの options があり、どこから始めればよいかわからない場合、最も安全なのは options を一切許可しないことです。
@secureAiAgent()
immutableAgent(context: SecureAiAgentContext): boolean {
const options = context.options || {};
if (Object.keys(options).length > 0) {
// Don't allow any options
return false;
}
return this.isAuthenticated();
}
詳しくは、ブロックまたは許可できる その他すべての options を確認してください。
Agent API Keys
Agents は独自の API keys を持つことができ、App API Keys の代わりに使用して agent のセキュリティルールをバイパスできます。App API Keys は、破壊的アクションを含むアプリケーション全体へのフルアクセスを提供できるため、セキュリティリスクを最小化する目的で、Agent にスコープされた API Key を使うことが有用な場合があります。
制限事項
- Agent API Keys は Agent ベースのアクションにのみ使用できるため、用途は限定されます。
- App API Key が存在する場合、Agent API Keys は無視されます。
使用方法
Agent API Key を使用するには、Agent Client を作成する際に options 配列の一部として渡します。
/**
* Note the lack of App API Key when creating the Squid instance. This is important as passing an API Key here will cause the Agent API Key to be ignored.
*/
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,
});