脅威調査:エージェント型AIが残した秘密


寄稿者:
Brett WinterfordParth Vakil
Robert FerriAidan Daly

30 6月 2025 読了目安時間: ~

概要

エージェントAIの現在の加速ペースでは、間もなく、人間のユーザーよりも多くのAIエージェントが本番アプリケーションやデータに接続されるようになるというのは、もはや予言めいたことではないように思われます。

職場には深刻な影響があり、推定では、ホワイトカラー労働者の半数が5年以内に職を失う可能性があります。サイバーセキュリティにも深刻な影響があります。

Agentic AIは、プロンプトインジェクション攻撃のような新しいリスクをもたらします。この攻撃では、AIエージェントが効果的に「ソーシャルエンジニアリング」され、信頼できない入力にさらされた後、攻撃者の代わりにアクションを実行させられます。

アイデンティティ企業として、Oktaがより大きく、より直接的に懸念しているのは、エージェント型AIが、認証と認可の観点から、あらゆる組織の攻撃対象領域をどのように拡大させるかということです。攻撃者は、AIエージェントに企業リソースへのアクセスを許可するために開発者が生成している、無数のサービスアカウントのパスワードと静的なAPIキーを発見し、悪用することが予想されます。また、AIエージェントに付与された広範な認可により、特定のアカウントの侵害による潜在的なデータ損失が悪化することも予想されます。

このドキュメントは、本番アプリケーションの構築を視野に、エージェント型AIを実験的に利用するサービスプロバイダー、組織、および開発者向けのガイドとして提供されています。

AI がアイデンティティの負債に果たす役割

アイデンティティの負債は、共有された静的なシークレットがシステム内で時間の経過とともに蓄積されると増加します。シークレットが共有されるとは、複数のユーザーによって知られているか、または複数の場所に保存されている場合を指します。シークレットが静的であるとは、長期にわたって存在し、ローテーションされずに長期間経過する場合を指します。

私たちの調査によると、Agentic AIは、このアイデンティティの負債の蓄積の加速に貢献しています。組織は、保護されたリソース(アプリとデータ)でユーザーに代わってクライアント(AIアプリケーション)が操作を実行することを承認するための、エンタープライズグレードの方法に依存する必要があります。

私たちの調査では、反対の結果が出ています。AIエージェントがSaaSアプリ、コードリポジトリ、データベース、その他のリソース内の機能やデータにアクセスするのを承認する最も一般的な方法は、非常に特権付きのシークレットの露出につながります。

次のページの表は、さまざまな認可アプローチのセキュリティ特性を評価したものです。

Alt text.

エージェント型プラグイン:MCP の先駆け

Copilotプラグインの調査

当社の調査では、AIエージェントを保護されたリソース(エンタープライズアプリやデータ)に接続するために使用されるマシン-to-マシン認証方式の大部分が、本番環境での使用には適さない認証フォームを使用しており、認可の制御がほとんど、またはまったくないことが判明しました。

例として、Microsoft Copilot AIエージェントがエンタープライズで最も機密性の高いデータ(セキュリティアプリケーション)にアクセスできるようにするために利用可能な認証方法を評価しました。

Copilotは、世界で最も普及している汎用AIアシスタントの1つです。Microsoftは、サードパーティのセキュリティアプリの機能をMicrosoftアプリケーションに公開するために、Microsoft Copilotの「プラグイン」を作成する機能を提供しています(「Microsoft Security Copilot」というブランド名で)。各Microsoft Security Copilotプラグインは、YAMLまたはJSONファイル(プラグインマニフェスト)で構成されており、外部サービスで使用できるCopilotエージェントのツールを記述しています。

これらのサービスの使用:

  • Microsoft CopilotがホストApplication (アプリケーション)として機能
  • Splunk、SentinelOne、Forescout、Cyberarkなどのセキュリティアプリのツールとデータは、保護されたリソースです。

(両方のサービスの)相互の顧客は、まずCopilotが自分の代わりに保護されたリソースにアクセスすることを承認する必要があります。これには、顧客がCopilotに認証情報(パスワード、APIキー、またはOAuthフローのクライアント IDとClient Secret)を提供する必要があります。これらはMicrosoftのサーバーに保存されます。利用可能なスキームを以下の表に示します。

Security Copilotは、プラグインを認証するためのいくつかのスキームをサポートしています。

