Blank white background with no objects or features visible.

「Gartner Hype Cycle for AI Governance 2026」の全編を無料で公開しています。レポートを入手する →

RBAC対ABAC:AIエージェントのアクセス制御モデルの選択

By アシシュ・ドゥベイ

Updated: November 3, 2026

Published: September 21, 2026

⚡ 要点(TL;DR)
  • RBACは名前付きのロールに権限を付与し、それに主体(サブジェクト)を割り当てます。ABACはリクエストの実行時に、主体、リソース、アクション、環境の属性に基づいてポリシーを評価します。
  • RBACとABACの本当の違いは表現力ではありません。解の明確さ(回答可能性):RBACではテーブルから誰がアクセス権限を持っているかを読み取ることができます。ABACではそれを確認するためにポリシーエンジンを実行する必要があります。
  • AIエージェントのアクセス制御は、ABACの教科書的な論理に見えます。どのツール、どのデータ、誰のためにアクションを実行するかによって権限が変化する非人間的な主体だからです。
  • 実際に運用されているのは、リソーススコープ指定のバインディングを持つRBACにいくつかの狭いコンテキスト制限(ゲート)を加えたものです。TrueFoundryが実装しているのはまさにこれであり、ポリシーエンジンではなく「主体 + リソース + ロール」の構成です。
  • ほとんどのチームにABACは不要です。必要なのは、テナント全体ではなく個別のリソースに紐付けられたロールと、損害が発生する可能性のある場所での少数の実行時チェックです。

RBACの実際の姿

ロールベースのアクセス制御(RBAC)は、人間と権限の間に名前付きのレイヤーを配置します。「シークレットグループの参照」権限をPriyaに直接付与するのではなく、「シークレットグループ閲覧者」というロールを定義してその権限を含め、Priyaをそのロールに割り当てます。

ロールベースのアクセス制御モデルは、3つの要素で構成されています。

要素 内容
権限(Permission) 特定の種類のものに対する単一の許可されたアクション(例: mcp-server:CreateMcpServer)
ロール(Role) 権限のセット(束)に付けられた名前(例: ワークスペース管理者)
割り当て(Assignment) 主体とロールの結合。ロールバインディングとも呼ばれる

その価値は「間接参照」にあります。セキュリティチームが「閲覧者はシークレット値を参照すべきではない」と決定した場合、1つのロールを編集するだけで、すべての閲覧者の権限が一度に変更されます。NISTは何十年も前にこのモデルを正式化しました。そのため、すべてのクラウドコンソールにロールページが存在します。

弱点もまた「間接参照」です。ロールは静的なセットです。権限を企業IPからのみ適用したい場合や、リクエスタ自身のリージョンのレコードにのみ適用したい場合、通常のRBACでは表現できません。チームはこれに対して、analyst-eu、analyst-eu-readonly、analyst-eu-readonly-prodといったロールを大量に作成して対応します。これがロールの爆発(role explosion)であり、人々がABACを検討する最大の理由です。

ABACの実際の姿

属性ベースのアクセス制御(ABAC)は、名前付きのセットを排除します。主体がどのロールを保持しているかを問い合わせる代わりに、リクエスト時に4つの属性カテゴリにわたってポリシー式を評価します。

属性カテゴリ 例
主体(Subject) 部署、セキュリティクリアランス、雇用形態、上司、エージェント所有者
リソース(Resource) 機密区分、所有チーム、データリージョン、機密性タグ
アクション(Action) 参照、書き込み、削除、呼び出し、承認
環境(Environment) 時間帯、送信元IP、デバイス状態、リクエストリスクスコア

ポリシーの例:subject.department == resource.owning_team かつ resource.classification != "restricted" かつ env.network == "corp" の場合に読み取りを許可する。NIST SP 800-162は標準的なドキュメントです。実践的には、ABACは認可サービスの後ろでXACML、Rego、Cedarなどのポリシー言語として提供されます。

ABACは確かに表現力に優れています。適切に記述された1つのルールで数百のロールを置き換えることができ、RBACではまったく記述できない関係性(例:「この患者を担当する医師」)を処理できます。

