Identitätswechsel eines Named Pipe-Clients
Identitätswechsel ist die Fähigkeit eines Threads, in einem anderen Sicherheitskontext als dem Prozess auszuführen, der den Thread besitzt. Der Identitätswechsel ermöglicht es dem Serverthread, Aktionen im Namen des Clients auszuführen, jedoch innerhalb der Grenzen des Sicherheitskontexts des Clients. Der Client verfügt in der Regel über weniger Zugriffsrechte. Weitere Informationen finden Sie unter Identitätswechsel.
Ein Named Pipe-Serverthread kann die Funktion ImpersonateNamedPipeClient aufrufen, um das Zugriffstoken des Benutzers anzunehmen, der mit dem Clientende der Pipe verbunden ist. Beispielsweise kann ein Named Pipe-Server Zugriff auf eine Datenbank oder ein Dateisystem bereitstellen, auf die der Pipeserver privilegierten Zugriff hat. Wenn ein Pipeclient eine Anforderung an den Server sendet, gibt der Server die Identität des Clients an und versucht, auf die geschützte Datenbank zuzugreifen. Anschließend gewährt oder verweigert das System den Zugriff auf den Server basierend auf der Sicherheitsstufe des Clients. Wenn der Server fertig ist, verwendet er die RevertToSelf-Funktion , um sein ursprüngliches Sicherheitstoken wiederherzustellen.
Die Identitätswechselebene bestimmt die Vorgänge, die der Server beim Annehmen der Identität des Clients ausführen kann. Standardmäßig wird ein Server auf der Identitätswechselebene securityImpersonation angenommen. Wenn der Client jedoch die CreateFile-Funktion aufruft, um ein Handle für das Clientende der Pipe zu öffnen, kann der Client das Flag SECURITY_SQOS_PRESENT verwenden, um die Identitätswechselebene des Servers zu steuern.