Microsoft Security Copilot の認証オプション。ソース:Microsoft 図2:Microsoft Security Copilotの認証オプション。ソース:Microsoft

ユーザーが Copilot に保護されたリソースを使用するように指示すると、Copilot Al はリクエストを分析し、関連する「スキル」(プラグインマニフェストで定義されている)をアドバタイズするプラグインを特定します。Copilot は、保存された認証情報を使用してサードパーティApplication (アプリケーション)への認証された API 呼び出しを行い、データを取得またはアクションを実行し、結果を Copilot に返します。これらの保護されたリソース(セキュリティApplication (アプリケーション))を Microsoft Copilot に接続するために、どのような認証方法が使用されたかを理解しようとしました。 5

GitHubで公開されているサードパーティ製プラグインのマニフェストを分析した結果、次のことがわかりました。

  • 20%がBasic Authenticationをサポート
  • 75%はApiKeyメソッドをサポートしています
  • 5%がOAuth2フローをサポート

Copilot AIプラグインの使用に伴うリスクは、主に、(a)この認証方法の選択と(b)エージェントに提供されるアクセスコープにかかっています。

基本認証

基本認証を使用すると、管理者はサードパーティApplication (アプリケーション)でサービスアカウントを作成し、ユーザー名とパスワードを Microsoft サーバーにアップロードする必要があります。Copilot は、(ユーザーのプロンプトに基づいて Copilot がそのツールを選択するたびに)セキュリティアプリへのすべてのリクエストのヘッダーにユーザー名とパスワードを送信します。

IBM X-Force Exchange プラグイン settings
splunk basic auth {"en-US":"Figure 3 and 4: Screenshots from Microsoft Security Plugin Help Documentation","ja-JP":"図3と4:Microsoft Security Pluginヘルプドキュメントのスクリーンショット"}

定義上、Alエージェントがhttp:basicスキーム(基本認証)を使用してリソースにアクセスできるように構成されたユーザーまたはサービスアカウントは、多要素認証をサポートできません。

このスキームを使用している顧客は、結果として、機密データへの広範なアクセスを許可されていることが多いユーザーまたはサービスアカウントを、クレデンシャル・スタッフィングおよびパスワードスプレー攻撃にさらす必要があります。

APIKey

Microsoft Security Copilotプラグインの4分の3は、APIKeyメソッドを使用して承認できます。

構成中、管理者は保護されたリソースに有効期間の長いAPIトークンを作成します。これは通常、ユーザーまたはサービスアカウントのコンテキストで作成され、APIトークンを手動でMicrosoftサーバーにアップロードします。Copilotは、保護されたリソースに対して行うすべてのHTTPリクエストのヘッダーでAPIトークンを送信します(つまり、Copilotがユーザーのプロンプトに基づいてそのセキュリティツールを選択するたびに)。

静的APIキーは、基本認証よりもいくつかの利点があります。

  • APIキーは、マシン-to-マシンのフローに適しています。多くの場合、一意のAPIトークンごとに、非アクティブ後または設定された期間後に期限切れになるように構成できます。キーを取り消しても、キーを作成したユーザーまたはサービスアカウントには影響しません。
  • APIトークンの作成に使用されるサービスアカウントへのアクセスは、多要素認証(MFA)を使用して保護できるようになりました。
  • 管理者は、基本認証に使用されるサービスアカウントの権限と比較して、APIトークンを使用して読み取りまたは変更できる「範囲」を制限する可能性が高くなります。

残存リスクは、これらのAPIトークンが通常、長期にわたって有効であることです。APIキーは、ソース管理システムに日常的にチェックインされます。APIキーは、クエリパラメータとして設定された場合、ログに日常的に保存されます。APIキーは、開発者のワークステーション上のテキストファイルに保存され、デバイスに感染する次の一般的な情報窃盗犯によって収集されるのを待っています。

このCopilotプラグインで参照されているトークンへのアクセスは、組織内のすべてのデバイスに関するデータへのアクセスを提供します。 図5:このCopilotプラグインで参照されているトークンへのアクセスは、組織内のすべてのデバイスに関するデータへのアクセスを提供します。

静的なAPIトークンは攻撃者にとって非常に価値があり、多くの攻撃者がシステムを侵害した後に最初に探すものです。いったん傍受されると、これらのトークンは通常、長期間有効であるため、オンラインマーケットでの再販に最適です。

