@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/powershell-security-hardening-jea/#article>
    schema:about <https://comcomponent.com/knowledge/powershell-security-hardening/>, <https://comcomponent.com/knowledge/jea/> ;
    schema:mentions <https://comcomponent.com/knowledge/script-block-logging/>, <https://comcomponent.com/knowledge/powershell-transcription/>, <https://comcomponent.com/knowledge/amsi/>, <https://comcomponent.com/knowledge/powershell-v2-engine/>, <https://comcomponent.com/knowledge/powershell-execution-policy/>, <https://comcomponent.com/knowledge/powershell-language-mode/>, <https://comcomponent.com/knowledge/constrained-language-mode/>, <https://comcomponent.com/knowledge/role-capability-file/>, <https://comcomponent.com/knowledge/session-configuration-file/>, <https://comcomponent.com/knowledge/jea-virtual-account/>, <https://comcomponent.com/knowledge/jea-transcript-directory/>, <https://comcomponent.com/knowledge/powershell-remoting/>, <https://comcomponent.com/knowledge/transcript-share-acl-hardening/>, <https://comcomponent.com/knowledge/owner-rights-sid/>, <https://comcomponent.com/knowledge/log-tampering-by-compromised-account/>, <https://comcomponent.com/knowledge/excessive-admin-privilege-grant/>, <https://comcomponent.com/knowledge/parameter-validateset-restriction-bypass/>, <https://comcomponent.com/knowledge/jea-wrapper-function-pattern/>, <https://comcomponent.com/knowledge/app-control-for-business/>, <https://comcomponent.com/knowledge/applocker/>, <https://comcomponent.com/knowledge/get-winevent/> .

<https://comcomponent.com/knowledge/powershell-security-hardening/> a skos:Concept ;
    skos:prefLabel "PowerShellのセキュリティ強化"@ja ;
    skos:definition "PowerShellを禁止せず、可視化・迂回経路の遮断・権限の限定・実行の制限を組み合わせて安全に使い続けるための対策全般。"@ja ;
    skos:altLabel "PowerShellのハードニング"@ja ;
    skos:altLabel "可視化と制限"@ja ;
    ks:uses <https://comcomponent.com/knowledge/script-block-logging/> ;
    ks:uses <https://comcomponent.com/knowledge/powershell-transcription/> ;
    ks:uses <https://comcomponent.com/knowledge/amsi/> .

<https://comcomponent.com/knowledge/jea/> a skos:Concept ;
    skos:prefLabel "JEA(Just Enough Administration)"@ja ;
    skos:definition "実行できるコマンドレット・関数・外部コマンドを限定した専用のセッション構成を用意し、管理者権限を委任する範囲を絞り込むPowerShellのセキュリティ技術。"@ja ;
    skos:altLabel "Just Enough Administration" ;
    ks:uses <https://comcomponent.com/knowledge/role-capability-file/> ;
    ks:uses <https://comcomponent.com/knowledge/session-configuration-file/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/jea-transcript-directory/> ;
    ks:requires <https://comcomponent.com/knowledge/powershell-remoting/> ;
    ks:mitigates <https://comcomponent.com/knowledge/excessive-admin-privilege-grant/> .

<https://comcomponent.com/knowledge/script-block-logging/> a skos:Concept ;
    skos:prefLabel "スクリプトブロックログ"@ja ;
    skos:definition "PowerShellが処理する全スクリプトブロックの内容をイベントログに記録する機能。"@ja ;
    skos:altLabel "Script Block Logging" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/get-winevent/> .

<https://comcomponent.com/knowledge/powershell-transcription/> a skos:Concept ;
    skos:prefLabel "PowerShellトランスクリプション"@ja ;
    skos:definition "PowerShellセッションの入出力をテキストファイルへ記録する機能。OutputDirectoryを指定して書き込み専用の共有へ集約できる。"@ja ;
    skos:altLabel "Transcription" ;
    skos:altLabel "セッションの記録"@ja .

