【図解】ユーザーアカウント・コンピュータアカウント・サービスアカウントの違いを初心者向けに解説

Active Directoryには、人が使う「ユーザーアカウント」のほかに、「コンピュータアカウント」や「サービスアカウント」と呼ばれるアカウントがあります。KerberosやSPNの説明では「FS01$の鍵で暗号化する」「サービスを動かすアカウントにSPNを登録する」のように当たり前に出てきますが、それぞれ何を表していて、パスワードはだれが持っているのかが分かっていないと、話がつながりません。この記事では、3種類のアカウントの違いを、パスワードの持ち方を中心に整理します。

この記事でわかること
  1. ユーザー・コンピュータ・サービスの3種類のアカウントが、それぞれ何を表すのか
  2. それぞれのパスワードをだれが決め、だれが持ち、いつ変わるのか
  3. サービスを動かすアカウントの種類(Local System、仮想アカウント、gMSAなど)と選び方

全体像:ADの中の3種類のアカウント

3種類の違いは、「だれ(何)を表すアカウントか」です。ユーザーアカウントは人を、コンピュータアカウントはドメインに参加したコンピュータを、サービスアカウントはサーバの上で動くサービスを表します。

Active Directory(corp.example.com)ユーザーアカウントuser01表すもの:人パスワード:本人が決める使う場面:PCへのサインインコンピュータアカウントFS01$表すもの:コンピュータパスワード:PCが自動で決める使う場面:DCとの通信、HOSTのSPNサービスアカウントsvc-web / gmsa-web$表すもの:サービス(アプリ)パスワード:種類で変わる使う場面:サービスの実行どれも SID とパスワード(から作った鍵)を持ち、Kerberos で認証できる「セキュリティプリンシパル」
図1 Active Directoryの3種類のアカウント

見た目の役割は違いますが、3種類とも中身はよく似ています。どれもSID(Windowsがアカウントを見分ける番号)とパスワードを持っていて、Kerberosで認証を受けられます。このように「認証を受けて、アクセス許可の対象になれるもの」をまとめて、セキュリティプリンシパルと呼びます。実際、ADの中ではコンピュータアカウントはユーザーアカウントの一種として定義されています。

ユーザーアカウントコンピュータアカウントサービスアカウント
表すもの人ドメインに参加したコンピュータサーバで動くサービス
名前の例user01FS01$svc-web、gmsa-web$
作られるとき管理者が作るドメインに参加したとき管理者が作る
パスワードを決める人本人コンピュータ自身(自動)種類による(管理者、または自動)
パスワードが変わるときパスワードポリシーに従って本人が変える既定では30日ごとに自動種類による

ユーザーアカウント:人を表す

いちばんなじみがあるのがユーザーアカウントです。社員一人ひとりに1つずつ作り、PCへのサインインやメール、ファイル共有に使います。パスワードは本人が決めて、本人だけが知っています。DCが持っているのは、パスワードそのものではなく、パスワードから作った鍵です。

PCにサインインするとき、PCは入力されたパスワードから鍵を作り、その鍵でDCとKerberosのやり取りをします。DCは自分が持っている鍵と照らし合わせて、本人かどうかを確かめます。本人がパスワードを変えると、DCの鍵も新しいものに変わります。

コンピュータアカウント:コンピュータを表す

PCやサーバをドメインに参加させると、ADにそのコンピュータのアカウントが作られます。名前はコンピュータ名の最後に $ を付けたもので、FS01というサーバならFS01$です。この $ が、コンピュータアカウントの目印です。

コンピュータアカウントにもパスワードがあります。ただし、人がパスワードを決めたり入力したりすることはありません。

FS01DCLSAシークレットFS01$ のパスワードADのデータベースFS01$ の鍵① ドメイン参加参加の操作で FS01$ を作り、パスワードを決めて両方に保存② 30日ごとFS01 が新しいパスワードを決めて、DC にも書き込む③ ふだん同じ鍵を使って、DC と安全に通信(セキュアチャネル)両方のパスワードがずれると「信頼関係」が壊れ、ドメインへのサインインやアクセスが失敗するようになる
図2 コンピュータアカウントのパスワード。コンピュータとDCの両方が持ち、自動で変わる
だれがどこに持っているか
コンピュータ(FS01)LSAシークレットという、SYSTEMの権限でしか読めない保護された場所
DCADのデータベース(パスワードから作った鍵として)

パスワードはドメイン参加のときに決まり、その後は既定で30日ごとに、コンピュータが自分で新しいパスワードを決めてDCにも書き込みます。人が関わらないので、長く複雑なパスワードを保てます。

コンピュータアカウントは、次のような場面で使われます。