静的 API トークンは、少なくとも OAuth フローで作成された一時トークンと比較して、可用性のリスクも伴います。静的トークンは、Application (アプリケーション)ではなく、ユーザーのコンテキストで作成される傾向があるためです。

多くの場合、トークンを作成したユーザーまたはサービスアカウントが削除またはプロビジョニング解除されると、トークンも一緒に削除され、M2M統合が中断されます。

OAuth 2

Microsoft Security Copilotプラグインの残りの少数は、エンタープライズレベルのOAuth2フローを使用しているようです。

これらのスキームでは、クライアントIDとクライアントシークレット(Microsoftと共有)が認可サーバーと交換され、有効期間の短いアクセストークンを取得します。このアクセストークンは、リソースサーバーによって個別に検証されます。

これらのフローがOktaで作成された場合、結果として得られるアクセストークンは、IP制限(構成されたIP範囲からのみ有効)およびクライアント制限(リクエストしたクライアントからのみ有効)できます。スコープはサービスApplication (アプリケーション)レベルで設定され、ユーザーレベルでは設定されません。つまり、管理アカウントまたはサービスアカウントがプロビジョニング解除されたときに、管理者が誤ってマシン-to-マシン統合を無効にすることはありません。

ごく少数のCopilotエージェントがエンタープライズレベルの認証向けに設計されていることは残念ですが、多くの点で、これらの選択はセキュリティアプリが利用できるようにした既存の認証方法を反映しています。単一の独自のAIツールとの統合というコンテキストでは、これらのセキュリティベンダーは利用可能な認証方法の更新に投資する準備ができていなかったことは明らかです。

しかし、すべてのAlアプリケーションに対してプラグインマニフェストを作成する代わりに、開発者がすべてのフレーバーのAlアプリケーションでサポートされている業界標準に基づいて単一のサーバーを構築できるとしたらどうでしょうか?

モデルコンテキストプロトコルを入力してください。

モデルコンテキストプロトコルへの脅威のモデリング

エンタープライズアプリのdeveloperにとって、Al モデルのすべての種類に対して新しいカスタムコネクター (Microsoft Copilot プラグインなど) を作成する必要がある場合、経済的とは言えません。

サービスプロバイダーは、どのデータとツールをどのAIモデルと共有する意思があるかを最初から宣言し、これらのリソースが公開される条件を定義し、顧客がアクセスを承認する方法を定義し、これらのリソースにアクセスできるAIアプリケーションを許可リストに登録することを希望するでしょう。

このため、エージェントAlの勢いは現在、Model Context Protocol(MCP)を中心に構築されています。MCPは、AIアプリケーション(ホスト)を、クラウドプラットフォーム、SaaSアプリケーション、コードリポジトリ、データベース、さらには決済サービスといった多様なエンタープライズサービスに接続するための標準化されたインターフェースです。MCPのクライアント/サーバーアーキテクチャにより、AI Application (アプリケーション)を、コンテキストを提供するデータソースおよびツールに「プラグアンドプレイ」できます。

エンタープライズでは、MCPは次のことを約束します。

  • 利用可能なエンタープライズ所有のデータソースとツールを特定する、
  • エージェント型AIアプリケーションが、データの相互汚染なしに、複数のApplication (アプリケーション)からデータソースとツールにアクセスできるようにします。
  • これらのデータソースやツールにアクセスするさまざまなAIアプリケーションの実験コストを削減します。
モデルコンテキストプロトコルの視覚的説明。出典: modelcontextprotocol.io 図6:モデルコンテキストプロトコルの視覚的な説明。出典: modelcontextprotocol.io

MCPサーバーは、ローカルまたはリモートで展開できます。特定のユースケースに対するこの展開モデルの選択は、結果として得られる脅威モデルに大きな影響を与えます。

{"en-US":"The scope of our research was constrained to understanding how Al applications (hosts), MCP clients and MCP servers handle credentials.","ja-JP":"私たちの調査範囲は、AIアプリケーション(ホスト)、MCPクライアント、およびMCPサーバーが資格情報をどのように処理するかを理解することに限定されました。"}{"en-US":"The core components we assessed were:","ja-JP":"評価した主なコンポーネントは次のとおりです:"}

  • MCPホスト:Cursor、VS Code、Claudeなどの統合開発環境(IDE)を含むすべてのアプリケーション。MCPサーバーによってアドバタイズされるツールへのアクセスが必要です。
  • MCPクライアント: MCPホストがペアのMCPサーバーとの通信に使用する複数のクライアント。
  • MCP サーバー:MCP サーバーは、外部サービスで利用可能なツールとリソースをアドバタイズし、これらのサービスへの API 呼び出しを行います。

