@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/windows-service-accounts-gmsa-guide/#article>
    schema:about <https://comcomponent.com/knowledge/virtual-service-account/>, <https://comcomponent.com/knowledge/gmsa/> ;
    schema:mentions <https://comcomponent.com/knowledge/localsystem-account/>, <https://comcomponent.com/knowledge/localservice-networkservice/>, <https://comcomponent.com/knowledge/computer-account/>, <https://comcomponent.com/knowledge/domain-user-service-account/>, <https://comcomponent.com/knowledge/kerberoasting/>, <https://comcomponent.com/knowledge/kds-root-key/>, <https://comcomponent.com/knowledge/service-principal-name/>, <https://comcomponent.com/knowledge/logon-as-service-right/>, <https://comcomponent.com/knowledge/service-control-manager/>, <https://comcomponent.com/knowledge/password-prompting-app/>, <https://comcomponent.com/knowledge/active-directory/>, <https://comcomponent.com/knowledge/domain-controller/>, <https://comcomponent.com/knowledge/kerberos/>, <https://comcomponent.com/knowledge/workgroup/>, <https://comcomponent.com/knowledge/admin-rights/>, <https://comcomponent.com/knowledge/windows-laps/>, <https://comcomponent.com/knowledge/domain-functional-level/>, <https://comcomponent.com/knowledge/security-event-4624/>, <https://comcomponent.com/knowledge/per-service-network-identity/> .

<https://comcomponent.com/knowledge/virtual-service-account/> a skos:Concept ;
    skos:prefLabel "仮想アカウント"@ja ;
    skos:definition "パスワード管理が不要で、コンピューターアカウントの資格情報でネットワークにアクセスしながらサービス単位でACLを付与できるサービス実行アカウント。"@ja ;
    skos:altLabel "Virtual Account" ;
    skos:altLabel "NT SERVICE\\サービス名"@ja ;
    ks:succeeds <https://comcomponent.com/knowledge/localservice-networkservice/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/per-service-network-identity/> ;
    ks:uses <https://comcomponent.com/knowledge/computer-account/> .

<https://comcomponent.com/knowledge/gmsa/> a skos:Concept ;
    skos:prefLabel "gMSA(group Managed Service Account)"@ja ;
    skos:definition "パスワードの自動生成・自動更新とSPN管理の簡素化を提供するActive Directoryドメインのサービスアカウント。ドメインコントローラー側のKDSルートキーの準備を前提とする。"@ja ;
    skos:altLabel "グループ管理サービスアカウント"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/kerberoasting/> ;
    ks:succeeds <https://comcomponent.com/knowledge/domain-user-service-account/> ;
    ks:requires <https://comcomponent.com/knowledge/kds-root-key/> ;
    ks:requires <https://comcomponent.com/knowledge/domain-functional-level/> .

<https://comcomponent.com/knowledge/service-control-manager/> a skos:Concept ;
    skos:prefLabel "SCM(サービス制御マネージャー)"@ja ;
    skos:definition "サービスの起動時に実行アカウントでログオンさせる、Windowsのサービス管理コンポーネント。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/logon-as-service-right/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/security-event-4624/> .

<https://comcomponent.com/knowledge/logon-as-service-right/> a skos:Concept ;
    skos:prefLabel "「サービスとしてログオン」権利"@ja ;
    skos:definition "セキュリティプリンシパルがサービスとしてプロセスを実行できるようにするユーザー権利。"@ja ;
    skos:altLabel "SeServiceLogonRight" .

<https://comcomponent.com/knowledge/localsystem-account/> a skos:Concept ;
    skos:prefLabel "LocalSystemアカウント"@ja ;
    skos:definition "サービスの実行アカウントの1つ。ローカルでは広範な特権を持つ一方、ネットワーク上ではコンピューターの資格情報としてリモートサーバーに認証される。"@ja ;
    skos:altLabel "LocalSystem" ;
    ks:uses <https://comcomponent.com/knowledge/admin-rights/> .

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

