AppContainer 구현
AppContainer는 프로세스 토큰에 새 정보를 추가하고, 모든 레거시 ACL(수정되지 않은 액세스 제어 목록) 개체가 기본적으로 AppContainer 프로세스의 액세스 요청을 차단하고 AppContainers에서 사용할 수 있어야 하는 ACL 개체를 다시 차단하도록 SeAccessCheck() 를 변경하여 구현됩니다.
프로세스
먼저 프로세스 토큰에 대한 새 정보를 추가합니다. 그런 다음, 수정되지 않은 모든 레거시 ACL이 기본적으로 AppContainer 프로세스의 액세스 요청을 차단하도록 SeAccessCheck() 를 변경합니다. 마지막으로 AppContainers에서 사용할 수 있어야 하는 ACL 리소스를 다시 만듭니다.
AppContainer SID는 appcontainer에 대한 영구 고유 식별자입니다. 기능 SID는 AppContainers 그룹에 리소스 그룹에 대한 액세스 권한을 부여합니다. AppContainerNumber는 AppContainers를 구분하는 데 사용되는 일시적인 DWORD 입니다. 그러나 AppContainer의 ID로 사용하면 안 됩니다.
단일 AppContainer가 리소스에 액세스할 수 있도록 허용하려면 해당 리소스의 ACL에 AppContainerSID를 추가합니다.
여러 특정 AppContainers가 리소스에 액세스할 수 있도록 하려면 해당 리소스에 대한 ACL에 모든 AppContainerSID를 추가합니다.
권한 그룹을 관리하려면 기능 SID(GUID)를 만들고 부여할 모든 리소스에 해당 Capability SID를 배치합니다. 그런 다음, 프로세스 토큰에 기능 SID를 추가합니다.
모든 AppContainers가 리소스에 액세스할 수 있도록 하려면 해당 리소스에 대한 ACL에 ALL APPLICATION PACKAGES SID를 추가합니다. 와일드카드처럼 작동합니다.
AppContainerSID 및 CapabilitySID는 모두 ACE(Access Control 항목)에서 액세스 마스크를 지원합니다. 적절하게 설정합니다.