しかし、その表現力には代償があります。ポリシーはコードであり、レビュー、テスト、バージョン管理、ルール相互作用の解釈が必要です。そして監査人が最初に尋ねる質問——「誰がこのデータを読めるのか?」——に対する直接的な回答が得られなくなります。すべての主体を列挙し、それぞれに対してポリシーを評価しなければなりません。このため、一部のエンジンには逆引きクエリツールが用意されていますが、ほとんどの導入環境では使用されていません。

RBAC対ABACの比較一覧

決定の入力情報 主体に割り当てられたロール 主体、リソース、アクション、環境の属性
ポリシーの保持場所 ロールテーブル ポリシーファイルまたはエンジン
「誰がアクセス権を持つか?」への回答 バインディングを読み取る すべての主体に対してポリシーを評価する
コンテキスト認識 ネイティブでは不可 ネイティブで対応
きめ細かな権限設定 ロールの追加やスコープの限定による 条件の追加による
大規模化時の失敗モード ロールの爆発 誰も完全に理解できないポリシーの複雑化(スプロール)
導入コスト 数時間 数週間、さらに属性の信頼できる情報源(Single Source of Truth)が必要
最適なケース アクセスが職務に明確に連動している場合 アクセスが実行時のコンテキストに真に依存している場合

表には現れない注意点があります。ABACには前提条件として、信頼できる属性が必要です。resource.data_region に基づくポリシーの精度は、そのフィールドを入力するタグ付けルールと同じレベルにとどまります。ABACを試すほとんどの組織は、認可の問題に直面する前に、タグ付けされていないデータの問題に直面します。また、この2つのモデルは排他的ではありません。運用環境での一般的な構成は、骨組みとしてRBACを使用し、その上に少数の属性条件を重ねる形です。

多くのチームが陥る誤り

ロールの爆発をモデル変更の理由にすること。 ロールの爆発は通常スコープ設定のバグであり、モデルの欠陥ではありません。analyst-team-a、analyst-team-b、analyst-team-c が存在する場合、必要なのは属性ではなく、各チームのリソースに個別にバインドされた1つの analyst ロールです。RBACで発生する問題の多くは、本来単一のリソースにバインドすべきものを、テナント全体に許可を付与してしまうことから生じます。

監査できない表現力を採用すること。 ABACを使用すると、コンプライアンスチームが解読できないルールを書くことができます。そのトレードオフが有益な場合もありますが、意図せず導入すべきではありません。ポリシーエンジンを導入する前に、来四半期のアクセスレビュー質問票に誰がどのように答えるかを考えてください。

権限が付与の組み合わせであることを忘れること。 主体は直接アクセス権を保持することも、チームを介して継承することもあり、一方を削除しても他方は削除されません。ポリシーエンジンが上に重なっている場合、2つのシステムが独立して付与を行う可能性があるため、状況はさらに悪化します。

人間には権限を設定し、エージェントを無視すること。 構築されたエージェントがテナント全体のアクセス権を持つ共有サービストークンで実行されている場合、人間側のすべての管理設定は意味をなしません。

スコープ制限されたアクセスの実際の動作を確認してみませんか?
TrueFoundryを起動して、テナント全体ではなく単一のリソースにロールを付与してみてください。所要時間は約2分です。

AIエージェントがABACの適用例に見える理由

AIエージェントは、実効的な権限が固定されていない非人間の主体(サブジェクト)です。あるターンではパブリックリポジトリを読み取り、次のターンでは顧客レコードに触れるかもしれません。異なる時間帯に異なる人物の代わりに動作します。その入力は敵対的(アドバーサリアル)である可能性があり、悪意のあるIssue本文によって呼び出すべきでないツールへと誘導されることがあります。そして人間に反して、そのアクションが賢明かどうかを立ち止まって考えることはありません。

これを要件として書き出すと、まさにABACの仕様そのものです:実行ユーザーがターゲットへのアップストリームアクセス権限を持ち、ツールが破壊的ではなく、リクエストが信頼できないコンテンツから発生していない場合に、このツール呼び出しを許可する。 3つの属性、1つのルール。では、なぜ実際に運用されているシステムでほとんど採用されていないのでしょうか?

判定時に属性を確実に取得できないからです。「このリクエストが信頼できないコンテンツから発生したか」は単純なフィールドではなく、研究段階の課題です。「実行ユーザーがアップストリームアクセス権限を持っているか」は確認可能ですが、最も低コストで正確に確認する方法は、そのユーザーの権限モデルをポリシーエンジンに複製して更新し続けることではなく、そのユーザー自身のクレデンシャルを使ってアップストリームシステムを呼び出し、処理させることです。

また、監査可能性のコストはエージェントが動作する環境で最も重大になります。エージェントの権限はセキュリティレビューで最も厳しく問われる項目であり、「ポリシーの評価結果がこれらの条件化で許可になる」という回答は、「このエージェントがこれら3つのサーバーでMCP Server Userを保持している」というテーブル表示よりもはるかに不十分な回答となります。

つまり、エージェントには人間よりも狭いアクセス権限と、人間よりも検査しやすい(透明性の高い)アクセス権限が必要です。ABACは前者を提供しますが、後者を損ないます。そのため、厳格なリソーススコープ設定を持つRBACに、コンテキストが真に重要な少数のコンテキストゲートを追加した構成が導入パターンとなっています。

TrueFoundryでの動作モデル

TrueFoundryは、リソーススコープ指定のロールバインディングを備えたRBACを実装しています。ABACポリシーエンジンではないことを明確にしておく価値があります。このモデルは「誰が、どこで、何ができるか?」という1つの問いに答えます。

  • 主体(Subject)はアクセスを受けるアイデンティティです:ユーザー、チーム、バーチャルアカウント、またはエージェント。
  • リソース(Resource)はアクセスされる対象です:モデルプロバイダーアカウント、MCPサーバー、エージェント、クラスター、ワークスペース、リポジトリ、またはシークレットグループ。
  • ロール(Role)は許可されたアクションの名前付きセットです。

リソースに対して主体にロールを割り当てると、ロールバインディングが作成されます。アクセス権はリソースの設定とは独立して管理されるため、何も再デプロイすることなくアクセス権限を持つ人物を変更できます。

権限付与はリソース自体から行います。3点リーダー(...)メニューを開き、Access Controlを選択します。

Three-dot menu on the nm-gemini2 model provider account with the Access Control option selected
Access Controlオプションが選択されたnm-gemini2モデルプロバイダーアカウントの3点リーダーメニュー

次に、1つ以上の主体とロールを選択します。ドロワーには各ロールに含まれるアクションが一覧表示されるため、付与する前に付与内容を確認できます。

Grant Access drawer showing the subject selector with the Manager and User roles available for a provider account
プロバイダーアカウントで利用可能なManagerおよびUserロールを持つ主体セレクターを表示するGrant Accessドロワー

提供されるロールはリソースタイプによって異なります:モデルプロバイダーアカウントではManagerとUser、MCPサーバーではMCP Server Manager、MCP Server User、MCP Server Approver、エージェントではAgent ManagerとAgent Access。クラスター、ワークスペース、シークレットグループには、それぞれのadmin、member、viewerティアが用意されています。

1つではなく3つのスコープ

ロールは3つのスコープで動作します。これらを正確に区別して運用することが重要です。

スコープ 適用対象 例
リソース(Resource) 1つの特定のリソース 単一のサーバー上の MCP Server User
テナント(Tenant) テナント内のすべて Admin、Member、Read-Only Member、カスタムロール
チーム(Team) チームおよびそのチームが所有する Virtual Accounts Team Member、Team Manager

AdminおよびRead-Only Memberは編集できません。Memberは編集可能です。これはすべてのユーザーが保持するベースラインであり、デフォルトでは cluster:ReadCluster、environment:ListEnvironments、settings:ListSettings、user:ListUsers、repository:CreateRepository、secret-group:CreateSecretGroup、agent:CreateAgent のみが含まれます。個別のモデル、MCPサーバー、ワークスペースには適用されず、これらはリソースバインディングまたはチームメンバーシップから提供されます。

