@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/03/16/001-windows-admin-broker-deep-dive/#article>
    schema:about <https://comcomponent.com/knowledge/administrator-broker-model/>, <https://comcomponent.com/knowledge/uac/> ;
    schema:mentions <https://comcomponent.com/knowledge/integrity-level/>, <https://comcomponent.com/knowledge/requested-execution-level/>, <https://comcomponent.com/knowledge/runas-verb/>, <https://comcomponent.com/knowledge/named-pipe/>, <https://comcomponent.com/knowledge/admin-rights/>, <https://comcomponent.com/knowledge/os-service-model/>, <https://comcomponent.com/knowledge/elevated-task-model/>, <https://comcomponent.com/knowledge/admin-com-object-model/> .

<https://comcomponent.com/knowledge/administrator-broker-model/> a skos:Concept ;
    skos:prefLabel "Administrator Broker Model"@ja ;
    skos:definition "標準ユーザーで動くUIアプリと、管理者権限で動く別プロセス(helper EXE)を組み合わせ、必要な操作の瞬間だけ昇格させるWindowsアプリの権限分離モデルである。"@ja ;
    skos:altLabel "管理者ブローカーモデル"@ja ;
    skos:altLabel "broker EXEモデル"@ja ;
    ks:uses <https://comcomponent.com/knowledge/uac/> ;
    ks:requires <https://comcomponent.com/knowledge/requested-execution-level/> ;
    ks:uses <https://comcomponent.com/knowledge/helper-operation-allowlist/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/sporadic-admin-operation/> .

<https://comcomponent.com/knowledge/uac/> a skos:Concept ;
    skos:prefLabel "UAC(ユーザーアカウント制御)"@ja ;
    skos:definition "管理者レベルのアクセス許可が必要な変更を行う瞬間に同意を求め、プロセスがどのアクセストークンで動作するかを制御するWindowsのセキュリティ機能である。"@ja ;
    skos:altLabel "User Account Control" ;
    ks:uses <https://comcomponent.com/knowledge/integrity-level/> .

<https://comcomponent.com/knowledge/integrity-level/> a skos:Concept ;
    skos:prefLabel "整合性レベル"@ja ;
    skos:definition "プロセスがどのトークンで動作しているかをlow/medium/high/systemの段階で表し、保護領域への書き込み可否を左右するWindowsのアクセス制御の仕組みである。"@ja ;
    skos:altLabel "Mandatory Integrity Control" ;
    skos:altLabel "medium/high integrity" ;
    skos:broader <https://comcomponent.com/knowledge/uac/> .

<https://comcomponent.com/knowledge/admin-rights/> a skos:Concept ;
    skos:prefLabel "管理者権限"@ja ;
    skos:definition "コンピューター全体の設定を変更できる権限。"@ja ;
    skos:altLabel "昇格"@ja .

<https://comcomponent.com/knowledge/requested-execution-level/> a skos:Concept ;
    skos:prefLabel "requestedExecutionLevel(実行レベル宣言)"@ja ;
    skos:definition "アプリケーションマニフェストで宣言する、asInvoker・highestAvailable・requireAdministratorのいずれかの起動時権限レベルである。"@ja ;
    skos:altLabel "asInvoker" ;
    skos:altLabel "highestAvailable" ;
    skos:altLabel "requireAdministrator" ;
    skos:altLabel "requestedExecutionLevel(マニフェスト)"@ja .

<https://comcomponent.com/knowledge/runas-verb/> a skos:Concept ;
    skos:prefLabel "runas起動(ShellExecute Verb)"@ja ;
    skos:definition "UseShellExecute=trueと組み合わせて、対象プロセスを管理者として起動するよう要求するProcessStartInfo.Verbの指定値である。"@ja ;
    skos:altLabel "Verb=\"runas\"" ;
    skos:altLabel "ProcessStartInfo.Verb" ;
    skos:broader <https://comcomponent.com/knowledge/uac/> ;
    ks:uses <https://comcomponent.com/knowledge/uac/> .