ローカルMCPサーバー

MCPモデルは、ソフトウェア開発のユースケースに特に魅力的です。

CursorやVS CodeのようなAI対応IDEを使用するソフトウェアエンジニアは、ローカルでコードを構築しながら、リモートAIモデルの支援を受けて、開発者がコードを書く際に提案を受けることができます。

AnthropicのClaude AIエージェントは「Claude Desktop」としてローカルにデプロイ可能になりました。Claude DesktopはローカルにデプロイされたMacOSおよびWindowsクライアントであり、ブラウザ経由でAnthropicのAIモデルにアクセスする代替手段です。ローカルMCPサーバーの利点の1つは、クライアントがリモートAIモデルとローカルファイル(ドキュメント、画像など)の両方と対話できることです。

これらのデスクトップアプリケーションは、多くの場合、LLM(通常はAPIキーが必要)とリモートデータソース(パーソナルアクセストークンが必要なコードリポジトリなど)の両方に対して認証を行う必要があります。

ユーザーがClaudeやCursorなどのホストApplication (アプリケーション)を起動すると、MCPクライアントはMCPサーバーを生成し、ローカル構成ファイルから操作に必要なすべての認証情報(APIキー、データベースの認証情報、パスワード、OAuthクライアントシークレットなど)をサーバーに渡します。これには、MCPサーバーがリモートサービスへのアクセスに必要な認証情報も含まれます。

たとえば、MCPサーバーがGithubリソースへのアクセス用に設計されている場合、ホストはローカル構成ファイルで利用可能なGithub Personal アクセストークン(PAT)を必要とします。Github PATが提供されていない場合、サーバーはエラーになります。

GitHubリソースへのアクセスに使用されるMCPサーバーは、構成ファイルでPATが提供されていない場合、エラーが発生します。 図7:GitHubリソースへのアクセスに使用されるMCPサーバーは、構成ファイルでPATが提供されていない場合、エラーが発生します。

Alを使用する最も一般的な開発Application (アプリケーション)3つの構成ファイルの場所を以下に示します。

アプリローカル構成ファイルデフォルトの場所
Claude Desktopclaude_desktop_config.jsonMacOSのデフォルトの場所:〜/Library/Application (アプリケーション) サポート/Claude/ Windowsのデフォルトの場所:〜/AppData/Roaming/Claude
カーソルmcp.jsonグローバルに使用した場合のデフォルトの場所(すべてのOS):~/.cursor/mcp.json MCPサーバーが特定のプロジェクトでのみ利用可能な場合、構成ファイルはプロジェクトディレクトリに配置されます。
VS Codesettings.jsonMacOSのデフォルトの場所:~/Library/Application (アプリケーション) サポート/Code/ユーザー/ Windowsのデフォルトの場所:~/AppData/Roaming/Code/ユーザー

 

{"en-US":"Research by Keith Hoodlet at <a href=\" \">Trail of Bits noted the risks of storing static API keys in plaintext in these files, and cited examples of where these files were world-readable (i.e.","ja-JP":"Keith Hoodlet氏による<a href=\" \">Trail of Bits の調査では、これらのファイルに静的なAPIキーをプレーンテキストで保存するリスクが指摘され、これらのファイルがワールドリーダブル(つまり、"}{"en-US":"able to be accessed by any user of the system).","ja-JP":"システムのすべてのユーザーがアクセスできる)である例が挙げられました。"}

この調査を拡張して、Claude Desktop、Cursor、および VS Code のデフォルト設定ファイルを評価したところ、同じ許可が観察されました。

Claude、Cursor、およびvs code構成ファイルのデフォルトの許可。 図8:Claude、Cursor、vs code構成ファイルのデフォルトの許可。

同じ許可が、多数の公式MCPサーバーの実装に含まれる構成ファイルにも適用されるようで、これらは「本番環境対応」と説明されており、問題のサービスプロバイダーによって承認されていないサードパーティによって開発されたほぼすべてのコミュニティ統合にも適用されます。

非公式のokta mcp env
env config file unofficial 図9および10:非公式の「コミュニティ統合」では、Oktaのお客様にSSWSトークンをローカル構成ファイルにアップロードするように求めています。

