AIエージェント活用実践編 / Tool Use と MCP — 外部システム連携
認証と最小権限
無料公開レッスン / 読了目安 7 分
レッスン: 認証と最小権限
学習のねらい
AI エージェントが外部システムと連携する際、認証 (Authentication) と 認可 (Authorization) は非常に重要です。不適切な権限付与はセキュリティリスクを高めます。本レッスンでは、API キーの安全な管理、最小権限の原則、監査ログの重要性について学び、安全な AI エージェント連携の設計方法を理解しましょう。
API キーは MCP server に渡し、AI には渡さない
外部システムの API を利用するには、通常 API キー や アクセストークン が必要です。これらの認証情報を AI モデル (Claude など) のプロンプトに直接含めることは 必ずしてはいけません。
なぜ AI に直接渡してはいけないのか?
- セキュリティリスク: プロンプトに含めると、AI の出力やログに API キーが意図せず含まれる可能性があります。これにより、API キーが漏洩し、悪用されるリスクが高まります。
- 制御不能: AI が API キーを使ってどのような操作を行うかを完全に制御することが難しくなります。
正しい方法 — MCP サーバでの管理
API キーやアクセストークンは、AI モデルではなく MCP サーバ が管理すべきです。
- AI (クライアント): 「GitHub の Issue 一覧を取得してほしい」と MCP サーバにリクエストを送る。
- MCP サーバ: リクエストを受け取る。
- MCP サーバ: 自身が安全に保管している API キーやアクセストークンを使って、GitHub API を呼び出す。
- MCP サーバ: GitHub API からの応答を処理し、その結果を AI に返す。
このようにすることで、AI モデルは認証情報を知ることなく、安全に外部ツールを利用できます。MCP サーバは、認証情報の「門番」としての役割を果たします。
最小権限の原則 (Principle of Least Privilege)
AI エージェントが外部ツールを使う際のアクセス権限は、必要最小限 に絞るべきです。これを 最小権限の原則 (Principle of Least Privilege, PoLP) と呼びます。
なぜ最小権限が重要なのか?
- セキュリティリスクの低減: 万が一、AI エージェントが意図しない動作をしたり、悪意のあるプロンプトによって操作されたりした場合でも、与えられた権限が最小限であれば、システムへの被害を限定できます。
- 意図しない操作の防止: 例えば、Issue を「読み取る」だけで良いツールに「削除」の権限を与えてしまうと、誤って重要な Issue を削除してしまう可能性があります。
具体的な適用例
- GitHub: Issue 一覧の取得だけであれば、「
repo:public_repoの読み取り専用」や、特定の Issue への「コメント追加」のみにスコープを絞るべきです。リポジトリの削除やコードのプッシュ権限は、そのタスクに必要でない限り与えてはいけません。 - Slack: 特定のチャンネルへのメッセージ投稿だけであれば、「
chat:writeスコープ」で、対象チャンネルを限定するべきです。全チャンネルへの投稿やユーザー情報の読み取り権限は不要です。
API や OAuth の設定で、できる限り細かい粒度で権限を制御しましょう。
スコープを絞ってレートリミットを組む
外部 API の利用には、通常 レートリミット (Rate Limit) が設定されています。これは、一定時間内に API を呼び出せる回数に制限を設けることで、サーバへの過負荷を防ぐ仕組みです。
- スコープを絞る: 異なる API キーや認証情報に異なるレートリミットを適用することで、システム全体の安定性を高められます。
- AI の暴走対策: AI エージェントが意図せず大量の API コールを生成してしまう「暴走」を防ぐためにも、レートリミットは有効です。もし暴走が発生しても、レートリミットによって外部システムへの影響を最小限に抑えることができます。
監査ログ (Audit Log) の最低限
AI エージェントが外部システムと連携する際は、その活動を記録する 監査ログ (Audit Log) を必ず残しましょう。
監査ログに残すべき情報
- いつ (Timestamp): ツールが呼び出された日時。
- 誰が/何が (Actor): どの AI エージェント、またはどのユーザーの指示によってツールが呼び出されたか。
- 何を (Action): どのツールが、どのような引数で呼び出されたか。
- 結果 (Result): ツールの実行結果、成功/失敗、エラーメッセージ。
- コンテキスト (Context): 必要に応じて、そのツール呼び出しに至るまでの AI の思考やプロンプトの一部。
監査ログは、セキュリティインシデント発生時の原因究明や、AI の挙動分析、システム改善に不可欠です。最低限これらの情報を記録し、定期的にレビューする体制を整えましょう。
まとめ
AI エージェントと外部システムの連携では、API キーを MCP サーバで安全に管理し、AI に直接渡さないことが重要です。また、最小権限の原則に従い、必要最小限のアクセス権限のみを付与し、レートリミットでAIの暴走を防ぎましょう。さらに、監査ログを記録することで、セキュリティと運用上の透明性を確保できます。次の演習では、GitHub MCP の具体的なユースケースを想定し、必要最小限の権限設計について考えてみましょう。