次の方法で共有


タスク セキュリティの強化

タスクセキュリティ強化機能を使用すると、タスク所有者は必要最小限の特権でタスクを実行できます。 この機能は既定で有効になっており、タスク所有者は、タスク プロセス トークンのセキュリティ識別子の種類とタスクに必要な特権配列を使用してさらに調整できます。

タスク プロセス トークン SID の種類とタスクが必要な特権配列

タスク定義レベルで ProcessTokenSidType を 指定すると、タスク所有者は、"none" SID 型または "無制限" SID 型で実行するタスク プロセスを要求できます。 フィールドがタスク定義に存在する場合、検証により、タスク UserId に、オペレーティング システムの組み込みサービス アカウントの 1 つ ("NETWORK SERVICE" または "LOCAL SERVICE" の名前または対応する SID 文字列) が含まれていることが保証されます。

SID の種類 "none" は、タスクがプロセス トークン SID を含まないプロセスで実行されることを意味します (プロセス トークン グループリストに変更は加えられません)。 その場合のタスク プリンシパル アカウント SID (LocalService/NetworkService) には、プロセス トークンへのフル アクセス権があります。

"無制限" SID の種類は、タスク SID が完全なタスク パスから派生し、プロセス トークン グループの一覧に追加されることを意味します。 たとえば、ローカル サービス アカウントで実行される \Microsoft\Windows\RAC\RACTask では、タスク SID は Microsoft-Windows-RAC-RACTask という名前から派生します。"\" は無効なユーザー名文字であるため、"\" は "\" に置き換えられます。 タスク SID の既知のグループ名は、"NT TASK\<modified full task path>" (domainname\username 形式) になります。 プロセス トークンの既定の随意アクセス制御リスト (DACL) も変更され、タスク SID とローカル システム SID の完全な制御と、タスク プリンシパル アカウント SID への読み取り制御が許可されます。 "schtasks.exe /showsid /tn <完全なタスク パス>" には、タスクに対応するタスク SID が表示されます。

COM 以外のタスク アクションが起動すると、スケジュール エンジンはタスク プリンシパル アカウントにログを記録し、プロセス トークンを取得し、トークンが持つ特権の一覧を照会し、それを RequiredPrivileges で指定された特権リストと比較します。 後者で特権が指定されていない場合は、SE_PRIVILEGE_REMOVEDとしてマークされます。 実行可能アクションは、CreateProcessAsUser API を使用して、結果のトークン ハンドルで開始されます。

COM タスク アクションは、起動時に、taskhost.exe プロセスによってアクティブ化する必要があります。 スケジュール エンジンは、実行中の各taskhost.exeのコンテキスト ブロックに対して、開始タスクと同じアカウントでクエリを実行します。 開始タスクに必要な特権のスーパーセットを使用してホスト プロセスが開始されたことが検出された場合、そのタスクはそのプロセスでホストされます。 このようなプロセスが見つからない場合は、タスク プリンシパル アカウントの taskhosts で実行されているすべてのタスクのセキュリティ強化情報と、指定された RequiredPrivileges マスクを組み合わせて、taskhost.exeの新しいインスタンスを起動します。

RequiredPrivileges がタスク定義に存在しない場合、SeImpersonatePrivilege を使用しないタスク プリンシパル アカウントの既定の特権がタスク プロセスに使用されます。 タスク定義に ProcessTokenSidType が存在しない場合は、既定値として "unrestricted" が使用されます。

タスク登録情報

タスク スケジューラについて

タスクのセキュリティ コンテキスト