web-dev-qa-db-ja.com

'Local System'アカウントと 'Network Service'アカウントの違いは?

私は別のプロセスを生み出すWindowsサービスを書きました。このプロセスはCOMオブジェクトを作成します。サービスが 'Local System'アカウントで実行されている場合はすべて正常に機能しますが、 'Network Service'アカウントで実行されている場合は外部プロセスは起動しますがCOMオブジェクトの作成に失敗します。 COMオブジェクトの作成から返されるエラーは、標準のCOMエラーではありません(作成中のCOMオブジェクトに固有のものだと思います)。

では、2つのアカウント「Local System」と「Network Service」の違いをどのように判断すればよいのでしょうか。これらの組み込みアカウントは非常に不思議に思われ、誰もそれらについて多くを知っているようには見えません。

364
jmatthias

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

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

  • LocalServiceaccount (推奨)

    Network Serviceに非常に似ており、標準の最小特権サービスを実行することを意図した限定サービスアカウント。ただし、Network Serviceとは異なり、 Anonymous ユーザーとしてネットワークにアクセスします。

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

  • NetworkServiceアカウント

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

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

  • LocalSystemaccount(危険です、使用しないでください!)

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

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

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

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

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

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


Windows Server 2003では youcannotスケジュールされたタスクを実行 as

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

その機能は、Windows Vista/Windows Server 2008以降にのみ存在するTask Scheduler 2. でのみ追加されました。

NetworkServiceとして実行されるサービスは、ネットワーク上のマシン資格情報を提示します。これは、コンピューターがmangoという名前の場合、 コンピューターアカウントとして表示されるMANGO$

enter image description here

669
Peter Oehlert