場面使われ方
DCとの安全な通り道コンピュータとDCは、このパスワードを使って「セキュアチャネル」という安全な通信路を作る。ユーザーのNTLM認証をDCに頼むときなどに使う
サービスの受け手としてファイル共有などOSのサービスにKerberosでアクセスされるとき、サービスチケットはコンピュータアカウントの鍵で暗号化される。HOST/fs01.corp.example.com などのSPNもコンピュータアカウントに登録されている
サービスがネットワークに出るときLocal SystemやNetwork Serviceで動くサービスが別のサーバにアクセスすると、相手からはFS01$としてアクセスしてきたように見える(次の節で説明)
「信頼関係」が壊れるとき

コンピュータとDCのパスワードがずれると、そのコンピュータはDCと安全に通信できなくなり、ドメインのアカウントでのサインインやアクセスが失敗するようになります。よくあるのは、古いスナップショットやバックアップに戻したときです。戻したコンピュータは古いパスワードを持っていて、DCは新しいパスワードを持っているため、ずれが起きます。PowerShellの Test-ComputerSecureChannel で状態を確かめられます。

サービスアカウント:サービスを表す

Windowsのサービスは、人がサインインしていなくても動き続けます。そのため、サービスは「だれの権限で動くか」を、サービスごとに設定で決めています。これがサービスの実行アカウントです。サービスの設定画面の「ログオン」タブで指定しているものです。

「サービスアカウント」という言葉は、少し広い意味で使われます。Microsoftのドキュメントでは、サービスに権限を与えるために作ったユーザーアカウントをサービスアカウントと呼んでいます。いっぽうで、gMSAのように、サービス専用に用意されたアカウントの種類もあります。サービスを動かす方法は、大きく分けると次のとおりです。

種類どんなものかパスワードの管理
Local SystemOSに最初からある、権限がとても強いアカウント。多くのOSのサービスが使うパスワードなし
Network Serviceローカルの権限を小さくしたアカウントパスワードなし
Local Serviceローカルの権限が小さく、ネットワークには匿名で出るパスワードなし
仮想アカウントサービスごとに自動で用意されるローカルのアカウント。名前は NT SERVICE\サービス名。SQL Serverの既定の設定などで使われる不要(Windowsが管理)
ドメインのユーザーアカウント
(従来のサービスアカウント)
サービス用に作ったふつうのユーザーアカウント。どのサーバでも使える管理者が決めて、手で変える
sMSA1台のサーバ専用の管理サービスアカウント自動
gMSA複数台のサーバで共有できる管理サービスアカウント自動(DCが管理)
dMSAWindows Server 2025で追加。従来のサービスアカウントを置き換えられ、認証を特定のコンピュータに結び付ける自動(ランダムな鍵)

このうち上の4つは、そのサーバの中だけのアカウントです。ネットワーク越しに別のサーバへアクセスするときは、別の名前で見えます。

サーバの中で動くサービスネットワーク上ではだれに見えるかLocal SystemNT AUTHORITY\SYSTEMFS01$(コンピュータ)Network ServiceNT AUTHORITY\NETWORK SERVICEFS01$(コンピュータ)仮想アカウントNT SERVICE\サービス名FS01$(コンピュータ)Local ServiceNT AUTHORITY\LOCAL SERVICE匿名(だれでもない)ドメインのアカウントCORP\svc-web、CORP\gmsa-web$そのアカウント自身上の3つは、ファイルサーバなど別のコンピュータからは FS01$ として認証・認可される
図3 サービスの実行アカウントと、ネットワーク上での見え方

Local System、Network Service、仮想アカウントで動くサービスは、ネットワークではコンピュータアカウント(FS01$)として認証されます。そのため、別のサーバの共有フォルダに、このサービスからアクセスさせたいときは、ACLにFS01$(またはFS01$が入っているグループ)を追加します。Local Serviceは匿名として扱われるので、ネットワーク越しのアクセスにはほとんど使えません。

ドメインのアカウント(ユーザーアカウント、sMSA、gMSA、dMSA)で動くサービスは、そのアカウント自身として認証されます。サービスごとに権限を分けたいときや、複数台のサーバで同じ名前で動かしたいときに使います。

従来のサービスアカウントの困りごと

ドメインのユーザーアカウントをサービスに使う方法は、昔からよく使われてきました。ただ、次のような困りごとがあります。

  • パスワードを管理者が決めて、各サーバのサービスの設定に入力する必要がある
  • パスワードを変えると、全部のサーバで入力し直す必要がある。そのため、無期限のパスワードのまま放置されがち
  • 人が決めたパスワードなので短くなりやすく、SPNを付けると「Kerberoasting」という攻撃でパスワードを割り出されるおそれがある