<https://comcomponent.com/knowledge/named-pipe/> a skos:Concept ;
    skos:prefLabel "名前付きパイプ"@ja ;
    skos:definition "Windowsのプロセス間通信手段のひとつ。リモートからの利用はアプリ自身のポートではなくSMB(TCP 445)を経由する。"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/pipe-security-acl/> .

<https://comcomponent.com/knowledge/pipe-security-acl/> a skos:Concept ;
    skos:prefLabel "PipeSecurityによる明示的ACL"@ja ;
    skos:definition "名前付きパイプへの接続を許可するユーザーSIDを、既定のセキュリティ記述子に頼らず明示的に組み立てて限定する.NETの設定方式である。"@ja ;
    skos:altLabel "PipeSecurity" ;
    skos:altLabel "NamedPipeServerStreamAcl" ;
    skos:broader <https://comcomponent.com/knowledge/named-pipe/> ;
    ks:mitigates <https://comcomponent.com/knowledge/unauthorized-pipe-access/> .

<https://comcomponent.com/knowledge/unauthorized-pipe-access/> a skos:Concept ;
    skos:prefLabel "パイプへの不正な接続"@ja ;
    skos:definition "名前付きパイプの既定のセキュリティ記述子ではEveryoneや匿名にも読み取り権が入りうるため、想定していない主体がパイプへ接続できてしまう状態である。"@ja ;
    skos:altLabel "名前付きパイプの既定ACLのリスク"@ja .

<https://comcomponent.com/knowledge/client-pid-verification/> a skos:Concept ;
    skos:prefLabel "接続元PIDの検証"@ja ;
    skos:definition "GetNamedPipeClientProcessIdで名前付きパイプへの接続元プロセスIDを取得し、想定したプロセスからの接続かどうかを確認する検証手段である。"@ja ;
    skos:altLabel "GetNamedPipeClientProcessId" ;
    skos:broader <https://comcomponent.com/knowledge/named-pipe/> ;
    ks:mitigates <https://comcomponent.com/knowledge/unauthorized-pipe-access/> .

<https://comcomponent.com/knowledge/helper-operation-allowlist/> a skos:Concept ;
    skos:prefLabel "helperのoperation allowlist"@ja ;
    skos:definition "管理者helperが受け付ける操作を、あらかじめ決めた固定の操作名(operation)だけに限定する設計である。"@ja ;
    skos:altLabel "固定operationのみ受付"@ja ;
    skos:broader <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    ks:prevents <https://comcomponent.com/knowledge/arbitrary-command-execution/> .

<https://comcomponent.com/knowledge/arbitrary-command-execution/> a skos:Concept ;
    skos:prefLabel "任意コマンド実行口"@ja ;
    skos:definition "呼び出し元から渡された任意のコマンド文字列やパスをそのまま実行してしまう、汎用的な実行口である。"@ja ;
    skos:altLabel "command executor化"@ja .

<https://comcomponent.com/knowledge/sporadic-admin-operation/> a skos:Concept ;
    skos:prefLabel "散発的な管理者操作"@ja ;
    skos:definition "普段は不要で、設定画面の特定ボタンを押した時だけ必要になるような、頻度の低い管理者権限の操作である。"@ja .

<https://comcomponent.com/knowledge/os-service-model/> a skos:Concept ;
    skos:prefLabel "Operating System Service Model"@ja ;
    skos:definition "標準ユーザーのUIアプリから常駐サービスへ通信し、昇格プロンプトなしで管理者権限の処理を行わせる権限分離モデルである。"@ja ;
    skos:altLabel "サービスモデル"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/continuous-unattended-admin-operation/> ;
    ks:requires <https://comcomponent.com/knowledge/admin-rights/> .