脅威モデリングでは、これまで共有されたMCPサーバーの大部分が承認されていないことを予測する必要があります。これにより、開発者が不正なMCPサーバーを使用することに関するリスクが高まります。

GitHubにアップロードされたMCPサーバーの予備的なVirusTotal分析[2]により、それらの8%が疑わしいことが判明しました。開示されていない数には、プロンプト内のシークレット(キー、パスワードなど)を識別し、それらを外部エンドポイントに投稿しようとするコードが含まれていました。

APIキーの安全でないストレージは、以下に示すように、さまざまなリスクをもたらします。

APIキーの安全でないストレージに関連するリスクソフトウェアリポジトリにアップロードされたキー

ソフトウェアリポジトリにアップロードされたキー

ローカル MCP サーバー実装のほとんどのドキュメントでは、開発者またはその他のユーザーに対し、本番リソースのプレーンテキスト認証情報を設定ファイルに保存するリスクについて警告していません。開発者は認証情報を安全にボールト化し、設定ファイルが安全な場所に保管されている認証情報のみを参照することを前提としています。

MCP構成が、構成ファイルにプレーンテキストで保存されていない限り、実行時に認証情報を取得できないシナリオがいくつか観察されました。

 

MCPの秘密を探る 出典:「MCPの秘密を探る」、GitGuardian、2025年4月

キーがコンテナメタデータで公開されています

{"en-US":"Running MCP servers in containers shifts rather than mitigates the issue.","ja-JP":"コンテナ内でMCPサーバーを実行すると、問題が軽減されるのではなく、場所が移動するだけです。"}{"en-US":"The secret must be passed to the container in a format that the MCP server supports.","ja-JP":"シークレットは、MCPサーバーがサポートする形式でコンテナに渡される必要があります。"}

コンテナ構成を確認すると、クリアテキストのシークレットへの直接的な参照が得られます。ホスト上のファイルのフォームであるか、docker inspect(dockerリソースの検査を可能にするコマンドラインツール)を実行することで公開できるコンテナ内の関連する環境変数を識別できるかです。

コンテナメタデータで公開されたGitHub Personal アクセストークン。 図11:コンテナのメタデータで公開されているGitHub Personal Access Token。

{"en-US":"Keys accessed by malware","ja-JP":"マルウェアによってアクセスされたキー"}

コモディティな情報窃取マルウェアは、認証情報が保存されている特定のパスとファイルタイプを特定するように設計されています。

以下に例を示します。

  • {"en-US":"Windows infostealers, such as Vidar Stealer, will search for secrets stored at ~\\AppData\\Roaming","ja-JP":"Windowsのインフォスティーラー(Vidar Stealerなど)は、〜\\AppData\\Roamingに保存されているシークレットを検索します。"}
  • Atomic StealerなどのMacOS情報窃盗犯は、~/Library/Application (アプリケーション) サポートに保存されているシークレットを検索します

これらの場所に静的APIトークンを安全でない方法で保存すると、影響の大きいイベントが発生する可能性が非常に高くなります。この場所に保存されたセッショントークンは、攻撃者がリソースへのユーザーレベルのアクセスを取得できる短い時間枠を提供するのに対し、静的APIトークンは、組織全体のリソースへの永続的なアクセスを提供します。

外部システムにバックアップされたキー。

管理者が機密フォルダー(Windows の場合は~\AppData\Roaming、MacOS の場合は~/Library/Application (アプリケーション) サポートなど)を除外しない場合、キーがバックアップ ボリュームに公開されます。

複数のユーザー間で共有されるワークステーション

指定された構成ファイルが誰でも読み取り可能であることが判明したため、共有デバイス上の1人のユーザーによって保存されたキーは、同じデバイスにログインする他のユーザーもアクセスできます。

 

ローカルでの認証情報ストレージに対する安全な代替手段

このドキュメントの推奨事項のセクションでは、これらの認証情報のストレージリスクを最小限に抑えるための戦術的なソリューションについて概説します。

または、MCPを試験的に導入する組織は、「セキュア・バイ・デザイン」のアプローチを採用し、これらの脅威を念頭に置いて開発されたソリューションを使用できます。

たとえば、Auth0 MCPサーバーを使用します[4]。Autho MCPサーバーは、OAuth 2.0 Device Code Authorizationフローを使用して、ローカルのClaude Desktop、Cursor、またはWindsurfアプリケーションからAuthoリソースへのアクセスを承認する機能を管理者に提供します。

