Windows/Windows Programming

잡 (Job) - 프로세스 제약사항 설정 2

MOLOKINI 2016. 5. 28. 13:48

잡에 대한 프로세스 제약사항 설정 방법 중

- JobObjectExtendedLimitInformation

- JobObjectBasicUIRestrictions

- JobObjectSecurityLimitInformation

에 대해 알아보도록 하겠습니다.

 

JobObjectExtendedLimitInformation

 

 

 

 

 멤버 기능 
 BasicLimitInformation BasicLimitInformation 구조체
- 이전 포스팅 참고
 IoInfo 사용하지 않음 
 ProcessMemoryLimit 잡 내의 한 프로세스가 사용할 수 있는 최대 메모리 사용량을 결정
- BasicLimitInformation 구조체의 LimitFlag에 JOB_OBJECT_LIMIT_PROCESS_MEMORY 플래그가 세팅되어 있어야 함
 JobMemoryLimit 잡 전체에서 커밋될 수 있는 최대 메모리 사용량을 결정 
- BasicLimitInformation 구조체의 LimitFlag에 JOB_OBJECT_LIMIT_JOB_MEMORY 플래그가 세팅되어 있어야 함
 PeakProcessMemoryUsed  현재 잡 내의 한 프로세스가 사용할 수 있는 최대 메모리 사용량을 리턴
 PeakJobMemoryUsed  현재 잡 전체가 사용할 수 있는 최대 메모리 사용량을 리턴

 

JobObjectBasicUIRestrictions

 

 

 멤버 기능 
 UIRestrictionClass  비트 플래그의 조합으로 아래 표 참고 

 

 

 

 플래그 기능 
 JOB_OBJECT_UILIMIT_EXITWINDOWS  잡 내의 프로세스가 ExitWindowsEx 함수를 이용해 로그오프, 셧다운, 리부팅, 시스템 전원 끄기를 할 수 없도록 설정
 JOB_OBJECT_UILIMIT_READCLIPBOARD  잡 내의 프로세스가 클립보드의 내용을 읽을 수 없도록 설정
 JOB_OBJECT_UILIMIT_WRITECLIPBOARD  잡 내의 프로세스가 클립보드의 내용을 삭제할 수 없도록 설정 
 JOB_OBJECT_UILIMIT_SYSTEMPARAMTERS  잡 내의 프로세스가 SystemParametersInfo 함수를 이용해 시스템 매개변수들을 변경하지 못하도록 함
 JOB_OBJECT_UILIMIT_DISPLAYSETTINGS  잡 내의 프로세스가 ChangeDisplaySettings 함수를 이용해 디스플레이 설정을 변경하지 못하도록 함
 JOB_OBJECT_UILIMIT_GLOBALATOMS  잡이 자신만의 Global Atom Table 을 가질 수 있도록 하고, 잡 내의 프로세스들이 이 Global Atom Table에 접근할 수 있도록 한다.
 JOB_OBJECT_UILIMIT_DESKTOP  잡 내의 프로세스가 CreateDesktop이나 SwitchDesktop 함수를 이용해 새로운 데스크탑을 생성하거나 다른 데스크탑으로 변경하지 못하도록 함
 JOB_OBJECT_UILIMIT_HANDLES  잡 내의 프로세스가 잡 외부의 프로세스에 의해 생성된 유저 오브젝트를 사용할 수 없도록 설정

 

JobObjectSecurityLimitInformation

- PTOKEN_GROUPS, PTOKEN_PRIVILEGES, PTOKEN_GROUPS 구조체 정보는 아래 MSDN을 참조

- https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms684159(v=vs.85).aspx

 

 

멤버  기능 
 SecurityLimiFlags 관리자 권한으로 실행되는 것을 거부하거나, 필터되지 않은 토큰의 접근 거부, 특정 액세스 토큰을 강제로 요구하거나 특정 SID나 권한을 사용하지 못하도록 설정하는 플래그 
 JobToken  잡 내의 모든 프로세스가 사용할 수 있는 액세스 토큰 지정
 SidsToDisable  액세스 확인을 수행하지 못하도록 하는 Security ID
 PrivilegesToDelete  액세스 토큰으로 부터 어떤 권한을 제거할지 나타냄
 RestrictedSids  액세스 토큰에 추가할 접근 거부 SID 목록을 지정

 

SecurityLimitFlags

 

플래그  기능 
JOB_OBJECT_SECURITY_FILTER_TOKENS  필터되지 않은 토큰의 접근을 거부, 
- SidsToDisable, PrivilegesToDelete, RestrictSids 셋 중 하나는 세팅되어있어야 함
- 위 항목들에 명시된 Sid를 갖지 않으면 실행이 제한됨
JOB_OBJECT_SECURITY_NO_ADMIN   잡 내의 프로세스가 관리자 권한으로 실행되는 것을 막음 
JOB_OBJECT_SECURITY_ONLY_TOKEN  잡 내의 프로세스들이 특정 액세스 토큰을 갖고 실행되도록 설정
- 그 특정 액세스 토큰은 JobToken 멤버를 의미
JOB_OBJECT_SECURITY_RESTRICTED_TOKEN  잡 내의 프로세스들이 CreateRestrictedToken 함수로 생성되지 않은 액세스 토큰을 가지고 실행되지 못하도록 함