Implementieren eines AppContainers
Ein AppContainer wird implementiert, indem dem Prozesstoken neue Informationen hinzugefügt, SeAccessCheck() geändert werden, sodass alle legacy-, nichtmodifizierten Zugriffssteuerungslistenobjekte standardmäßig Zugriffsanforderungen von AppContainer-Prozessen blockieren und erneut ACL-Objekte, die für AppContainers verfügbar sein sollten, blockieren.
Der Prozess
Fügen Sie zunächst neue Informationen für das Prozesstoken hinzu. Ändern Sie dann SeAccessCheck(), sodass alle veralteten, nicht geänderten ACLs standardmäßig Zugriffsanforderungen von AppContainer-Prozessen blockieren. Schließlich sollten erneut ACL-Ressourcen für AppContainers verfügbar sein.
Die AppContainer-SID ist ein persistenter eindeutiger Bezeichner für den Appcontainer. Funktions-SIDs gewähren Zugriff auf Ressourcengruppen für Gruppen von AppContainers. Eine AppContainerNumber ist eine vorübergehende DWORD-, die zum Unterscheiden zwischen AppContainers verwendet wird. Sie sollte jedoch nicht als Identität für den AppContainer verwendet werden.
Um einem einzelnen AppContainer den Zugriff auf eine Ressource zu ermöglichen, fügen Sie die AppContainerSID der ACL für diese Ressource hinzu.
Um mehreren bestimmten AppContainern den Zugriff auf eine Ressource zu ermöglichen, fügen Sie alle appContainerSIDs der ACL für diese Ressource hinzu.
Um Gruppen von Berechtigungen zu verwalten, erstellen Sie eine Funktions-SID (eine GUID), und legen Sie diese Funktions-SID für alle zu gewährenden Ressourcen bereit. Fügen Sie dann die Funktions-SID zu Ihrem Prozesstoken hinzu.
Um allen AppContainern den Zugriff auf eine Ressource zu ermöglichen, fügen Sie die ALLE ANWENDUNGSPAKETE SID zur ACL für diese Ressource hinzu. Dies verhält sich wie ein Wildcard.
Sowohl AppContainerSID als auch CapabilitySID unterstützen Zugriffsmasken in Access Control Entries (ACE). Legen Sie dies entsprechend fest.