ジョブ オブジェクトのセキュリティとアクセス権

Microsoft Windows セキュリティ モデルを使用すると、ジョブ オブジェクトへのアクセスを制御できます。 セキュリティの詳細については、「 アクセス制御モデル」を参照してください。

CreateJobObject 関数を呼び出すときに、ジョブ オブジェクトのセキュリティ記述子を指定できます。 NULL を指定すると、ジョブ オブジェクトは既定のセキュリティ記述子を取得します。 ジョブ オブジェクトの既定のセキュリティ記述子の ACL は、作成者のプライマリ トークンまたは偽装トークンから取得されます。

ジョブ オブジェクトのセキュリティ記述子を取得または設定するには、GetNamedSecurityInfo、SetNamedSecurityInfoGetSecurityInfo、または SetSecurityInfo 関数を呼び出します。

ジョブ オブジェクトの有効なアクセス権には、 標準のアクセス権 と、ジョブ固有のアクセス権が含まれます。 次の表に、すべてのオブジェクトで使用される標準のアクセス権を示します。

説明
DELETE (0x00010000L) オブジェクトを削除するために必要です。
READ_CONTROL (0x00020000L) SACL に情報を含めず、オブジェクトのセキュリティ記述子の情報を読み取るために必要です。 SACL を読み書きするには、 ACCESS_SYSTEM_SECURITY アクセス権を要求する必要があります。 詳細については、「 SACL Access Right」を参照してください。
SYNCHRONIZE (0x00100000L) 同期にオブジェクトを使用する権限。 これにより、スレッドはオブジェクトがシグナル状態になるまで待機できます。
WRITE_DAC (0x00040000L) オブジェクトのセキュリティ記述子で DACL を変更するために必要です。
WRITE_OWNER (0x00080000L) オブジェクトのセキュリティ記述子の所有者を変更するために必要です。

 

次の表に、ジョブ固有のアクセス権を示します。

説明
JOB_OBJECT_ALL_ACCESS (0x1F001F) 有効なすべてのジョブ オブジェクトアクセス権を結合します。
JOB_OBJECT_ASSIGN_PROCESS (0x0001) AssignProcessToJobObject 関数を呼び出してジョブ オブジェクトにプロセスを割り当てるには必須です。
JOB_OBJECT_QUERY (0x0004) 属性やアカウンティング情報など、ジョブ オブジェクトに関する特定の情報を取得するために必要です ( QueryInformationJobObjectIsProcessInJob を参照)。
JOB_OBJECT_SET_ATTRIBUTES (0x0002) SetInformationJobObject 関数を呼び出してジョブ オブジェクトの属性を設定するために必要です。
JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) このフラグはサポートされていません。 ジョブ オブジェクトに関連付けられているプロセスごとに、セキュリティ制限を個別に設定する必要があります。Windows Server 2003 および Windows XP:JobObjectSecurityLimitInformation 情報クラスを使用して SetInformationJobObject 関数を呼び出して、ジョブ オブジェクトに関連付けられているプロセスのセキュリティ制限を設定するために必要です。 このフラグのサポートは、Windows Vista および Windows Server 2008 で削除されました。
JOB_OBJECT_TERMINATE (0x0008) TerminateJobObject 関数を呼び出して、ジョブ オブジェクト内のすべてのプロセスを終了するために必要です。

 

CreateJobObject によって返されるハンドルは、ジョブ オブジェクトにJOB_OBJECT_ALL_ACCESSアクセスできます。 OpenJobObject 関数を呼び出すと、要求されたアクセス権がオブジェクトのセキュリティ記述子に対してチェックされます。 ジョブ オブジェクトが 入れ子になったジョブの階層内にある場合、ジョブ オブジェクトにアクセスできる呼び出し元は、階層内のすべての子ジョブに暗黙的にアクセスできます。

オブジェクトの SACL の読み取 または書き込みを行う場合は、ジョブ オブジェクトへのACCESS_SYSTEM_SECURITYアクセス権を要求できます。 詳細については、「Access-Control Lists (ACL)」および「SACL Access Right」を参照してください。

セキュリティ制限は、ジョブ オブジェクト自体に設定するのではなく、ジョブ オブジェクトに関連付けられているプロセスごとに個別に設定する必要があります。 詳細については、「 セキュリティとアクセス権の処理」を参照してください。

Windows Server 2003 および Windows XP:SetInformationJobObject 関数を使用して、ジョブ オブジェクトのセキュリティ制限を設定できます。 この機能は、Windows Vista および Windows Server 2008 で削除されました。