<https://comcomponent.com/knowledge/continuous-unattended-admin-operation/> a skos:Concept ;
    skos:prefLabel "常時・無人・頻繁な管理者操作"@ja ;
    skos:definition "常時監視、ログ収集、バックグラウンド更新のように、無人かつ高頻度で継続的に必要になる管理者権限の処理である。"@ja .

<https://comcomponent.com/knowledge/elevated-task-model/> a skos:Concept ;
    skos:prefLabel "Elevated Task Model"@ja ;
    skos:definition "標準ユーザーのUIアプリから、管理者権限で動くスケジュールタスクを起動して短い定型処理を行わせる権限分離モデルである。"@ja ;
    skos:altLabel "最高権限タスクモデル"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/short-scheduled-admin-task/> ;
    ks:requires <https://comcomponent.com/knowledge/admin-rights/> .

<https://comcomponent.com/knowledge/short-scheduled-admin-task/> a skos:Concept ;
    skos:prefLabel "短い定型の管理者ジョブ"@ja ;
    skos:definition "1回ごとに短時間で終わる、定型化された管理者権限のジョブである。"@ja .

<https://comcomponent.com/knowledge/admin-com-object-model/> a skos:Concept ;
    skos:prefLabel "Administrator COM Object Model"@ja ;
    skos:definition "標準ユーザーのUIアプリから、昇格したCOMオブジェクト(COM elevation moniker)を呼び出して管理者権限の処理を行わせる権限分離モデルである。"@ja ;
    skos:altLabel "昇格COMモデル"@ja ;
    skos:altLabel "COM elevation moniker" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/existing-com-integration/> ;
    ks:requires <https://comcomponent.com/knowledge/admin-rights/> .

<https://comcomponent.com/knowledge/existing-com-integration/> a skos:Concept ;
    skos:prefLabel "既存COM前提の統合"@ja ;
    skos:definition "既にCOMベースで設計された機能があり、管理者権限が必要な操作の範囲がかなり限定される統合の場面である。"@ja .