<https://comcomponent.com/knowledge/get-winevent/> a skos:Concept ;
    skos:prefLabel "Get-WinEvent"@ja ;
    skos:definition "イベントログをフィルターして取得するPowerShellコマンドレット。FilterHashtableでの絞り込みに対応し、NTLM監査ログなど大量のイベントの集計に使う。"@ja .

<https://comcomponent.com/knowledge/transcript-share-acl-hardening/> a skos:Concept ;
    skos:prefLabel "トランスクリプト共有のACL設計"@ja ;
    skos:definition "トランスクリプトの出力先共有で、利用者にはファイルの作成と自分が作ったファイルの読み書きだけを与え、削除や所有者経由の権限変更を防ぐアクセス制御の設計。"@ja ;
    skos:altLabel "トランスクリプト集約先のアクセス制御"@ja ;
    skos:broader <https://comcomponent.com/knowledge/powershell-transcription/> ;
    ks:uses <https://comcomponent.com/knowledge/owner-rights-sid/> .

<https://comcomponent.com/knowledge/log-tampering-by-compromised-account/> a skos:Concept ;
    skos:prefLabel "侵害されたアカウントによるログ改ざん"@ja ;
    skos:definition "端末やアカウントが乗っ取られたときに、攻撃者が自分自身の操作記録を上書き・削除して監査証跡を消してしまうリスク。"@ja ;
    skos:altLabel "証跡の削除・上書き"@ja .

<https://comcomponent.com/knowledge/owner-rights-sid/> a skos:Concept ;
    skos:prefLabel "OWNER RIGHTS(S-1-3-4)"@ja ;
    skos:definition "オブジェクトの現在の所有者を表す特殊なID(S-1-3-4)。このSIDを持つACEをオブジェクトに設定すると、所有者への暗黙のREAD_CONTROL/WRITE_DAC付与がシステムに無視される。"@ja ;
    skos:altLabel "OWNER RIGHTS SID" ;
    skos:broader <https://comcomponent.com/knowledge/transcript-share-acl-hardening/> .

<https://comcomponent.com/knowledge/role-capability-file/> a skos:Concept ;
    skos:prefLabel "役割機能ファイル(.psrc)"@ja ;
    skos:definition "JEAにおいて、VisibleCmdletsやFunctionDefinitionsなどで許可する操作を宣言する定義ファイル。PowerShellモジュールのRoleCapabilitiesフォルダーに配置し、モジュールとして検出できる状態にする必要がある。"@ja ;
    skos:altLabel "Role Capability File" .

<https://comcomponent.com/knowledge/session-configuration-file/> a skos:Concept ;
    skos:prefLabel "セッション構成ファイル(.pssc)"@ja ;
    skos:definition "JEAにおいて、SessionType・RunAsVirtualAccount・TranscriptDirectory・RoleDefinitionsなど、セッションの構成方法と役割の割り当てを定義するファイル。"@ja ;
    skos:altLabel "Session Configuration File" ;
    ks:uses <https://comcomponent.com/knowledge/powershell-language-mode/> .

<https://comcomponent.com/knowledge/jea-virtual-account/> a skos:Concept ;
    skos:prefLabel "仮想アカウント(RunAsVirtualAccount)"@ja ;
    skos:definition "JEAセッションの実行を、接続してきた利用者本人ではなく仮想の管理者アカウントに行わせる設定。利用者は管理者権限を持たないまま許可された操作だけを実行できる。"@ja ;
    skos:altLabel "Virtual Account" .

<https://comcomponent.com/knowledge/jea-transcript-directory/> a skos:Concept ;
    skos:prefLabel "JEAのTranscriptDirectory"@ja ;
    skos:definition "JEAセッション構成ファイルで指定する、実行内容の自動記録先フォルダー。Local Systemアカウントが書き込み、標準ユーザーはこのフォルダーへのアクセスを持たないことが求められる。"@ja ;
    skos:altLabel "TranscriptDirectory" ;
    ks:prevents <https://comcomponent.com/knowledge/log-tampering-by-compromised-account/> .