<https://comcomponent.com/knowledge/localservice-networkservice/> a skos:Concept ;
    skos:prefLabel "LocalService / NetworkService"@ja ;
    skos:definition "ローカル権限を最小に抑えた組み込みのサービスアカウント。リモートに対してLocalServiceは匿名、NetworkServiceはコンピューターアカウントとして見える。"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/localsystem-account/> .

<https://comcomponent.com/knowledge/per-service-network-identity/> a skos:Concept ;
    skos:prefLabel "サービス個別のネットワーク身元"@ja ;
    skos:definition "リモートのリソースに対して、同一マシン上の個々のサービスを別々のアカウントとして識別・認可できること。"@ja .

<https://comcomponent.com/knowledge/computer-account/> a skos:Concept ;
    skos:prefLabel "コンピューターアカウント(PC$)"@ja ;
    skos:definition "ドメイン参加マシンがActive Directory上に持つアカウント。LocalSystem・NetworkService・仮想アカウントで動くサービスは、この身元でリモートのリソースへ認証される。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/workgroup/> .

<https://comcomponent.com/knowledge/workgroup/> a skos:Concept ;
    skos:prefLabel "ワークグループ構成"@ja ;
    skos:definition "Active Directoryドメインに参加しない、Kerberosの土俵にないWindowsのネットワーク構成。この構成のシステムのWindows認証には依然としてNTLMが使われ、使われなければならない。"@ja ;
    skos:altLabel "Workgroup" .

<https://comcomponent.com/knowledge/domain-user-service-account/> a skos:Concept ;
    skos:prefLabel "ドメインユーザーのサービスアカウント"@ja ;
    skos:definition "サービスの実行アカウントとして割り当てられたドメイン(またはローカル)のユーザーアカウント。SCMがパスワードを保存し、起動のたびにログオンに使う。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/service-control-manager/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/logon-as-service-right/> .

<https://comcomponent.com/knowledge/kerberoasting/> a skos:Concept ;
    skos:prefLabel "Kerberoasting"@ja ;
    skos:definition "SPNが登録されたアカウントへのサービスチケットを認証済みユーザーとして要求し、オフラインでパスワードの総当たりを試みる攻撃。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/service-principal-name/> .

<https://comcomponent.com/knowledge/service-principal-name/> a skos:Concept ;
    skos:prefLabel "SPN(サービスプリンシパル名)"@ja ;
    skos:definition "Kerberos認証を受けるサービスが実行アカウントに登録する名前。"@ja ;
    skos:altLabel "SPN" ;
    ks:requires <https://comcomponent.com/knowledge/kerberos/> .

<https://comcomponent.com/knowledge/kerberos/> a skos:Concept ;
    skos:prefLabel "Kerberos"@ja ;
    skos:definition "チケットによる一度だけの本人確認と相互認証を提供する認証プロトコル。Windows ServerはKerberos version 5と、公開鍵認証・認可データの転送・委任のための拡張を実装する。"@ja ;
    skos:altLabel "Kerberos version 5" ;
    skos:altLabel "Kerberos認証"@ja .

<https://comcomponent.com/knowledge/kds-root-key/> a skos:Concept ;
    skos:prefLabel "KDSルートキー"@ja ;
    skos:definition "gMSAのパスワード計算の元になる、キー配布サービスのルートキー。作成は1回だけだが、全ドメインコントローラーへの複製を待つ必要がある。"@ja ;
    ks:storedIn <https://comcomponent.com/knowledge/domain-controller/> .

<https://comcomponent.com/knowledge/domain-functional-level/> a skos:Concept ;
    skos:prefLabel "ドメイン機能レベル(DFL)"@ja ;
    skos:definition "ドメイン内のドメインコントローラーに要求するWindows Serverの世代を示す設定値。利用できるActive Directoryの機能の範囲を決める。"@ja ;
    skos:altLabel "DFL" ;
    skos:altLabel "Domain Functional Level" .

<https://comcomponent.com/knowledge/domain-controller/> a skos:Concept ;
    skos:prefLabel "ドメインコントローラー"@ja ;
    skos:definition "Active Directoryのディレクトリサービスを提供し、KDCの機能やNTLMのパススルー認証の相手を担うサーバー。"@ja ;
    skos:altLabel "DC" .

<https://comcomponent.com/knowledge/password-prompting-app/> a skos:Concept ;
    skos:prefLabel "パスワード入力を前提とするアプリ"@ja ;
    skos:definition "実行アカウントの構成に任せず、アプリ自身が資格情報のパスワード入力・保存を要求する作りのソフトウェア。"@ja .

<https://comcomponent.com/knowledge/security-event-4624/> a skos:Concept ;
    skos:prefLabel "イベント4624(ログオン成功)"@ja ;
    skos:definition "アカウントが正常にログオンしたときに記録される監査イベント。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/service-control-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/logon-as-service-right/> ;
    schema:description "サービスはユーザーアカウントのセキュリティコンテキストで実行され、SCMが起動時にそのアカウントでログオンさせる。「サービスとしてログオン」権利はセキュリティプリンシパルがサービスとしてプロセスを実行できるようにする。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/services/service-user-accounts>, <https://learn.microsoft.com/windows/client-management/mdm/policy-csp-userrights#logonasservice> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/localsystem-account/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "LocalSystemのトークンにはNT AUTHORITY\\SYSTEMとBUILTIN\\AdministratorsのSIDが含まれ、ローカルコンピューター上で広範な特権を持つ。sc.exeでサービスの実行アカウントを指定するobj=パラメーターの既定値がLocalSystemであることが、安易な選択の温床になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/services/localsystem-account>, <https://learn.microsoft.com/windows-server/administration/windows-commands/sc-config> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/localservice-networkservice/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/localsystem-account/> ;
    schema:description "ローカル権限はどちらも最小で、リモートに対してLocalServiceは匿名、NetworkServiceはコンピューターアカウントとして見える。SYSTEMはNTFSボリューム上で既定でフルコントロールを持つのに対し、最小権限の組み込みアカウントはそこが違う。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/security/identity-protection/access-control/local-accounts> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/virtual-service-account/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/localservice-networkservice/> ;
    schema:description "仮想アカウントは自動的に管理されて作成もパスワード設定も不要という長所を保ったまま、サービス1つにつき固有の身元を持つのでアカウント共有による分離不能という短所を解消する。SQL Serverの既定のサービスアカウントもこれである。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/understand-service-accounts>, <https://learn.microsoft.com/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/virtual-service-account/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/per-service-network-identity/> ;
    schema:description "仮想アカウントの身元はマシンローカルで、ネットワーク上ではコンピューターアカウントに縮退する。ドメインのリソースへはその身元でアクセスできるが、リモート側からどのサービスかを区別できず、複数サーバーで同じ身元を共有することもできない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/manage-group-managed-service-accounts> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/virtual-service-account/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/computer-account/> ;
    schema:description "ドメイン参加マシンでは、LocalSystem・NetworkService・仮想アカウントで動くサービスがリモートのリソースへアクセスするとき、DOMAIN\\コンピューター名$として認証される。接続先のACLにPC$を付与すれば、ドメインユーザーを使わずに済むケースは多い。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/services/localsystem-account>, <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/understand-service-accounts> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/computer-account/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/workgroup/> ;
    schema:description "コンピューターアカウントはActive Directoryのオブジェクトなので、ドメインに参加していないマシンには存在しない。接続先の資格情報を明示的に扱う設計が必要になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/entra/architecture/service-accounts-on-premises> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/domain-user-service-account/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/service-control-manager/> ;
    schema:description "SCMがパスワードを保存して起動のたびにログオンに使うが、期限は管理してくれない。パスワードが期限切れになるとログオンが失敗し、サービスは起動しなくなる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/services/service-user-accounts> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/domain-user-service-account/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/kerberoasting/> ;
    schema:description "Kerberos認証を受けるサービスは実行アカウントにSPNを登録し、ドメインの任意の認証済みユーザーがそのアカウントへのサービスチケットを要求できる。人間が決めた10〜16文字程度のパスワードは、取得したチケットへのオフライン総当たりに耐えられない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/storage/file-server/smb-interception-defense> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/service-principal-name/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/kerberos/> ;
    schema:description "SPNはKerberos認証を受けるサービスが実行アカウントに登録する名前で、サービスチケットの宛先を特定する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/storage/file-server/smb-interception-defense> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/kerberoasting/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/service-principal-name/> ;
    schema:description "攻撃の起点はSPNが登録されたアカウントで、SPNがなければサービスチケットの要求対象にならない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/storage/file-server/smb-interception-defense> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gmsa/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/kerberoasting/> ;
    schema:description "gMSAのパスワードは240バイトのランダム生成で総当たり・辞書攻撃を受けにくい。実効性のある対策はパスワードを人間が推測・解読できない強度にすることで、マイクロソフトも長いパスワードの強制とgMSAの利用を挙げている。"@ja ;
    ks:evidence <https://learn.microsoft.com/entra/architecture/service-accounts-group-managed>, <https://learn.microsoft.com/windows-server/storage/file-server/smb-interception-defense> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gmsa/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/domain-user-service-account/> ;
    schema:description "既定30日ごとの自動ローテーションで人間が変更を計画する必要も、サービスを止める必要もなくなる。複数サーバーで同じ身元を共有でき、SPNの登録・管理も簡素化できる。"@ja ;
    ks:evidence <https://learn.microsoft.com/entra/architecture/service-accounts-group-managed>, <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/group-managed-service-accounts-overview> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gmsa/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/kds-root-key/> ;
    schema:description "パスワードはKDSのルートキーからドメインコントローラーが計算し、許可されたホストだけが取得する。KDSルートキーの作成は1回だけの作業だが、全ドメインコントローラーへの複製を待つため作成から最大10時間はgMSAを作成できない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/group-managed-service-accounts-overview>, <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/create-the-key-distribution-services-kds-root-key> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gmsa/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/domain-functional-level/> ;
    schema:description "gMSAにはActive Directoryドメイン環境であること、ドメインとフォレストの機能レベルがWindows Server 2012以上であること、gMSA名がフォレスト内で一意であることが要る。パスワード変更間隔は作成時にしか設定できない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/manage-group-managed-service-accounts> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/kds-root-key/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/domain-controller/> ;
    schema:description "ルートキーはドメインコントローラーが保持し、そこからgMSAのパスワードを計算する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/create-the-key-distribution-services-kds-root-key> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gmsa/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/password-prompting-app/> ;
    schema:description "gMSAはWindowsサービス・IISアプリケーションプール・タスクスケジューラのタスクなど、標準の仕組みでログオン身元を構成するものには広く対応するが、アプリが内部でパスワードを要求する作りだと使えない。フェールオーバークラスタリング自体もgMSAをサポートしないなどの制約があるため、本番投入前にテスト環境で動作を確認する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-ds/manage/group-managed-service-accounts/group-managed-service-accounts/manage-group-managed-service-accounts>, <https://learn.microsoft.com/entra/architecture/service-accounts-group-managed> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/domain-user-service-account/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/logon-as-service-right/> ;
    schema:description "ドメインユーザーを使わざるを得ない場合の緩和策として、対話型ログオンとリモートデスクトップを拒否し、「サービスとしてログオン」だけを許可する。"@ja ;
    ks:evidence <https://learn.microsoft.com/entra/architecture/service-accounts-on-premises>, <https://learn.microsoft.com/windows/client-management/mdm/policy-csp-userrights#logonasservice> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/service-control-manager/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/security-event-4624/> ;
    schema:description "現状の棚卸しは、サービス一覧の実行アカウントと、ログオンタイプ5で記録されるイベント4624で確認できる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/security/threat-protection/auditing/event-4624> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .
