1. ホーム
  2. ウィンドウズ

[解決済み】「ローカルシステム」アカウントと「ネットワークサービス」アカウントの違い?

2022-03-24 09:30:53

質問

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

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

どのように解決するのか?

標準的なサービスアカウントの機能については、非常に多くの混乱があるため、簡単に説明することにします。

まず、実際のアカウントです。

  • ローカルサービス アカウント (優先)

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

    • 名前 NT AUTHORITY\LocalService
    • アカウントにパスワードがない場合(入力されたパスワード情報は無視されます)。
    • HKCUは、以下を表します。 ローカルサービス ユーザーアカウント
    • があります。 最小限の ローカルコンピューター上の特権
    • プレゼント 匿名 ネットワーク上の認証情報
    • SID : S-1-5-19
    • の下に独自のプロファイルがあります。 HKEY_USERS レジストリキー ( HKEY_USERS\S-1-5-19 )

  • ネットワークサービス アカウント

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

    • NT AUTHORITY\NetworkService
    • アカウントにパスワードがない(入力されたパスワード情報は無視されます)。
    • HKCUは、以下を表します。 ネットワークサービス ユーザーアカウント
    • があります。 最小限の ローカルコンピューター上の特権
    • は、コンピュータの認証情報を提示します(例 MANGO$ ) をリモートサーバーに送信します。
    • SID : S-1-5-20
    • の下に独自のプロファイルがあります。 HKEY_USERS レジストリキー ( HKEY_USERS\S-1-5-20 )
    • これを使用してタスクをスケジュールしようとする場合、次のように入力します。 NETWORK SERVICE ユーザーまたはグループの選択 ダイアログ

  • ローカルシステム アカウント (危険です、使わないでください!)

    管理者アカウントよりも完全に信頼できるアカウント。シングルボックスでこのアカウントにできないことはなく、マシンとしてネットワークにアクセスする権利を持っています(これにはActive Directoryとマシンアカウントに何か権限を与える必要があります)。

    • 名前 .\LocalSystem (を使用することもできます。 LocalSystem または ComputerName\LocalSystem )
    • アカウントにパスワードがない(入力されたパスワード情報は無視されます)。
    • SID : S-1-5-18
    • は、それ自身のプロファイルを持っていません ( HKCU デフォルト ユーザー)
    • があります。 広範囲 ローカルコンピュータの特権
    • は、コンピュータの認証情報を提示します(例. MANGO$ ) をリモートサーバーに送信します。

上記、ネットワークへのアクセスというのは、あくまでも SPNEGO (Negotiate)、NTLM、Kerberos などの認証機構は含まれず、その他の認証機構は含まれない。たとえば LocalService はインターネットにアクセスすることができます。

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

セキュリティの観点からは、自分のサービスが行うことに必要なパーミッションを正確に持ち、それ以外のことを行わない独自のサービスアカウントで実行することが常に望ましいと言えます。しかし、この方法の代償は、サービスアカウントの設定とパスワードの管理です。これは、各アプリケーションが管理する必要のある、バランスの取れた行為です。

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


Windows Server 2003の場合 あなた できない スケジュールされたタスクの実行 として

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

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

として動作するサービスは NetworkService は、ネットワーク上のマシンの認証情報を提示します。つまり、もしあなたのコンピューターが mango , は、マシンアカウントとして表示されます。 MANGO$ :