Autho MCP Serverを使用した認証フロー 図12:Autho MCPサーバーを使用した認証フロー

デフォルトでは、認証後、認証情報はMacOS Keychainに保存され、管理者がMCPサーバーからサインアウトすると、キーチェーンから削除されます。

さらに、デフォルトではスコープは選択されていません。管理ユーザーはスコープを選択するように求められます。

リモートMCPサーバー

リモートMCPサーバーはWebサービスとして動作します。MCP仕様が忠実に実装されている場合、MCPクライアントはサーバーとの間に長期間のHTTP接続を確立し、セッション管理はトークンベースの認証によって処理されます。

{"en-US":"The <a href=\" \">March 26, 2025 release of the Model Context Protocol specification stipulated that where authorization is required, OAuth 2.1 is the appropriate method:","ja-JP":"Model Context Protocol仕様の<a href=\" \">2025年3月26日 のリリースでは、認証が必要な場合、OAuth 2.1が適切な方法であると規定されています。:"}

MCP認証の実装では、機密クライアントとパブリッククライアントの両方に対して適切なセキュリティ対策を講じたOAuth 2.1を実装する必要があります。

Atlassianは、お客様にリモートMCPサーバーを提供する最初のエンタープライズソフトウェアベンダーの1つでした。これは、数か月前に先行していたコミュニティサーバーに代わる、シンプルでOAuth対応の代替手段を提供します。

公式のリモートMCPサーバーと、ローカルで開発された「コミュニティ」ローカルサーバーとの比較は有益です。

コミュニティサーバーがローカルの.envで利用可能な認証方法を検出したとき(設定)ファイルでは、ベーシック認証用に設定されたパスワードは、設定されたPersonal Access Tokenよりも優先され、Personal Access TokenはOAuth認証情報よりも優先されます。

Atlassian コミュニティ Server の手順 図13:Atlassian コミュニティ Serverの手順

このプラグインの作成者は、セキュリティよりもdeveloperの利便性を優先して最適化したことを明言しています。

Atlassian コミュニティ Server の手順 {"en-US":"Figure 14: Atlassian Community Server instructions","ja-JP":"図14:Atlassian Community Serverの手順"}

対照的に、Atlassianの公式リモートMCPサーバーには、CursorのようなローカルIDEから接続するユーザーを含むすべてのユーザーに、OAuthベースのログインと同意を提供するために、localhost サポートが含まれています。

これにより、developerがローカル構成ファイルにシークレットをコピー&ペーストする必要が効果的になくなります。構成ファイルはリモートサービスを参照するだけで、ユーザーは認証に成功するとOAuthの同意を求められます。

また、特定のセキュリティ成果よりも認証方法の選択に最適化されたMicrosoft Copilotとは異なり、OAuthはAtlassianのリモートMCPサーバーで利用可能な唯一の認証方法です。Atlassianは、どのホスト(Alアプリケーション)がこのリモートMCPサーバーに接続できるかを許可リストに登録しています。

Atlassian コミュニティ Server の手順 図15:出典:Atlassian

エージェントAIの保護

唯一の問題は、どのOAuthフローを使用するかということです!

OAuthに基づくリモートMCPサーバーは、独自のプラグインよりも安全で標準化されたアプローチを提供しますが、今後の道のりは決して安定していません。20 残されたセキュリティ上の課題には、次のようなものがあります。

  • インタラクティブ(人間)ユーザーを常にループに保ちながら、保護されたリソースにアクセスするためにAlエージェントをどのように承認できますか?
  • サービスプロバイダーレベルで、個々のリソースに対する承認ルールを作成する管理負担をどのように軽減できますか?
  • 承認付与の一元化されたポリシーと監査をどのように実現できますか?

私たちが評価したリモートMCPサーバーでは、Alエージェントは、承認したユーザーと同じレベルのサービスへのアクセス権を承認されていました。彼らは、ユーザーが許可されていることの最大限の範囲で、ユーザーの「代理として」行動しています。

これは、Alエージェントを保護する義務のあるデータに接続するリスクを懸念するCISOの基準を満たしていない可能性があります。エンタープライズ管理者は、MCPサーバーが提供するツールに関して、サービスプロバイダーに最終的な権限を与えることに満足しないでしょう。

