別のプロセスを生成する Windows サービスを作成しました。このプロセスは COM オブジェクトを作成します。サービスが「ローカル システム」アカウントで実行される場合、すべて正常に動作しますが、サービスが「ネットワーク サービス」アカウントで実行される場合、外部プロセスは起動しますが、COM オブジェクトの作成に失敗します。COM オブジェクトの作成から返されるエラーは、標準の COM エラーではありません (作成中の COM オブジェクトに固有のエラーだと思います)。
では、「ローカル システム」と「ネットワーク サービス」という 2 つのアカウントの違いをどのように判断すればよいのでしょうか。これらの組み込みアカウントは非常に謎めいていて、誰もそれらについてあまり知らないようです。
ベストアンサー1
標準サービス アカウントの機能については多くの混乱があるため、簡単に説明してみたいと思います。
まず実際のアカウント:
ローカルサービスアカウント(推奨)
Network Service に非常によく似た制限付きサービス アカウントで、標準の最小権限サービスを実行することを目的としています。ただし、Network Service とは異なり、匿名ユーザーとしてネットワークにアクセスします。
- 名前:
NT AUTHORITY\LocalService
- アカウントにパスワードがありません(入力したパスワード情報は無視されます)
- HKCUはLocalServiceユーザーアカウントを表します
- ローカルコンピュータ上で最小限の権限を持つ
- ネットワーク上で匿名の資格情報を提示する
- SID :S-1-5-19
- HKEY_USERSレジストリキー(
HKEY_USERS\S-1-5-19
)の下に独自のプロファイルがあります
- 名前:
-
標準の特権サービスを実行するための制限付きサービス アカウント。このアカウントは、ローカル システム (または管理者) よりもはるかに制限されていますが、マシンとしてネットワークにアクセスする権限は保持されます (上記の注意事項を参照)。
NT AUTHORITY\NetworkService
- アカウントにパスワードがありません(入力したパスワード情報は無視されます)
- HKCUはNetworkServiceユーザーアカウントを表します
- ローカルコンピュータ上で最小限の権限を持つ
- コンピュータの資格情報(例
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$
)をリモートサーバーに提示する
- 名前: (または
上記でネットワークへのアクセスについて言及しているが、これはスプネゴ(ネゴシエート)、NTLM、Kerberos のみをサポートし、他の認証メカニズムには対応していません。たとえば、として実行されている処理は、LocalService
引き続きインターネットにアクセスできます。
標準のすぐに使えるアカウントとして実行する場合の一般的な問題は、デフォルトの権限を変更すると、そのアカウントとして実行されているすべてのものが実行できる操作の範囲が拡大されることです。したがって、データベースに DBO を付与すると、ローカル サービスまたはネットワーク サービスとして実行されているサービスがそのデータベースにアクセスできるだけでなく、それらのアカウントとして実行されている他のすべてのものもアクセスできるようになります。すべての開発者がこれを行うと、コンピューターには実質的にすべての操作を実行する権限 (より具体的には、そのアカウントに付与されたさまざまな追加権限のスーパーセット) を持つサービス アカウントが設定されます。
セキュリティの観点からは、サービスを実行するために必要な権限だけを持つ独自のサービス アカウントとして実行することが常に望ましいです。ただし、このアプローチには、サービス アカウントの設定とパスワードの管理というコストがかかります。これは、各アプリケーションが管理する必要があるバランスの取れた作業です。
あなたの特定のケースでは、おそらく DCOM または COM+ のアクティベーションが特定のアカウント セットに制限されているという問題が発生していると思われます。Windows XP SP2、Windows Server 2003 以降では、アクティベーション アクセス許可が大幅に制限されていました。コンポーネント サービス MMC スナップインを使用して、特定の COM オブジェクトを調べ、アクティベーション アクセス許可を確認してください。マシン アカウントとしてネットワーク上の何もアクセスしていない場合は、ローカル サービス(基本的にオペレーティング システムであるローカル システムではありません) の使用を真剣に検討する必要があります。
Windows Server 2003の場合スケジュールされたタスクを実行できませんとして
NT_AUTHORITY\LocalService
(別名ローカルサービスアカウント)、またはNT AUTHORITY\NetworkService
(別名、ネットワーク サービス アカウント)。
その機能はタスクでのみ追加されましたスケジューラ 2.0これは、Windows Vista/Windows Server 2008 以降にのみ存在します。
として実行されているサービスは、NetworkService
ネットワーク上でマシンの資格情報を提示します。つまり、コンピュータが と呼ばれていた場合mango
、マシンアカウントとして表示されます MANGO$
: