Implementieren eines AppContainers
Ein AppContainer wird implementiert, indem dem Prozesstoken neue Informationen hinzugefügt und SeAccessCheck() geändert wird, sodass alle alten, unveränderten Zugriffssteuerungslistenobjekte standardmäßig Zugriffsanforderungen von AppContainer-Prozessen blockieren und ACL-Objekte, die für AppContainers verfügbar sein sollten, erneut verwenden.
Der Prozess
Fügen Sie zunächst neue Informationen für das Prozesstoken hinzu. Ändern Sie dann SeAccessCheck(), sodass alle älteren, unveränderten ACLs standardmäßig Zugriffsanforderungen von AppContainer-Prozessen blockieren. Schließlich re-ACL-Ressourcen, die für AppContainers verfügbar sein sollten
Die AppContainer-SID ist ein persistenter eindeutiger Bezeichner für den appcontainer. Funktions-SIDs gewähren Zugriff auf Ressourcengruppen auf Gruppen von AppContainers. Eine AppContainerNumber ist ein vorübergehendes DWORD , das zur Unterscheidung zwischen AppContainers verwendet wird. Es sollte jedoch nicht als Identität für den AppContainer verwendet werden.
Damit ein einzelner AppContainer auf eine Ressource zugreifen kann, fügen Sie dessen AppContainerSID der ACL für diese Ressource hinzu.
Damit mehrere bestimmte AppContainers auf eine Ressource zugreifen können, fügen Sie der ACL für diese Ressource alle ihre AppContainerSIDs hinzu.
Erstellen Sie zum Verwalten von Berechtigungsgruppen eine Funktions-SID (GUID), und platzieren Sie diese Funktions-SID für alle zu gewährenden Ressourcen. Fügen Sie dann die Funktions-SID ihrem Prozesstoken hinzu.
Damit alle AppContainers auf eine Ressource zugreifen können, fügen Sie der ACL für diese Ressource die SID ALL APPLICATION PACKAGES hinzu. Dies verhält sich wie ein Wildcard.
Sowohl AppContainerSID als auch CapabilitySID unterstützen Zugriffsmasken in Access Control Entries (ACE). Legen Sie nach Bedarf fest.