Atlassianの例では、集中管理者は、ユーザーがAlエージェントにConfluence Wikiページを読み書きする権限を与えるポリシーを作成できますが、Jiraチケットを変更する機能を拒否することはできません。管理者は、Alエージェントにアクセスさせたくない特定のプロジェクトを選択できません。ユーザーがアクセスできる場合、エージェントもアクセスできます。

現在および元Oktaのアーキテクトが作成したIETFドラフトOAuth アイデンティティ アサーション Grantは、この問題の解決を目指しています。このグラントは、既存の2つの標準(OAuth 2.0 Token ExchangeおよびJWT Profile for OAuth 2.0 Authorization Grants)を組み合わせたもので、エンタープライズ制御と可視性を提供します。

このアプローチを使用すると、管理者は、一元化されたポリシーを構成して、SSOで保護されたユーザーが、信頼関係がすでに確立されている複数のアプリケーションでAIエージェントにデータへのアクセスを許可できるようにすることができます。

CISO は、保護されたリソースでクライアント (この場合は、Al エージェント) がアクセスできる範囲を再び制限できるようになります。Okta は、新たに発表されたCross アプリ Accessの下で、これらの機能を顧客に提供するために、Independent Software Vendors (ISV) と協力しています。

終わりに

{"en-US":"As an industry we now have some important decisions to make in order to safely enjoy the benefits of connecting protected resources to agentic Al.","ja-JP":"業界として、保護されたリソースをエージェントAIに安全に接続するメリットを享受するために、重要な決定を下す必要があります。"}

パブリックインターネットを介してシステムを接続することに適していない認証方法を再利用する誘惑に抵抗しなければなりません。自律的に行動できるシステムは言うまでもありません。AIエージェントがより広範な許可を求められ、許可されるにつれて、単一の侵害の「爆発範囲」が大幅に拡大されます。1回の侵害で、以前よりもはるかに多くのデータと重要なシステムが公開される可能性があります。

代わりに、Al時代に向けて構築されたフローを採用する必要があります。これは、スコープが狭く、ユーザーが委任したアクセスフローであり、一時的で監査可能なトークンを使用し、CISOに長らく待ち望まれていた制御と可視性を提供します。

付録:保護的コントロール

サービスプロバイダーへの推奨事項

  • Model Context Protocol(MCP)サーバーの最小限の実用的な認証モデルとしてOAuth 2.1を採用します。
  • MCPの最新情報を購読して、最新の動向を把握してください。

developerへの推奨事項

  • 静的なAPIトークンの使用は、開発およびテスト環境のみに制限し(本番データは不可)、必要な最小限のスコープを適用します。
  • ローカルで開発する場合は、OS レベルのシークレット ボールト (MacOS キーチェーン、Windows Credential マネージャー) を使用して、実行時にシークレットを動的にフェッチします。
  • Modify the permissions of .envおよびAlアプリケーションのローカルログファイルだけでなく、他の構成ファイルの権限も変更して、自分のユーザーアカウントのみがそれらを読み取りまたは変更できるようにします。
  • .gitignoreにすべての構成ファイルとログファイルをリストして、誤ってバージョン管理システムにコミットしないようにしてください。

セキュリティチームへの推奨事項

  • 開発アクティビティを、会社が発行した、セキュリティ強化されたワークステーションに制限します。
  • 企業リソースへのアクセスには、フィッシング耐性のある認証を要求します。
  • 本番環境の認証情報には、専用のシークレット管理ソリューションを使用してください。
  • コンテナリソースへのアクセス権を持つGroup (グループ)のメンバーシップを管理および制御し、Dockerデーモン(プロセス)が露出を回避するように構成されていることを確認します。
  • OAuth 2.1 フローを要求して、クライアントが企業リソースにアクセスすることを承認します。
  • 静的APIトークンの使用リスクが許容されるユースケースの場合:
    • 有効期間の長いトークンを使用するリスクについて開発者を教育します。
    • 対応する MCP サーバーの既知の IP 範囲へのトークンを使用して、リクエストを許可リストに登録します。
    • APIトークンにリンクされたサービスアカウントを使用するアプリケーションへのインタラクティブアクセスを拒否するか、少なくともそれへのアクセスに保証レベルが高い多要素認証(MFA)課題を要求します。
    • サーバー、ファイル、コードリポジトリ、ログ、メッセージングおよびコラボレーションアプリで、プレーンテキストで保存されているトークンをプロアクティブに探索します。
    • トークンの悪用を監視します。

アイデンティティ施策を推進