<https://comcomponent.com/knowledge/powershell-remoting/> a skos:Concept ;
    skos:prefLabel "PowerShell Remoting"@ja ;
    skos:definition "リモートコンピューター上のPowerShellにコマンドを送り、複数台への同じ作業を一括で行う仕組み。既定のトランスポートはWinRM(WS-Managementの実装)だが、PowerShell 7ではSSHベースのRemotingも選べる。"@ja .

<https://comcomponent.com/knowledge/powershell-language-mode/> a skos:Concept ;
    skos:prefLabel "PowerShellの言語モード"@ja ;
    skos:definition "セッションで使用できる言語要素の範囲を制限するPowerShellの仕組み。FullLanguage・ConstrainedLanguage・RestrictedLanguage・NoLanguageの4種類がある。"@ja ;
    skos:altLabel "Language Mode" ;
    ks:uses <https://comcomponent.com/knowledge/constrained-language-mode/> .

<https://comcomponent.com/knowledge/constrained-language-mode/> a skos:Concept ;
    skos:prefLabel "制約付き言語モード(Constrained Language Mode)"@ja ;
    skos:definition "WDAC(App Control for Business)やAppLockerなど、許可リスト方式のアプリケーション制御ポリシーに合わないPowerShellスクリプトが、完全停止ではなく制限された状態で実行されるモード。.NETオブジェクトの生成が広く制限される。"@ja ;
    skos:altLabel "Constrained Language Mode" .

<https://comcomponent.com/knowledge/app-control-for-business/> a skos:Concept ;
    skos:prefLabel "App Control for Business(旧WDAC)"@ja ;
    skos:definition "Windows 10で「Device Guard」として登場した実行制御機能の現在の名称。ポリシーはマシン全体・全ユーザーに適用され、MSRCのサービス基準を満たすセキュリティ機能として設計されている。"@ja ;
    skos:altLabel "WDAC" ;
    skos:altLabel "Windows Defender Application Control" ;
    skos:altLabel "構成可能なコード整合性"@ja ;
    skos:altLabel "Device Guard" .

<https://comcomponent.com/knowledge/applocker/> a skos:Concept ;
    skos:prefLabel "AppLocker"@ja ;
    skos:definition "Windows 7で導入された実行制御機能。署名証明書の属性・ファイル属性・ハッシュ・パスに基づくルールを、コンピューター全体または特定のユーザー・グループに適用できる。セキュリティ機能としてのMSRCサービス基準は満たさない。"@ja .

<https://comcomponent.com/knowledge/excessive-admin-privilege-grant/> a skos:Concept ;
    skos:prefLabel "管理者権限の過剰付与"@ja ;
    skos:definition "ヘルプデスクや運用担当者に必要以上の管理者権限を渡してしまっている状態。1台の端末やアカウントの侵害が組織全体の侵害につながる要因になる。"@ja ;
    skos:altLabel "過大な権限付与"@ja .

<https://comcomponent.com/knowledge/parameter-validateset-restriction-bypass/> a skos:Concept ;
    skos:prefLabel "ValidateSetによるパラメーター制限の回避"@ja ;
    skos:definition "コマンドのパラメーターにValidateSetで許可値を絞っても、その制限はパラメーターが実際に束縛されたときにしか評価されないため、パイプライン入力や別のパラメーターセットで束縛を回避されると制限が働かないこと。"@ja ;
    skos:altLabel "パイプライン束縛によるValidateSet回避"@ja ;
    skos:broader <https://comcomponent.com/knowledge/role-capability-file/> .

<https://comcomponent.com/knowledge/jea-wrapper-function-pattern/> a skos:Concept ;
    skos:prefLabel "JEAの引数限定ラッパー関数"@ja ;
    skos:definition "状態を変えるコマンドを直接VisibleCmdletsで公開せず、引数でしか対象を受け取らない独自関数として公開することで、パイプラインや別パラメーターセットによる制限回避を防ぐJEAの設計パターン。"@ja ;
    skos:altLabel "ラッパー関数によるJEA制限"@ja ;
    skos:broader <https://comcomponent.com/knowledge/role-capability-file/> ;
    ks:mitigates <https://comcomponent.com/knowledge/parameter-validateset-restriction-bypass/> ;
    ks:requires <https://comcomponent.com/knowledge/role-capability-file/> .

