私は別のプロセスを生み出すWindowsサービスを書きました。このプロセスはCOMオブジェクトを作成します。サービスが 'Local System'アカウントで実行されている場合はすべて正常に機能しますが、 'Network Service'アカウントで実行されている場合は外部プロセスは起動しますがCOMオブジェクトの作成に失敗します。 COMオブジェクトの作成から返されるエラーは、標準のCOMエラーではありません(作成中のCOMオブジェクトに固有のものだと思います)。
では、2つのアカウント「Local System」と「Network Service」の違いをどのように判断すればよいのでしょうか。これらの組み込みアカウントは非常に不思議に思われ、誰もそれらについて多くを知っているようには見えません。
標準サービスアカウントの機能については非常に混乱しているので、簡単に説明します。
まず、実際のアカウント:
LocalServiceaccount (推奨)
Network Serviceに非常に似ており、標準の最小特権サービスを実行することを意図した限定サービスアカウント。ただし、Network Serviceとは異なり、 Anonymous ユーザーとしてネットワークにアクセスします。
NT AUTHORITY\LocalService
HKEY_USERS\S-1-5-19
)の下に独自のプロファイルがあります標準の特権サービスを実行するための限定サービスアカウント。このアカウントは、ローカルシステム(または管理者)よりもはるかに制限されていますが、マシンとしてネットワークにアクセスする権利があります(上記の注意事項を参照)。
NT AUTHORITY\NetworkService
MANGO$
)をリモートサーバーに提示しますHKEY_USERS\S-1-5-20
)の下に独自のプロファイルがありますNETWORK SERVICE
を入力しますLocalSystemaccount(危険です、使用しないでください!)
管理者アカウントよりも完全に信頼されたアカウント。単一のボックスにはこのアカウントが実行できないものはなく、マシンとしてネットワークにアクセスする権利があります(これにはActive Directoryが必要であり、マシンアカウントに何かへのアクセス許可を付与する必要があります)
.\LocalSystem
(LocalSystem
またはComputerName\LocalSystem
も使用できます)HKCU
はdefaultユーザーを表します)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$
: