「ローカルシステム」アカウントと「ネットワークサービス」アカウントの違いは何ですか?


386

別のプロセスを生成するWindowsサービスを作成しました。このプロセスにより、COMオブジェクトが作成されます。サービスが「ローカルシステム」アカウントで実行される場合、すべてが正常に機能しますが、サービスが「ネットワークサービス」アカウントで実行される場合、外部プロセスは起動しますが、COMオブジェクトの作成に失敗します。COMオブジェクトの作成から返されるエラーは、標準のCOMエラーではありません(作成中のCOMオブジェクトに固有のエラーだと思います)。

では、「ローカルシステム」と「ネットワークサービス」の2つのアカウントの違いをどのように判断すればよいですか?これらのビルトインアカウントは非常に神秘的で、誰もそれらについてあまり知らないようです。

回答:


701

標準のサービスアカウントの機能については非常に混乱しているので、簡単に説明します。

まず、実際のアカウント:

  • LocalServiceアカウント(推奨)

    Network Serviceによく似た、制限付きのサービスアカウントで、標準の最小特権サービスを実行することを目的としています。ただし、ネットワークサービスとは異なり、匿名ユーザーとしてネットワークにアクセスします。

    • 名前: NT AUTHORITY\LocalService
    • アカウントにはパスワードがありません(入力したパスワード情報は無視されます)
    • HKCUはLocalServiceユーザーアカウントを表します
    • ローカルコンピュータで最小限の権限を持っている
    • 匿名で提示ネットワーク上で資格情報をします
    • SID:S-1-5-19
    • HKEY_USERSレジストリキー(HKEY_USERS\S-1-5-19)の下に独自のプロファイルがあります

     

  • NetworkServiceアカウント

    標準の特権サービスを実行するための制限されたサービスアカウント。このアカウントは、ローカルシステム(または管理者)よりもはるかに制限されていますが、マシンとしてネットワークにアクセスする権利があります(上記の警告を参照)。

    • NT AUTHORITY\NetworkService
    • アカウントにはパスワードがありません(入力したパスワード情報は無視されます)
    • HKCUはNetworkServiceを表しますユーザーアカウントをます
    • 持って最小限ローカルコンピュータで権限を
    • コンピュータの資格情報(例: MANGO$)をリモートサーバーに
    • SID:S-1-5-20
    • HKEY_USERSレジストリキー(HKEY_USERS\S-1-5-20)の下に独自のプロファイルがあります
    • それを使用してタスクをスケジュールしようとする場合NETWORK SERVICEは、[ユーザーまたはグループの選択 ]ダイアログに入ります。

     

  • LocalSystemアカウント (危険、使用しないでください!)

    管理者アカウントよりも完全に信頼されたアカウント。このアカウントでは実行できない単一のボックスには何もありません。また、マシンとしてネットワークにアクセスする権利があります(これにはActive Directoryが必要で、マシンアカウントに何かの権限を付与する必要があります)。

    • 名前:(または.\LocalSystemも使用できます)LocalSystemComputerName\LocalSystem
    • アカウントにはパスワードがありません(入力したパスワード情報は無視されます)
    • SID:S-1-5-18
    • 独自のプロファイルがない(デフォルトのユーザーをHKCU表す)
    • ローカルコンピュータに対して広範な権限を持っている
    • コンピュータの資格情報(などMANGO$)をリモートサーバーに 提示する

     

上記のネットワークへのアクセスについて説明するとき、これはSPNEGO(ネゴシエート)、NTLM、およびKerberos のみを指し、他の認証メカニズムは指しません。たとえば、次のように実行される処理LocalServiceは引き続きインターネットにアクセスできます。

標準のアカウントアカウントとして実行する場合の一般的な問題は、デフォルトの権限を変更すると、そのアカウントで実行できるすべてのことを拡張できることです。したがって、データベースにDBOを付与すると、ローカルサービスまたはネットワークサービスとして実行されているサービスがそのデータベースにアクセスできるだけでなく、それらのアカウントとして実行されている他のすべてのサービスもアクセスできます。すべての開発者がこれを行うと、コンピューターは実質的に何でも実行できるアクセス許可を持つサービスアカウントを持ちます(具体的には、そのアカウントに付与されたさまざまな追加の特権すべてのスーパーセット)。

セキュリティの観点からは、サービスの機能を実行するために必要な権限のみを備えた独自のサービスアカウントとして実行することが常に望ましいです。ただし、このアプローチのコストは、サービスアカウントのセットアップとパスワードの管理です。これは、各アプリケーションが管理する必要があるバランスをとる行為です。

特定のケースでは、DCOMまたはCOM +のアクティブ化が特定のアカウントセットに制限されていることがおそらく発生している問題です。Windows XP SP2、Windows Server 2003以降では、アクティベーション権限が大幅に制限されていました。コンポーネントサービスMMCスナップインを使用して、特定のCOMオブジェクトを調べ、アクティブ化のアクセス許可を確認する必要があります。マシンアカウントとしてネットワーク上の何にもアクセスしない場合は、ローカルサービス(基本的にオペレーティングシステムであるローカルシステムではない)の使用を真剣に検討する必要があります。


Windows Server 2003では、スケジュールされたタスクを次のように実行することはできません。

  • NT_AUTHORITY\LocalService (別名ローカルサービスアカウント)、または
  • NT AUTHORITY\NetworkService (別名Network Serviceアカウント)。

その機能はタスクスケジューラ2.0でのみ追加されました、Windows Vista / Windows Server 2008以降にのみ存在するでのみ。

として実行されているサービスNetworkServiceは、ネットワーク上のマシン資格情報を提示します。お使いのコンピュータが呼び出された場合、この手段mangoそれがマシンアカウントとして存在します MANGO$

ここに画像の説明を入力してください


7
私はと思いマネージドサービスアカウントは、アカウントを設定するの痛みの一部を削除し、パスワードを管理する(というか、ドメイン管理者またはデリゲートにそれを渡す。)
カール・G

1
こんにちは、説明ありがとうございます。しかし、質問があります-ローカルシステム/ネットワークサービスアカウントを使用すると、Active Directoryのコンテナーにエントリを追加/削除できます(Active DirectoryのコンテナーがこれらのWindowsサービスが実行されているコンピューターに完全なアクセス許可を付与している場合)。ドメインユーザーの1人としてサービスを実行したが、ローカルシステム/ネットワークサービス(詳細についてはstackoverflow.com/questions/20943436/…)として実行しなかった場合、すべてが機能していることに注意してください。よろしくお願いします
Dreamer

1
ええ、そうすべきです。この質問はより抽象的なものであり、これは特定の実装であるため、直接お答えします。
Peter Oehlert、2014年

7
「匿名」ユーザーは、「認証済みユーザー」のメンバーであるだけでなく、Windowsの「全員」のメンバーでもないことに注意してください。Windowsネットワークでは、「匿名」は「匿名」に明示的に許可されているリソースにのみアクセスできます-デフォルトでは何もありません。
デビッド2016年

1
@HakamFostok私は多くの参照を持っていません。私が正しく思い出すと、Dan Brownは彼の著書 『Programming Windows Security』でその一部を取り上げました。WindowsヘルプとMSDNドキュメントにはたくさんありますが、具体的なリファレンスはありません。プログラミングウィンドウに関するJeff Richterの本、およびSoloman&RussinovichによるInside Windows(3rdまたは4th Ed)にもいくつかの本があります。
Peter Oehlert
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.