知識マップ: Windowsアプリで「管理者権限が必要な処理だけ」を分離する具体的な書き方

記事「Windowsアプリで「管理者権限が必要な処理だけ」を分離する具体的な書き方」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事はWindowsアプリで管理者権限が必要な処理だけを分離する具体的な実装を扱います。UACはプロセスの整合性レベルで制御され親子プロセスは同じレベルでトークンを継承するため、同じプロセス内の一部だけを昇格させることはできず、標準ユーザーのUIと管理者権限のhelper EXEを組み合わせるAdministrator Broker Modelが基本形になります。helperの起動にはrunasを使い、UIとhelperの通信には既定ACLに頼らず明示的なPipeSecurityを設定した名前付きパイプを使い、接続元PIDの検証とhelper側で固定operationのみを受け付けるallowlistによって任意コマンド実行の口を塞ぎます。PipeOptions.CurrentUserOnlyは整合性レベルの違いまで確認してしまうため、この用途には使えません。

管理者権限処理の分離実装の知識マップUACの整合性レベルという制約のもとで、Administrator Broker Modelがなぜ標準ユーザーUIと管理者helper EXEを名前付きパイプでつなぎ、ACLとPID検証とoperation allowlistで境界を守るのかを、他の分離モデルとの使い分けとあわせて示した図。利用する利用する前提とする前提とする利用する利用するで構成できる原因になり得る軽減する軽減する利用する利用する防止する推奨される対応推奨される対応推奨される対応推奨される対応両立しない前提とする前提とする前提とするAdministrator Broker ModelUAC(ユーザーアカウント制御)整合性レベル管理者権限requestedExecutionLevel(実行レベル宣言)runas起動(ShellExecute Verb)名前付きパイプPipeSecurityによる明示的ACLパイプへの不正な接続接続元PIDの検証helperのoperation allowlist任意コマンド実行口散発的な管理者操作Operating System Service Model常時・無人・頻繁な管理者操作Elevated Task Model短い定型の管理者ジョブAdministrator COM Object Model既存COM前提の統合PipeOptions.CurrentUserOnly

概念間の関係(全21件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Administrator Broker Model
標準ユーザーで動くUIアプリと、管理者権限で動く別プロセス(helper EXE)を組み合わせ、必要な操作の瞬間だけ昇格させるWindowsアプリの権限分離モデルである。
UAC(ユーザーアカウント制御)
管理者レベルのアクセス許可が必要な変更を行う瞬間に同意を求め、プロセスがどのアクセストークンで動作するかを制御するWindowsのセキュリティ機能である。
runas起動(ShellExecute Verb)
UseShellExecute=trueと組み合わせて、対象プロセスを管理者として起動するよう要求するProcessStartInfo.Verbの指定値である。
名前付きパイプ
Windowsのプロセス間通信手段のひとつ。リモートからの利用はアプリ自身のポートではなくSMB(TCP 445)を経由する。
PipeSecurityによる明示的ACL
名前付きパイプへの接続を許可するユーザーSIDを、既定のセキュリティ記述子に頼らず明示的に組み立てて限定する.NETの設定方式である。
接続元PIDの検証
GetNamedPipeClientProcessIdで名前付きパイプへの接続元プロセスIDを取得し、想定したプロセスからの接続かどうかを確認する検証手段である。
helperのoperation allowlist
管理者helperが受け付ける操作を、あらかじめ決めた固定の操作名(operation)だけに限定する設計である。
Operating System Service Model
標準ユーザーのUIアプリから常駐サービスへ通信し、昇格プロンプトなしで管理者権限の処理を行わせる権限分離モデルである。
Elevated Task Model
標準ユーザーのUIアプリから、管理者権限で動くスケジュールタスクを起動して短い定型処理を行わせる権限分離モデルである。
Administrator COM Object Model
標準ユーザーのUIアプリから、昇格したCOMオブジェクト(COM elevation moniker)を呼び出して管理者権限の処理を行わせる権限分離モデルである。
PipeOptions.CurrentUserOnly
名前付きパイプへの接続を、現在のユーザー(かつ同じ昇格レベル)に限定する.NETのアクセス制御オプション。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。