<https://comcomponent.com/knowledge/amsi/> a skos:Concept ;
    skos:prefLabel "AMSI(Antimalware Scan Interface)"@ja ;
    skos:definition "実行直前のスクリプトの内容を任意のアンチマルウェア製品へ渡して検査させるWindowsの仕組み。PowerShell 5.0以降・Windows 10以降で機能する。"@ja ;
    skos:altLabel "Antimalware Scan Interface" .

<https://comcomponent.com/knowledge/powershell-v2-engine/> a skos:Concept ;
    skos:prefLabel "Windows PowerShell 2.0エンジン"@ja ;
    skos:definition "非推奨のWindows PowerShell 2.0互換実行エンジン。有効なままだと、ログもAMSIも統合されていないこのエンジンへ切り替えられる余地が残る。"@ja ;
    skos:altLabel "PowerShell 2.0" ;
    skos:altLabel "powershell.exe -Version 2" ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/amsi/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/script-block-logging/> .

<https://comcomponent.com/knowledge/powershell-execution-policy/> a skos:Concept ;
    skos:prefLabel "PowerShellの実行ポリシー"@ja ;
    skos:definition "ユーザーが意図せず危険なスクリプトを実行してしまうことを防ぐための安全機能。悪意ある操作を止めるためのセキュリティ境界ではないと公式ドキュメントが明記している。"@ja ;
    skos:altLabel "Execution Policy" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/powershell-security-hardening/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-security-hardening/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/script-block-logging/> ;
    schema:description "最優先の対策として、実行されたコードを難読化解除後の形でイベントログに記録するスクリプトブロックログを有効化する"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_logging_windows> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-security-hardening/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/powershell-transcription/> ;
    schema:description "スクリプトブロックログと併せて、セッションの入出力を記録するトランスクリプションも有効化する"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_logging_windows> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/script-block-logging/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/get-winevent/> ;
    schema:description "スクリプトブロックログが有効化できたかは、新しいセッションで目印になるコマンドを実行し、Get-WinEventでイベントID 4104として返るかを確認する"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/get-winevent> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/transcript-share-acl-hardening/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/log-tampering-by-compromised-account/> ;
    schema:description "CREATOR OWNERとOWNER RIGHTSのACEを組み合わせることで、乗っ取られたアカウントが他人のトランスクリプトを上書き・削除できない状態を作れる。ただし自分自身の記録の上書きまではACLだけでは塞げない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/understand-special-identities-groups> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/transcript-share-acl-hardening/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/owner-rights-sid/> ;
    schema:description "所有者への暗黙のREAD_CONTROL/WRITE_DAC付与を無効化するため、OWNER RIGHTS(S-1-3-4)のACEを権限設計に加える"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/understand-special-identities-groups> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/role-capability-file/> ;
    schema:description "JEAは役割機能ファイル(.psrc)のVisibleCmdletsやFunctionDefinitionsで、許可する操作を宣言する"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/session-configuration-file/> ;
    schema:description "JEAはセッション構成ファイル(.pssc)のRoleDefinitionsで役割とユーザー・グループを対応付ける"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/jea-virtual-account/> ;
    schema:description "セッション構成でRunAsVirtualAccountを指定すると、JEAセッションは仮想管理者アカウントとして実行され、接続した利用者本人は管理者権限を持たない"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/jea-transcript-directory/> ;
    schema:description "セッション構成ファイルのTranscriptDirectoryを指定すると、接続してきた利用者ではなくLocal Systemが実行内容を自動的に記録する"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/session-configurations> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/powershell-remoting/> ;
    schema:description "JEAはPowerShellリモート処理(WinRM)の仕組みの上に構築されており、対象サーバーでリモート処理が有効であることが前提になる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/prerequisites> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/session-configuration-file/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/powershell-language-mode/> ;
    schema:description "セッション構成の既定であるRestrictedRemoteServerでは、言語モードが既定でNoLanguageになり任意のコード実行ができない"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_language_modes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-language-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/constrained-language-mode/> ;
    schema:description "言語モードにはConstrainedLanguageのような制限モードが含まれ、コマンドレットやループ・条件分岐は使えるが利用できる.NET型が許可リストに限定される"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_language_modes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/constrained-language-mode/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/app-control-for-business/> ;
    schema:description "制約付き言語モードが実効性を持つのは、WDAC(App Control for Business)またはAppLockerによる許可リスト方式のアプリケーション制御を構成した結果として自動的に切り替わる場合である。WDACとAppLockerはどちらか一方の構成でも切り替わるため、App Control for Businessの構成は必須ではない(AppLockerのみでも成立する)"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_language_modes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/constrained-language-mode/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/applocker/> ;
    schema:description "AppLockerによるアプリケーション制御を構成した結果としても、PowerShellは自動的に制約付き言語モードへ切り替わる。ただしWDAC(App Control for Business)のみの構成でも同様に切り替わるため、AppLockerの構成は必須ではない"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_language_modes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/excessive-admin-privilege-grant/> ;
    schema:description "JEAは管理者権限を配らずに特定の操作だけを委任することで、1台の侵害が全社の侵害になるリスクを抑える"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/role-capability-file/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/parameter-validateset-restriction-bypass/> ;
    schema:description "状態を変えるコマンドをVisibleCmdletsで公開し、ParametersとValidateSetだけでパラメーター値を制限しても、パイプライン入力や別のパラメーターセットで束縛を回避されると制限が働かない"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/role-capabilities> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea-wrapper-function-pattern/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/parameter-validateset-restriction-bypass/> ;
    schema:description "引数でしか対象を受け取らないラッパー関数として操作を公開すれば、パイプラインや別のパラメーターセットによる制限回避の余地がなくなる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/role-capabilities> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea-wrapper-function-pattern/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/role-capability-file/> ;
    schema:description "独自のラッパー関数はFunctionDefinitionsで定義したうえで、VisibleFunctionsにも名前を挙げて役割機能ファイルに含める必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/role-capabilities> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-security-hardening/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/amsi/> ;
    schema:description "AMSIにより、実行直前のスクリプトの内容がウイルス対策製品に渡され、難読化を解いた状態で検査される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/amsi/antimalware-scan-interface-portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-v2-engine/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/amsi/> ;
    schema:description "PowerShell 2.0エンジンにはAMSIが統合されておらず、-Version 2での起動によりAMSIの検査が効かない環境に切り替えられる余地が残る"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/windows-powershell/wmf/whats-new/deprecating-powershell-2> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-v2-engine/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/script-block-logging/> ;
    schema:description "PowerShell 2.0エンジンにはスクリプトブロックログの記録機能がなく、-Version 2での起動によりログを残さず実行できる余地が残る"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/windows-powershell/wmf/whats-new/deprecating-powershell-2> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-execution-policy/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/powershell-security-hardening/> ;
    schema:description "実行ポリシーはユーザーが意図せずスクリプトを実行することを防ぐための安全機能であり、複数の回避手段があるためセキュリティ対策の主軸として用いることは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/powershell-transcription/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/transcript-share-acl-hardening/> ;
    schema:description "端末ローカルではなく利用者が消せない共有へ記録を集約するには、共有アクセス許可とNTFSアクセス許可の両方を適切に設計する必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/icacls> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jea-transcript-directory/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/log-tampering-by-compromised-account/> ;
    schema:description "JEAのTranscriptDirectoryはLocal Systemが書き込み、標準ユーザーはアクセスを持たないため、利用者が自分自身の記録を上書き・削除する余地そのものがなくなる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/scripting/security/remoting/jea/session-configurations> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