Default Roles list showing the Member role available to edit alongside the uneditable built-in roles
編集できない組み込みロールと並んで、編集可能なMemberロールが表示されているDefault Rolesリスト

チームロールは、本モデルの中で属性条件に最も近いものであり、その類似性は有用です。Team Memberは virtual-account:ReadVirtualAccount を含みますが、これはユーザーが実際に所属するチームが所有する Virtual Accounts にスコープ指定されています。権限自体は全員に対して同一ですが、アクセスできるオブジェクトのセットが人によって異なります。

Edit Role drawer for Team Member showing the team-scoped Virtual Account permissions
チームスコープのVirtual Account権限を示すTeam MemberのEdit Roleドロワー

これは所有権スコープ設定であり、ABACではありません。ポリシー式も属性評価もなく、チームと所有物の間の固定された関係にすぎません。これにより、人々が属性を必要とする一般的なユースケースをカバーしつつ、可読性を維持できます。

きめ細かな権限のためのカスタムロール

組み込みのテナントロールが広すぎる、または狭すぎる場合は、権限カタログから独自のロールを作成します。すべての権限は リソース:アクション の形式に従い、リソースタイプごとにグループ化されています。

Custom Roles page with the Create Role button highlighted
Create Roleボタンが強調表示されたCustom Rolesページ
Custom role form showing the available tenant permissions grouped by resource type
リソースタイプごとにグループ化された利用可能なテナント権限を示すカスタムロールフォーム

これを使用する際には、1つのルールに従います:カスタムロール権限は、選択したタイプのすべてのリソースに適用されます。 mcp-server:ReadMcpServer を持つカスタムロールは、選択された特定のものだけでなく、すべてのMCPサーバーに適用されます。単一のリソースに限定したい場合は、代わりにそのリソースのAccess Controlページを使用します。これを誤ると、単一のサーバー用であったロールが意図せずテナント全体の参照アクセス権限になってしまいます。

精密に指定されたコンテキストゲート

TrueFoundryは4つの場所でコンテキスト感度を追加します。これらはいずれも属性ポリシーではなく、それぞれ検査可能です。

メカニズム 条件付きになる対象
リソースごとのロールバインディング 権限がテナント全体ではなく指定されたリソースのみに適用される
送信呼び出しでのユーザーごとのOAuth 各ユーザーが自身のアップストリームアカウントを承認するため、リクエストごとにアップストリームシステム独自の権限が適用される
ツールレベルの有効化・無効化 無効化されたツールは tools/list から除外され、一切呼び出せなくなる
人間による承認ポリシー(Human approval policies) 機密性の高いツール呼び出しは、MCP Server Approver が決定するまで保持される

2つ目のメカニズムは、人々がABACに期待する処理の多くを果たします。エージェントがユーザーごとのOAuthを介して特定のユーザーのためにツールを呼び出すと、アップストリームサービスはそのユーザーの実際の権限を評価します。ポリシーエンジン内にGitHubのリポジトリACLをモデル化する必要はありません。それらを所有するシステムに委任しているため、そのコピーが古くなることはありません。MCPアクセス制御モデルは、この構造の上に構築されています。

制限事項:Virtual Accountトークンは、すべてのリクエストに同一のアクセス権を付与します。これらはサービス間呼び出しに適しており、ユーザーごとの権限が重要な場合には適していません。

2つのアプローチによる具体例

ドキュメントからの2つの実際のシナリオは、モデルが逆方向から機能することを示しています。

監査人に参照専用アクセス権を付与する。 Access > Users から Read-Only Member を割り当てます。これは組み込みのテナントロールであり、サポートされているリソースタイプ全体に参照専用アクセス権を提供し、編集することはできません。意図せず範囲を広げられるような監査ロールは監査ロールとして機能しないため、これがポイントになります。監査人のグループに対してはチームに割り当て、将来の参加者がそれを継承するようにします。監査人に特定のリソースのみを表示させたい場合は、テナントロールを完全にスキップし、各リソースで viewer または access ロールを付与します。

管理者権限を与えずにMCPサーバーの作成を許可する。 サーバーの作成には Member が持っていない権限が必要なため、管理者権限(Admin)を付与したくなります。代わりに、mcp-server:CreateMcpServer のみを厳密に含むカスタムロールを作成します。

Custom role form with the Create MCP Server permission selected
Create MCP Server権限が選択されたカスタムロールフォーム

次に、Access > Users または Access > Teams から割り当てます。

Assigning the custom MCP server creation role to a user
ユーザーへのカスタムMCPサーバー作成ロールの割り当て

この挙動が重要なポイントです。Create MCP Server は新しいサーバーを作成できるようにします。既存のサーバーへのアクセス権を付与するものではありません。サーバーを作成した後、所有者はそのサーバー自体の Access Control ページから自分自身に MCP Server Manager を付与します。

作成権限とアクセス権限は分離されており、互いに漏洩することはありません。ABACポリシーでも同じ内容を表現できますが、確実を期すためにルールを注意深く読み込む必要があります。ここでの設定は2つのテーブルの2行にすぎません。このパターンはスケールダウンも可能です:Admin権限なしで全員にゲートウェイコントロールの表示を許可するには、Member を編集して gateway-controls:ListGatewayControls を追加します。

Member role form with the List Gateway Controls permission selected
List Gateway Controls権限が選択されたMemberロールフォーム
最初のエージェントのスコープを設定する準備はできましたか?
カスタムロールを作成し、それを1つのMCPサーバーにバインドして、エージェントがアクセスできる範囲を正確に確認してみましょう。

知っておくべき注意点

権限付与は組み合わされ、一方を削除しても他方は削除されません。 主体は直接アクセス権を受けることも、チームメンバーシップを通じて受けることもできます。誰かがまだリソースを参照できる理由を調べる際は、直接のバインディングとチームから継承されたすべての権限の両方を確認してください。これは常に最初に調べるべきポイントです。

チームのデフォルトロールを編集すると、すべてのチームに対して変更が適用されます。 Team Member および Team Manager は Access > Default Roles の下で編集され、その編集はグローバルに適用されます。あるチームがトークンを取得できるように virtual-account:ManageVirtualAccount を追加すると、すべてのチームのメンバーにそれが付与されます。各人物は自分のチームに制限されたままですが、機能自体は全体に広がります。

テナントロールはチームテナントロールと組み合わされます。 ユーザーは直接割り当てられた1つのテナントロールを保持します。テナントロールを持つチームにも所属している場合、その実効権限は両方の和集合になります。そのため、ユーザーの実際の権限はユーザーレコード単体では確認できません。チームは手動で作成することも、SCIMを介してIdPからプロビジョニングすることも、チームYAMLで tfy apply を使用して適用することもでき、IdPのクレーム値をチームに直接マッピングできます。

Team form showing the identity provider FQN and claim value mapping fields
アイデンティティプロバイダーのFQNとクレーム値マッピングフィールドを示すチームフォーム

関連ドキュメント

結論

RBAC対ABACの議論は、うやむやに終わることがよくあります。しかし、そうすべきではありません。アクセスが測定可能かつ信頼できる実行時コンテキストに真に依存しており、ポリシーコードを配置する場所と所有する担当者が存在する場合、ABACが適しています。それ以外のすべてについては、適切にスコープ指定されたバインディングを持つRBACが役割を果たし、人間が解読可能な状態を保ちます。

AIエージェントは例外に思えるかもしれません。実際に、人間よりも厳しいスコープ制限、共有トークンではなくユーザーごとのクレデンシャル、損害を引き起こす操作に対する人間の確認ゲートなど、適切な状態の基準を変化させます。しかし、それらのいずれもポリシーエンジンを必要としません。テナント全体ではなく個別のリソースにバインドされたロールと、実行時の適切に選択されたいくつかのチェックがあれば十分です。

それがTrueFoundryの求める実装であり、大層な名前ではなく「RBAC」と呼ぶことこそが本質です。次のアクセスレビューで「このエージェントは何にアクセスできるか?」と問われたとき、その回答は証明式ではなく、単なるリストであるべきです。

TrueFoundryで最初のエージェントのスコープを設定する

Try now.

One gateway for all your models, MCP servers, and agents.
No credit card needed.

Start free
Table of Contents

One Gateway for Every LLM, Agent and MCP Server

Book a 30-min with our AI expert

Book a Demo

The fastest way to build, govern and scale your AI

Book Demo
Summarize with
ChatGPT logo by OpenAI
Perplexity AI logo
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Discover More

No items found.
November 5, 2026
|
5 min read

AI Gateway Security for Agents: Straiker on TrueFoundry

No items found.
TrueFoundry AI gateway enforces responsible AI principles at enterprise infrastructure layer
October 6, 2026
|
5 min read

責任あるAI(Responsible AI)とは?原則、実践、そしてエンタープライズチームにとっての意味

No items found.
October 8, 2026
|
5 min read

OpenRouterとは?リクエスト処理の仕組みを解説する技術ガイド

No items found.
TrueFoundry AI Gateway powers governed AI orchestration at scale
July 4, 2026
|
5 min read

AIオーケストレーションとは?完全ガイド

No items found.
No items found.

Recent Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.

Frequently asked questions

RBACとABAC:実際の違いは何ですか?

RBACは名前付きのロールに権限を付与し、サブジェクトをそのロールに割り当てるため、判断はサブジェクトのロールバインディングの参照になります。ABACはリクエスト時に、サブジェクト、リソース、アクション、環境の属性に基づいてポリシーを評価するため、判断は計算になります。RBACは監査しやすく、ABACは表現力が高くなります。この違いは、誰があるリソースにアクセスできるのかと問われたときに表れます。RBACは一覧表から答えられますが、ABACではポリシーを評価する必要があります。

‍

AIエージェントには、RBACよりABACのほうが適していますか?

理論上は、はい。エージェントに与えるべき適切な権限は、呼び出すツール、触れるデータ、誰の代理で動作するかによって変わるためです。しかし実際には、ほとんどのチームがリソース単位のバインディングを用いたRBACを採用しています。エージェント向けのポリシーに必要な属性は、判断の時点で入手できないか、ユーザーごとの認証情報を通じて上流システムに委任したほうが適切に解決できるためです。また、監査性の低下の影響はエージェントで最も大きく、エージェントはセキュリティレビューで最も厳しく精査される対象でもあります。

RBACとABACは併用できますか?

はい。これが実際の導入で最も一般的な形です。ロールが土台となり、必要な箇所にいくつかの条件が適用されます。TrueFoundryの場合は、RBACのロールバインディングに4つの制御を加えた構成です。リソース単位のスコープ設定、上流システムの権限が適用されるユーザーごとのOAuth、ツール単位の有効化と無効化、そして機密性の高いツール呼び出しに対する人による承認です。これは意図的にポリシーエンジンにはしていません。

TrueFoundryを自社のVPCやオンプレミスにデプロイできますか?

はい。TrueFoundryはお客様のVPC、オンプレミス、エアギャップ環境、ハイブリッド環境で動作するため、多数のプロバイダーにまたがってルーティングする場合でも、プロンプトとレスポンスがお客様のドメインの外に出ることはありません。

TrueFoundryは、MCPとAIエージェント全般に対応していますか?

はい。MCP Gateway、Agent Gateway、そしてツール単位のアクセス制御を備えたMCP & Agents Registryが含まれています。LangGraph、CrewAI、AutoGen、または独自のフレームワークで構築されたエージェントを、すべて一元的に統制できます。

既存のオブザーバビリティスタックと統合できますか?

はい。ゲートウェイはOpenTelemetryに準拠しており、Grafana、Datadog、Prometheus、またはお好みのスタックに接続できます。プロンプトからツール、モデルの実行まで、すべてのリクエストを追跡するため、既存のシステムを大幅に変更することなく、統合されたロギングを実現できます。

Take a quick product tour
Start Product Tour
Product Tour