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 함수로 생성되지 않은 액세스 토큰을 가지고 실행되지 못하도록 함 |