2

背景:私はサービスを作成しており、必要なだけの特権を与えたいと考えています。NT AUTHORITY LocalServiceのようなネットワークアクセスのない仮想サービスアカウント

バーチャルアカウント(バーチャルサービスアカウントとも呼ばれる)は、最小限の権限を必要とするが、ドメイン環境内のコンピュータIDを使用してネットワークにアクセスするサービスのアカウントを自動的に管理するWindows 7/2008R2の新機能であるsparsely documentedです。

私のサービスはネットワークアクセスを必要としないため、私はLocalServiceを使用していますが、ファイル/ etcへのアクセスを許可すると、そのアカウントとして実行されているすべてのサービスへのアクセスを許可しています。

私が使用できる特権アカウントはありますか?

答えて

2

サービスを実行するアカウントを変更する必要はありません。 LocalServiceは問題ありません。

代わりに、サービスをnon-zero SID typeに設定します。つまり、SERVICE_SID_TYPE_UNRESTRICTEDまたはSERVICE_SID_TYPE_RESTRICTEDのいずれかを指定します。これは、ChangeServiceConfig2()関数とSERVICE_CONFIG_SERVICE_SID_INFOオプションを使用して行うことができます。

LocalServiceではなく、NT SERVICE\myserviceのサービスSIDを使用して、ファイルやその他の保護されたリソースへのアクセスを許可できます。これにより、あなたのサービスにのみアクセスが許可されます。 (同じプロセスを共有する他のサービスも同じですが、ほとんどのサードパーティのサービスは独自のプロセスで動作します)

最低限の特権では、SERVICE_SID_TYPE_RESTRICTEDを使用してください。つまり、サービスは、Everyone、サービスSID、ログオンセッションSID、またはWRITE_RESTRICTEDのいずれかに明示的にアクセスを許可する保護されたオブジェクトにのみアクセスできます。 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFOオプションを使用して、サービスに付与された権限を減らす必要があります。多くのサービスには特権は一切必要ありません。 (この場合、空リストではなくSE_CHANGE_NOTIFY_NAMEを指定する必要があるかもしれませんが、私は間違っているかもしれません)

+0

これは 'sc'ユーティリティで実現できますか?現時点では、私は簡単な/わかりやすい3行のバッチスクリプトを使ってインストールしていますが、P/Invokingを好まないのが良いでしょう。 – Fowl

+2

'sc qsidtype'はSIDタイプを設定し、' sc qprivs'は必要な特権を設定します。 –

関連する問題