다음을 통해 공유


작업 보안 강화

작업 보안 강화 기능을 사용하면 작업 소유자가 최소한의 필수 권한으로 작업을 실행할 수 있습니다. 이 기능은 기본적으로 사용하도록 설정되어 있으며 작업 소유자는 작업 프로세스 토큰 보안 식별자 유형 및 작업 필수 권한 배열을 사용하여 추가 조정을 수행할 수 있습니다.

작업 프로세스 토큰 SID 유형 및 작업 필수 권한 배열

작업 정의 수준에서 ProcessTokenSidType 을 지정하면 작업 소유자가 "none" SID 형식 또는 "무제한" SID 형식으로 작업 프로세스를 실행하도록 요청할 수 있습니다. 필드가 작업 정의에 있는 경우 유효성 검사를 통해 UserId 작업에 "NETWORK SERVICE" 또는 "LOCAL SERVICE"라는 운영 체제 기본 제공 서비스 계정 중 하나에 대한 이름 또는 해당 SID 문자열이 포함되어 있는지 확인합니다.

SID 유형 "none"은 프로세스 토큰 SID가 포함되지 않은 프로세스에서 태스크가 실행됨을 의미합니다(프로세스 토큰 그룹 목록에 변경 내용이 없음). 이 경우 작업 주체 계정 SID(LocalService/NetworkService)는 프로세스 토큰에 대한 모든 권한을 가집니다.

"무제한" SID 유형은 작업 SID가 전체 작업 경로에서 파생되고 프로세스 토큰 그룹 목록에 추가됨을 의미합니다. 예를 들어 로컬 서비스 계정에서 실행되는 \Microsoft\Windows\RAC\RACTask는 "\"가 잘못된 사용자 이름 문자이므로 "-"가 "\"로 대체되는 Microsoft-Windows-RAC-RACTask 이름에서 파생됩니다. 작업 SID에 대해 잘 알려진 그룹 이름은 "NT TASK\<modified 전체 작업 경로>"(domainname\username 형식)입니다. 또한 프로세스 토큰 기본 DACL(임의 액세스 제어 목록)은 작업 SID 및 로컬 시스템 SID에 대한 모든 권한을 허용하고 작업 주체 계정 SID에 대한 읽기 제어를 허용하도록 수정됩니다. "schtasks.exe /showsid /tn <전체 작업 경로>"는 작업에 해당하는 작업 SID를 표시합니다.

COM이 아닌 작업 작업이 시작되면 예약 엔진은 작업 주체 계정에 로그하고, 프로세스 토큰을 가져오고, 토큰에 있는 권한 목록을 쿼리한 다음, RequiredPrivileges에 지정된 권한 목록과 비교합니다. 후자에 권한이 지정되지 않은 경우 SE_PRIVILEGE_REMOVED 표시됩니다. 그런 다음 CreateProcessAsUser API를 사용하여 결과 토큰 핸들로 실행 작업이 시작됩니다.

COM 작업 작업이 시작되면 taskhost.exe 프로세스에서 활성화해야 합니다. 예약 엔진은 시작 작업과 동일한 계정으로 실행 중인 각 taskhost.exe 컨텍스트 블록을 쿼리합니다. 호스트 프로세스가 시작 작업에 필요한 권한의 상위 집합으로 시작된 것으로 확인되면 해당 작업이 해당 프로세스에서 호스트됩니다. 이러한 프로세스를 찾지 못하면 작업 주체 계정의 작업 호스트에서 실행 중인 모든 작업의 강화 정보를 지정된 RequiredPrivileges 마스크와 결합한 다음 taskhost.exe 새 instance 시작합니다.

작업 정의에 RequiredPrivileges가 없으면 SeImpersonatePrivilege가 없는 작업 주체 계정의 기본 권한이 작업 프로세스에 사용됩니다. ProcessTokenSidType이 작업 정의에 없는 경우 "무제한"이 기본값으로 사용됩니다.

작업 등록 정보

작업 스케줄러 정보

작업에 대한 보안 컨텍스트