<https://comcomponent.com/knowledge/currentuseronly-pipeoption/> a skos:Concept ;
    skos:prefLabel "PipeOptions.CurrentUserOnly"@ja ;
    skos:definition "名前付きパイプへの接続を、現在のユーザー(かつ同じ昇格レベル)に限定する.NETのアクセス制御オプション。"@ja ;
    skos:altLabel "CurrentUserOnly" ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/administrator-broker-model/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/uac/> ;
    schema:description "broker EXEモデルは、管理者helperの起動時にUACの同意プロンプトまたは資格情報プロンプトを経由させることで、必要な瞬間だけ昇格させる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/administrator-broker-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/uac/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/integrity-level/> ;
    schema:description "UACは標準ユーザーと昇格したプロセスをそれぞれmedium/high整合性レベルのトークンで区別して制御する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/mandatory-integrity-control> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/uac/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "管理者アカウントに対するUACの同意プロンプトは、そのアカウント自身の管理者アクセストークンを求める。ただし標準ユーザーに対する資格情報プロンプトでは、要求されるのは呼び出し元とは別の管理者アカウントの資格情報であり、UAC自体は標準ユーザーでも機能するため、呼び出し元が常に管理者権限を持つとは限らない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/security/application-security/application-control/user-account-control/how-it-works> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/requested-execution-level/> ;
    schema:description "broker EXEモデルでは、UIのマニフェストをasInvoker、helperのマニフェストをrequireAdministratorに宣言し分ける"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/developing-applications-that-require-administrator-privilege> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/runas-verb/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/uac/> ;
    schema:description "UseShellExecute=trueとVerb=\"runas\"でプロセスを起動すると、対象のマニフェストの要求に応じてUACの昇格プロンプトが表示される"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/dotnet/fundamentals/runtime-libraries/system-diagnostics-processstartinfo-useshellexecute> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/named-pipe/> ;
    schema:description "本記事が組み立てるbroker EXE実装のように、runasと標準入出力リダイレクトの相性の悪さを避けたい場合、UIとhelperの通信には名前付きパイプなどのIPCを使う"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/ipc/named-pipe-security-and-access-rights> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/named-pipe/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/pipe-security-acl/> ;
    schema:description "名前付きパイプは既定のセキュリティ記述子に頼らず、明示的なPipeSecurityで接続を許可するユーザーSIDを限定して構成する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.io.pipes.namedpipeserverstreamacl.create?view=net-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/named-pipe/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/unauthorized-pipe-access/> ;
    schema:description "既定のセキュリティ記述子のまま名前付きパイプを使うと、Everyoneや匿名にも読み取り権が入りうる"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/ipc/named-pipe-security-and-access-rights> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pipe-security-acl/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/unauthorized-pipe-access/> ;
    schema:description "呼び出し元ユーザーSIDにだけ接続権を与える明示的なACLを設定することで、別ユーザーからのパイプ接続を遮断できる。ただし同一ユーザーで動く別プロセスからの接続は防げないため、記事はクライアントPIDの検証を併用している"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.io.pipes.namedpipeserverstreamacl.create?view=net-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/client-pid-verification/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/unauthorized-pipe-access/> ;
    schema:description "同じユーザーで動く別プロセスが先に接続してくる余地に備え、接続元PIDが想定したUIプロセスと一致するかを確認する追加防御である"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/api/winbase/nf-winbase-getnamedpipeclientprocessid> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/client-pid-verification/> ;
    schema:description "同じユーザーで動く別プロセスからのなりすまし接続まで防ぎたい本記事のbroker EXE実装のように、helperはパイプ接続後にGetNamedPipeClientProcessIdで接続元PIDを検証する"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/api/winbase/nf-winbase-getnamedpipeclientprocessid> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/helper-operation-allowlist/> ;
    schema:description "helperはoperation名で処理をdispatchし、固定の操作しか受け付けないようにする"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/developing-applications-that-require-administrator-privilege> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/helper-operation-allowlist/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/arbitrary-command-execution/> ;
    schema:description "操作自体を固定しbool/enum/数値などの型付き要求だけを受け付けることで、helperが昇格した何でも実行できる口になることを防ぐ"@ja ;
    ks:evidence <https://owasp.org/www-community/attacks/Command_Injection> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/sporadic-admin-operation/> ;
    schema:description "管理者操作が散発的で必要な瞬間だけUACを出せばよい場合は、常駐serviceより管理者helper EXEを一回だけ起動する形が本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/developing-applications-that-require-administrator-privilege> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/os-service-model/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/continuous-unattended-admin-operation/> ;
    schema:description "常時監視やバックグラウンド更新など、常時・無人・頻繁な管理者操作にはserviceが向く"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/operating-system-service-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/elevated-task-model/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/short-scheduled-admin-task/> ;
    schema:description "1回ごとに短く終わる定型ジョブにはElevated Task Modelが向く"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/elevated-task-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/admin-com-object-model/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/existing-com-integration/> ;
    schema:description "既存のCOM設計があり機能がかなり限定される場合にAdministrator COM Object Modelが向く"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/administrator-com-object-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/currentuseronly-pipeoption/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/administrator-broker-model/> ;
    schema:description "CurrentUserOnlyは昇格レベルも確認するため、medium整合性のUIとhigh整合性のhelperという構成のbroker EXEモデルの通信には使えない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.io.pipes.pipeoptions?view=net-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/os-service-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "常駐serviceは管理者権限で登録され、以後は昇格プロンプトなしで管理者権限の処理を代行する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/operating-system-service-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/elevated-task-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "最高権限のスケジュールタスクは管理者権限で登録・実行される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/elevated-task-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/admin-com-object-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "昇格COMは管理者権限のプロセスとして実行される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/secauthz/administrator-com-object-model> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
