前の答えは質問に直接対処するようには見えなかったので、追加するつもりでした。
- 私の計画は、サービスをデフォルトの「ローカルサービス」アカウントとして実行することです。読み取り/書き込みを行うフォルダーの「ローカルサービス」アカウントに「フルコントロール」権限を明示的に設定します。上記は良い計画だと思います。
個人的には、この計画に大きな問題は見当たりません。BUILTINの場合、選択は次のいずれかです。
- LOCALSYSTEMとして実行-このサービスが危険にさらされた場合、攻撃者はEverythingをすぐに所有します。
- LOCALSERVICEとして実行-したがって、このサービス、またはこのアカウントで実行されている他の多くのサービスのいずれかが危険にさらされた場合、攻撃者は1つの追加ディレクトリにアクセスできます。*
おそらく、2番目のオプションを使用できるようにいくつかの追加のACLを追加することをお勧めします。はい。低特権でありながらセキュリティが重視されるサービスの最も安全なオプションは、カスタマイズされた低特権サービスアカウントで実行することです。ただし、展開するすべてのサービスに対して新しいアカウント/管理パスワードを作成する場合を除き、重要でない重要でないタスクにLocalServiceを使用することはそれほどひどいことではありません。そのディレクトリまたはデータベースにあるもの、侵害された場合の影響など、これらの考慮事項に基づいて責任ある決定を行う必要があります。
繰り返しになりますが、少なくとも特権の原則に従って、本当に十分でないFull Control
場合にのみ設定してくださいModify
。
2.私の質問は、私が読み書きしているフォルダに対して、フルコントロールアクセスで「ネットワークサービス」ロールを設定する必要があるかどうかです。「ネットワークサービス」アカウントのセットアップが必要な場合、私のサービスは別のサーバーへのデータベース接続を使用するため、疑問に思っています。
データベースにWindows Integrated / SSPIログインが必要な場合は、はい、どこでもNetworkService(またはドメインサービスアカウント)を使用する必要があります。つまり、RunAsとディレクトリのアクセス許可です。また、このデータベースへのコンピューター名$またはドメインアカウントへのアクセスを許可したとします。私はあなたがそれをしているとは思わないので、通常のユーザー名/パスワード認証を使用する場合、LocalServiceですべてを実行できるはずです。そのディレクトリに対する1つのアカウント権限のみを付与する必要があり、RunAsで使用する権限は両方ではありません。
3.「ネットワークサービス」アカウントの機能を誤解している可能性があります。
LocalService / NetworkServiceは、ローカルコンピューター上のほぼ同一のアカウントです。主な違いは、ネットワーク上でできることです。NSは、ネットワーク上で実際の(コンピューター)アカウントとして表示されるため、一部のネットワークリソースにアクセスできます。ただし、LSはANONYMOUSとして表示されるため、ネットワーク上のほとんどすべてが拒否されます。
ちなみに、これではサービスではなくスケジュールタスクを使用する必要があります。
* Vista以降、サービスの分離により、侵害されたLocalServiceプロセスは別のプロセスを簡単に攻撃できません。各LocalService / NetworkServiceサービスプロセス/インスタンスは、Windows 2003とは異なり、独自のログオンセッションSID(一意の所有者)を取得します。しかし、これが完璧で、ファイルおよびリソースのDACL脆弱性を完全に軽減するかどうかはわかりません。このコンテキストでは、制限されたSIDと 書き込み制限されたトークンについて説明します。