sMSA、gMSA、dMSAは、この困りごとを解決するために用意されたアカウントの種類です。名前の最後には、コンピュータアカウントと同じく $ が付きます。

gMSAのしくみ

gMSAでは、パスワードをDCが計算して管理します。どのサーバがパスワードを受け取ってよいかをアカウントに設定しておくと、許可されたサーバだけがDCから自動でパスワードを受け取ります。パスワードは240バイトのランダムな値で、既定では30日ごとに変わります。管理者はパスワードを知らなくてよく、複数台のサーバで同じgMSAを使えます。使うには、ドメインに「KDSルートキー」を一度作っておく必要があります。

サービスアカウントの選び方

どれを使うかは、サービスがどこで、どう動くかで決まります。目安は次のとおりです。

OSに付いてくるサービス?既定のアカウントのまま1台のサーバだけで動く?sMSA か 仮想アカウント複数台・負荷分散で動く?gMSA古いサービスアカウントを置き換えたい(WS2025)?dMSA上のどれにも対応していないユーザーアカウント(長く複雑なパスワード)上から順に当てはまるものを選ぶ
図4 サービスアカウントの選び方の目安

OSに付いてくるサービスは、既定のアカウントを変えないのが基本です。自分で入れるアプリは、製品のマニュアルで対応しているアカウントの種類を確かめてから選びます。gMSAなどに対応していないアプリでは、従来どおりユーザーアカウントを使いますが、その場合は長く複雑なパスワードにして、必要以上の権限を与えないようにします。

KerberosやSPNとの関係

ここまでの話を、Kerberosの側から見るとこうなります。

サービスの実行アカウントSPNを登録する場所サービスチケットを暗号化する鍵
Local System、Network Serviceなどコンピュータアカウント(FS01$)FS01$のパスワードから作った鍵
ドメインのユーザーアカウント(svc-web)svc-websvc-webのパスワードから作った鍵
gMSA(gmsa-web$)gmsa-web$gmsa-web$のパスワード(DCが管理)から作った鍵

DCとサービス側の両方が同じパスワード(鍵)を知っているので、DCが作ったサービスチケットをサービスが開けられます。実行アカウントを変えたら、SPNも新しいアカウントに移す必要があるのはこのためです。

確認に使うコマンド

PC(コマンドプロンプト):今サインインしているユーザーの名前とSIDを表示する

whoami /user

管理用PC(PowerShell):ユーザーアカウントの最後にパスワードを変えた日時を表示する

Get-ADUser -Identity user01 -Properties PasswordLastSet | Select-Object Name, PasswordLastSet

管理用PC(PowerShell):コンピュータアカウントのパスワードを最後に変えた日時とSPNを表示する

Get-ADComputer -Identity FS01 -Properties PasswordLastSet, ServicePrincipalNames | Select-Object Name, PasswordLastSet, ServicePrincipalNames

ドメインに参加したPC(PowerShell・管理者):DCとのセキュアチャネルが正常かを確かめる

Test-ComputerSecureChannel -Verbose

サーバ(PowerShell):サービスごとの実行アカウントを一覧で表示する

Get-CimInstance -ClassName Win32_Service | Select-Object Name, StartName | Sort-Object StartName

管理用PC(PowerShell):ドメインにある管理サービスアカウント(sMSA、gMSAなど)を一覧で表示する

Get-ADServiceAccount -Filter *

サーバ(PowerShell・管理者):このサーバでgMSAを使えるかを確かめる

Test-ADServiceAccount -Identity gmsa-web

Get-ADUser などのコマンドには、RSATのActive Directoryモジュールが必要です。

まとめ

アカウントひとことで
ユーザーアカウント人を表す。パスワードは本人が決め、DCはパスワードから作った鍵を持つ
コンピュータアカウントコンピュータを表す。名前の最後に $ が付き、パスワードはコンピュータが自動で決めて30日ごとに変える
サービスアカウントサービスを動かすためのアカウント。Local Systemなどのローカルのもの、ドメインのユーザーアカウント、gMSAなどの管理サービスアカウントがある
ネットワーク上の見え方Local System、Network Service、仮想アカウントはコンピュータアカウントとして、ドメインのアカウントはそのアカウント自身として見える
Kerberosとの関係サービスチケットは、サービスの実行アカウントの鍵で暗号化される。DCとサービスの両方がその鍵を知っている

「このサービスはだれとして動いているか」「そのアカウントのパスワードはだれが持っているか」を押さえておくと、アクセス許可の設定やKerberosのトラブルを考えるときの土台になります。

コメント