業務用 MCP とリソース付与権限の話

201 Views

September 23, 26

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

生成AIなんでも展示会 Vol.6 LT 業務用 MCP とリソース付与権限の話 Agent時代の権限の考え方 takanakahiko / 株式会社U-NEXT R&D本部

2.

自己紹介 株式会社 U-NEXT の takanakahiko です 2025年入社 / 2社目 バックエンドエンジニア / AI Working Group (Core Member) 2

3.

導入 会社AI活用あるある 「xxをAIに繋げるようにしたい」 「yyをAIが読めるようにしたい」 「zzを(ry」 MCPや!!!! MCP とは: What is the Model Context Protocol (MCP)? - Model Context Protocol https://modelcontextprotocol.io/docs/getting-started/intro 3

4.

導入 OAuth で繋ぐ MCP AさんがMCPを繋いでAgent経由でスプレッドシートを操作できるようにする Claude Code とかに依頼してスプレッドシートの操作が可能に エージェント tools/call Aさん MCP サーバー google-sheets Sheets API スプレッドシート OAuth(Aさんとして認可) 4

5.

導入 これから話すのは メンバー:リソース が n:n の話 メンバー 役員 リソース Aさん 経営会議シート Bさん 事業部 共同作業シート Cさん 分析⽤シート Dさん 議事録フォルダ 5

6.

問題 OAuth で繋ぐ MCP と権限 例えば Aさんは役員レベルの偉いPeopleなので、大きめの権限を持っています 役員管轄の事業部の共同作業シートのオーナーだとする(やろうと思えば削除もできる) そういった権限もAgentに預けることになる Aさん(⼈間) エージェント シートのオーナー 閲覧 編集 共有 削除 そのまま渡す 同じ権限 閲覧 編集 共有 削除 6

7.

問題 想定される事故 「古いシートを 整理しておいて」 エージェント 「不要なシートを消そう」 tools/call delete_spreadsheet(...) 共同作業シート 7

8.

問題 どう制御するか 人間だとこういうモーダルが出る → じゃあそういうプロンプト(「削除前に確認して」など)を入れればいいじゃん ☝️ これは間違い。ハーネス(AIに対するガードレール)は決定論的に行うべき。※1 ※1 Writing a good CLAUDE.md | HumanLayer Blog https://www.humanlayer.dev/blog/writing-a-good-claude-md 8

9.

問題 本質情報 人間向けの権限は、警告モーダルなどのUIとセットで運用されている Agentとのチャットを通したUIではそれがすっ飛ばされている → 根本的に、権限の前提が違うので、AIにはAI向けの権限が必要! 9

10.

対策 とりあえずできる対策 MCPのTool毎にDenyする でも → ファイルの重要度に応じては、エージェントにファイルを削除させても良いユースケースもある。 → そもそもリスクをどれぐらい取るかをユースケース毎に人間が判断したい。 10

11.
[beta]
対策

U-NEXT でとっている方法
MCPはサービスアカウント経由でオペレーションを行うようにする
こんな感じのマッピングを定義しておいて、ユーザーの所属する GoogleGroups に応じて利用するSA
を決定する
[

]

{

"group": "ringo-honbu",
"sa": "[email protected]"
},
{
"group": "banana-honbu",
"sa": "[email protected]"
}

11

12.

対策 全体図 MCP サーバー エージェント tools/call Aさん 所属グループ ringo-honbu 対応表 サービスアカウント(SA) ringo-honbu-agent@… SA で実⾏ スプレッドシート SA に許可した 範囲だけ Google ログイン(Aさんの所属グループを確認) 12

13.

対策 運用例 自由に作成や削除をしていいファイルは特定のフォルダに入れて、フォルダ全体に編集権限を付与し てしまう 編集は人間が、分析はAgentがやりたいシートには、SAにそのシートの閲覧権限のみ付与する Agent 作業⽤フォルダ ⼈間が編集するシート 消えても困らないものだけ置く Agent には分析だけさせたい SA 作成・編集・削除 SA 閲覧のみ ⼈間 作成・編集・削除 ⼈間 編集 13

14.

対策 チーム共通Agentにも相性が良い 例えばHermes Agentをチームで運用するとする。 スプレッドシートの MCP をAさんの権限で動かしてしまうと、他のチームメンバーはAさんの権限で部長 レベルの機密情報が読めてしまう。 SAにすると、そのAgentに与える権限を人間側の権限とは切り離して考えられる。 Aさんの権限で動かす チームの SA で動かす 共通 Agent チーム全員 + MCP Aさんとして 部⻑の機密シート 全員が読める 共通 Agent チーム全員 + MCP SA として SA に許可した シートだけ 14

15.

対策 別パターンの妄想 個人ごとそれぞれSAを持って、こういう形でも良い。 app.example.com/settings/permissions メンバーと権限 アカウント + 招待 ⼈間として エージェント(MCP 経由) a [email protected] read & write read only b [email protected] read & write read & write とはいえ チームでエージェントのSAを1つにして運用する方が業務にフィットしたので採用しなかった 15

16.

補足 今までの話は メンバー:リソース が n:n の場合の話 例えばメールのMCPはわざわざSAを経由する必要がない。 メールを読ませたいけど自動で送信までやって欲しくないときはtoolをdenyすればいい。 16

17.

補足 MCP 側で制御できる場合 あるいは、MCP側のサービスにそういった制御用の設定がユーザーに露出していればいい 17

18.

まとめ まとめ メンバー:リソース が n:n の場合はユーザーの権限をそのまま使わない方がいい サービスアカウント的な、Agent専用のアカウントの概念を入れると良い 「AIを入れるならこのリスクは受け入れなければいけない」 をMCP側で作らないようにしよう リスクの取り方はメンバーが制御できるようにする 18

19.

補足 トレーサビリティはどうするか MCP サーバーのログには「どのアカウントが、どのクライアントで、どの SA で、どのツールを呼ん だか」を記録する 呼び出しの内容そのもの(書いた値や読んだデータ)は記録しない 内容が必要になったら、スプレッドシートの版管理(変更履歴)と時刻・SA で突合する MCP サーバーのログ シートの変更履歴 誰が・どのクライアントで・どの SA で・どのツールを呼んだか 10:12:05 [email protected] claude-code ringo-honbu-agent@… 10:13:41 [email protected] update_values claude.ai ringo-honbu-agent@… read_range 書き込んだ値や読んだ内容は記録しない (機密がログに複製されるのを避ける) 何がどう変わったかは Google 側にある 突合 時刻と SA 10:12 ringo-honbu-agent@… B2:D8 を更新(前の版に戻せる) 09:48 [email protected] シート「集計」を追加 09:30 [email protected] A1 のタイトルを変更 19