👤

Copilot Studio AI エージェント実行時のリアルタイム保護

に公開

はじめに

Copilot Studio AI エージェントにおいて、リアルタイムで脅威検出が可能となる新機能(プレビュー)が提供されました。
この機能により、エージェントツールの呼び出しをリアルタイムで監視し、疑わしい動作やクロスプロンプトインジェクション攻撃を検出して、悪意のあるアクションを自動的にブロックできます。

詳細は以下の公式ブログやドキュメントをご参照ください。
https://techcommunity.microsoft.com/blog/microsoftthreatprotectionblog/protect-copilot-studio-ai-agents-in-real-time-with-microsoft-defender/4446560

https://learn.microsoft.com/en-us/defender-cloud-apps/real-time-agent-protection-during-runtime

Copilot Studio に直接組み込まれているというよりも、外部セキュリティプロバイダーとの連携機能を活用し、Microsoft Defender などと連携する仕組みとなっています。
https://learn.microsoft.com/ja-jp/microsoft-copilot-studio/external-security-provider

このため、Entra のアプリケーション ID の登録や外部監視構成用の URL 登録など、事前の設定が必要となります。

Copilot への不正なプロンプト自体は Copilot 側でブロックされますが、エージェントが外部情報を参照して動作する際に不正な挙動が検出された場合、Defender 連携によってブロックされるイメージのようです。

設定方法

設定は以下の手順で進めます。

  1. Defender ポータルで Copilot Studio AI エージェントを有効化
  2. Entra アプリケーション ID の登録と設定
  3. Defender ポータルでアプリケーション ID を登録
  4. Power Platform 管理センターで脅威検出機能を設定

1. Defender ポータルで Copilot Studio AI エージェントを有効化

Defender ポータルの「設定」>「クラウド アプリ」>「Copilot Studio AI エージェント」から有効化します。

2. Entra アプリケーション ID の登録と設定

詳細な手順は公式ドキュメントをご参照ください。
https://learn.microsoft.com/ja-jp/microsoft-copilot-studio/external-security-provider#step-1-configure-microsoft-entra-application

PowerShell スクリプトも用意されていますが、設定内容を把握するため Entra 管理センターから手動で設定します。

「アプリの登録」>「+ 新規登録」をクリックします。


任意の名前を入力し、「この組織のディレクトリ内のアカウントのみ(シングルテナント)」を選択して登録します。


アプリの画面で「証明書とシークレット」>「フェデレーション資格情報」>「資格情報の追加」を選択します。


以下の内容を入力します。

  • フェデレーション資格情報のシナリオ: その他発行者
  • アカウントの接続 - 発行者: https://login.microsoftonline.com/{tenantId}/v2.0
  • アカウントの接続 - 型: 明示的なサブジェクト識別子
  • アカウントの接続 - 値: /eid1/c/pub/t/{encoded(tenantId)}/a/m1WPnYRZpEaQKq1Cceg--g/{encoded(endpoint)}

{encoded(tenantId)} はエンコードしたテナント ID、{encoded(endpoint)} はエンコードしたエンドポイントです。

エンドポイントは Defender ポータルから確認できます。


エンコード値の取得には以下の PowerShell コマンドを利用します。
$guid$endpoint の値はご自身の環境に合わせて変更してください。

# Encoding tenant ID
$guid = [Guid]::Parse("11111111-2222-3333-4444-555555555555")
$base64Url = [Convert]::ToBase64String($guid.ToByteArray()).Replace('+','-').Replace('/','_').TrimEnd('=')
Write-Output $base64Url

# Encoding the endpoint
$endpoint = "https://provider.example.com/threat_detection/copilot"
$base64Url = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($endpoint)).Replace('+','-').Replace('/','_').TrimEnd('=')
Write-Output $base64Url

設定例:

3. Defender ポータルでアプリケーション ID を登録

Defender ポータルの「設定」>「クラウド アプリ」>「Copilot Studio AI エージェント」で有効化し、アプリケーション ID を登録して「保存」します。

4. Power Platform 管理センターで脅威検出機能を設定

Power Platform 管理センターの「セキュリティ」>「脅威の検出」>「Microsoft Defender ...」を開きます。


「Enable」に設定します。


「追加の脅威検出」を開き、環境を選択して「設定」をクリックします。

「脅威検出パートナーとデータを共有することを Copilot Studio に許可する」にチェックを入れ、アプリ ID と Defender ポータルで取得したエンドポイント URL を入力します。


Defender ポータル側で「接続済み」と表示されます。


Copilot Studio のエージェント画面に保護マークが表示されます。

検証

今回は、以下のような指示を受けたエージェントを準備しました。


テスト用のクレジットカード番号を含むファイルを検索したところ、脅威検出機能によってブロックされることを確認できました。


重要度「情報」としてインシデントが出力されます。


アラートの詳細については、Defender for Cloud Apps のログがベースとなるため、プロンプト内容までは確認できません。より詳細な確認には Purview の DSPM for AI の活用が必要となりそうです。

まとめ

Copilot Studio AI エージェントの動作をリアルタイムで保護できるようになった点は非常に有用です。一方で、設定手順が複雑で分かりづらい部分があるため、今後の一般公開時には改善が期待されます。現時点では検出内容の除外など細かなカスタマイズはできません。
プレビュー段階のため、今後仕様が変更される可能性もありますので、最新情報をご確認ください。

Microsoft (有志)

Discussion