Freigeben über


Obligatorische Integritätssteuerung

Die obligatorische Integritätssteuerung (Mandaroty Integrity Control, MIC) bietet einen Mechanismus zum Steuern des Zugriffs auf sicherungsfähige Objekte. Dieser Mechanismus fungiert zusätzlich zur bedingten Zugriffssteuerung und bewertet den Zugriff, bevor Zugriffsüberprüfungen gegen die bedingte Zugriffssteuerungsliste (Discretionary Access Control List, DACL) eines Objekts ausgewertet werden.

MIC verwendet Integritätsebenen und obligatorische Richtlinien, um den Zugriff zu bewerten. Sicherheitsprinzipale und sicherungsfähige Objekte werden Integritätsebenen zugewiesen, die ihre Schutzebenen oder den Zugriff bestimmen. Beispielsweise kann ein Prinzipal mit einer niedrigen Integritätsebene nicht in ein Objekt mit einer mittleren Integritätsebene schreiben, auch wenn die DACL dieses Objekts den Schreibzugriff des Prinzipals zulässt.

Windows definiert vier Integritätsebenen: Niedrig, Mittel, Hoch und System. Standardbenutzer erhalten Mittel, erhöhte Benutzer erhalten Hoch. Prozesse, die Sie starten und Objekte, die SIe erstellen, erhalten Ihre Integritätsebene (Mittel oder Hoch) oder Niedrig, wenn die Ebene der ausführbaren Datei Niedrig ist. Systemdienste erhalten System-Integrität. Objekte, bei denen keine Integritätsbezeichnung vorhanden ist, werden vom Betriebssystem als Mittel behandelt; dies verhindert, dass Code mit niedriger Integrität nicht gekennzeichnete Objekte verändert. Darüber hinaus stellt Windows sicher, dass Prozesse, die mit einer niedrigen Integritätsebene ausgeführt werden, keinen Zugriff auf einen Prozess erhalten können, der einem App-Container zugeordnet ist.

Integritätsbezeichnungen

Integritätsbezeichnungen geben die Integritätsebenen von sicherungsfähigen Objekten und Sicherheitsprinzipalen an. Integritätsbezeichnungen werden durch Integritäts-SIDs dargestellt. Die Integritäts-SID für ein sicherungsfähiges Objekt wird in der Systemzugriffssteuerungsliste (SACL) gespeichert. Die SACL enthält einen SYSTEM_MANDATORY_LABEL_ACE Zugriffssteuerungseintrag (Access Control Entry, ACE), der wiederum die Integritäts-SID enthält. Jedes Objekt ohne Integritäts-SID wird so behandelt, als wäre es mit mittlerer Integrität versehen.

Die Integritäts-SID für einen Sicherheitsprinzipal wird in seinem Zugriffstoken gespeichert. Ein Zugriffstoken enthält mindestens eine Integritäts-SIDs.

Ausführliche Informationen zu den definierten Integritäts-SIDs finden Sie unter Bekannte SIDs.

Prozesserstellung

Wenn ein Benutzer versucht, eine ausführbare Datei zu starten, wird der neue Prozess mit dem Minimum der Benutzerintegritätsebene und der Dateiintegritätsebene erstellt. Dies bedeutet, dass der neue Prozess nie mit höherer Integrität als die ausführbare Datei ausgeführt wird. Wenn der Administratorbenutzer ein Programm mit niedriger Integrität ausführt, wird das Token für die neuen Prozessfunktionen mit der niedrigen Integritätsebene ausgeführt. Dies hilft, einen Benutzer, der einen nicht vertrauenswürdigen Code startet, vor bösartigen Handlungen zu schützen, die von diesem Code ausgeführt werden. Die Benutzerdaten, die sich auf der typischen Benutzerintegritätsebene befinden, sind vor diesem neuen Prozess schreibgeschützt.

Obligatorische Richtlinie

Die SYSTEM_MANDATORY_LABEL_ACE ACE in der SACL eines sicherungsfähigen Objekts enthält eine Zugriffsmaske, die den Zugriff angibt, der Prinzipalen mit niedrigeren Integritätsebenen als das Objekt gewährt wird. Die für diese Zugriffsmaske definierten Werte sind SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, SYSTEM_MANDATORY_LABEL_NO_READ_UP und SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP. Standardmäßig erstellt das System jedes Objekt mit einer Zugriffsmaske von SYSTEM_MANDATORY_LABEL_NO_WRITE_UP.

Jedes Zugriffstoken gibt auch eine obligatorische Richtlinie an, die von der lokalen Sicherheitsautorität (Local Security Authority, LSA) festgelegt wird, wenn das Token erstellt wird. Diese Richtlinie wird durch eine TOKEN_MANDATORY_POLICY-Struktur angegeben, die dem Token zugeordnet ist. Diese Struktur kann abgefragt werden, indem die GetTokenInformation-Funktion aufgerufen wird, wobei der Wert des TokenInformationClass-Parameters auf TokenMandatoryPolicy festgelegt ist.