SDDL für Geräteobjekte

Die Security Descriptor Definition Language (SDDL) wird verwendet, um Sicherheitsdeskriptoren darzustellen. Die Sicherheit für Geräteobjekte kann durch eine SDDL-Zeichenfolge angegeben werden, die in einer INF-Datei platziert oder an IoCreateDeviceSecure übergeben wird. Die Sicherheitsdeskriptordefinitionssprache ist vollständig in der Microsoft Windows SDK-Dokumentation dokumentiert.

Während INF-Dateien den gesamten SDDL-Bereich unterstützen, wird nur eine Teilmenge der Sprache von der IoCreateDeviceSecure-Routine unterstützt. Diese Teilmenge wird hier definiert.

SDDL-Zeichenfolgen für Geräteobjekte haben die Form "D:P", gefolgt von einem oder mehreren Ausdrücken der Form "(A;; Zugriff;;; SID)". Der SID-Wert gibt einen Sicherheitsbezeichner an, der bestimmt, für wen der Access-Wert gilt (z. B. ein Benutzer oder eine Gruppe). Der Access-Wert gibt die für die SID zulässigen Zugriffsrechte an. Die Access- und SID-Werte sind wie folgt.

Hinweis Wenn Sie SDDL für Geräteobjekte verwenden, muss Ihr Treiber eine Verknüpfung mit Wdmsec.lib herstellen.

Zugriff
Gibt einen ACCESS_MASK Wert an, der den zulässigen Zugriff bestimmt. Dieser Wert kann entweder als Hexadezimalwert in der Form "0xhex" oder als Sequenz von symbolischen Codes aus zwei Buchstaben geschrieben werden, die Zugriffsrechte darstellen.

Die folgenden Codes können verwendet werden, um generische Zugriffsrechte anzugeben.

Code Generisches Zugriffsrecht

Allgemein verfügbar

GENERIC_ALL

GR

GENERIC_READ

GW

GENERIC_WRITE

GX

GENERIC_EXECUTE

Die folgenden Codes können verwendet werden, um bestimmte Zugriffsrechte anzugeben.

Code Spezifisches Zugriffsrecht

RC

READ_CONTROL

SD

DELETE

WD

WRITE_DAC

WO

WRITE_OWNER

Beachten Sie, dass GENERIC_ALL alle in den beiden obigen Tabellen aufgeführten Rechte gewährt, einschließlich der Möglichkeit, die ACL zu ändern.

SID
Gibt die SID an, der der angegebene Zugriff gewährt wird. SIDs stellen Konten, Aliase, Gruppen, Benutzer oder Computer dar.

Die folgenden SIDs stellen Konten auf dem Computer dar.

SID BESCHREIBUNG

SY

System

Stellt das Betriebssystem selbst dar, einschließlich seiner Benutzermoduskomponenten.

LS

Lokaler Dienst

Ein vordefiniertes Konto für lokale Dienste (das auch zu Authenticated und World gehört). Diese SID ist ab Windows XP verfügbar.

NS

Netzwerkdienst

Ein vordefiniertes Konto für Netzwerkdienste (das auch zu Authenticated und World gehört). Diese SID ist ab Windows XP verfügbar.

Die folgenden SIDs stellen Gruppen auf dem Computer dar.

SID BESCHREIBUNG

BA

Administrators

Die integrierte Gruppe Administratoren auf dem Computer.

BU

Integrierte Benutzergruppe

Gruppierung, die alle lokalen Benutzerkonten und Benutzer in der Domäne abdeckt.

BG

Integrierte Gastgruppe

Gruppe, die Benutzer abdeckt, die sich mit dem lokalen oder Domänengastkonto anmelden.

Die folgenden SIDs beschreiben den Umfang, in dem ein Benutzer authentifiziert wurde.

SID BESCHREIBUNG

AU

Authentifizierte Benutzer

Jeder Benutzer, der vom lokalen Computer oder von einer Domäne erkannt wird. Beachten Sie, dass Benutzer, die mit dem integrierten Gastkonto angemeldet sind, nicht authentifiziert werden. Mitglieder der Gruppe Gäste mit einzelnen Konten auf dem Computer oder der Domäne werden jedoch authentifiziert.

AN

Anonymer angemeldeter Benutzer

Jeder Benutzer hat sich ohne Identität angemeldet, z. B. eine anonyme Netzwerksitzung. Beachten Sie, dass Benutzer, die sich mit dem integrierten Gastkonto anmelden, weder authentifiziert noch anonym sind. Diese SID ist ab Windows XP verfügbar.

Die folgenden SIDs beschreiben, wie sich der Benutzer beim Computer angemeldet hat.

SID BESCHREIBUNG

IU

Interaktive Benutzer

Benutzer, die sich ursprünglich "interaktiv" auf dem Computer angemeldet haben, z. B. lokale Anmeldungen und Remotedesktopanmeldungen.

NU

Netzwerkanmeldungsbenutzer

Benutzer, die remote auf den Computer zugreifen, ohne interaktiven Desktopzugriff (z. B. Dateifreigabe oder RPC-Aufrufe).

WD

World

Vor Windows XP deckte diese SID jede Sitzung ab, unabhängig davon, ob authentifizierte Benutzer, anonyme Benutzer oder das integrierte Gastkonto.

Ab Windows XP deckt diese SID keine anonymen Anmeldesitzungen ab. Es deckt nur authentifizierte Benutzer und das integrierte Gastkonto ab.

Beachten Sie, dass nicht vertrauenswürdiger oder "eingeschränkter" Code auch nicht von der World SID abgedeckt wird. Weitere Informationen finden Sie in der Beschreibung der RC-SID (Restricted Code) in der folgenden Tabelle.

Die folgenden SIDs verdienen besondere Erwähnung.

SID BESCHREIBUNG

RC

Eingeschränkter Code

Diese SID wird verwendet, um den Zugriff durch nicht vertrauenswürdigen Code zu steuern. Die ACL-Validierung für Token mit RC besteht aus zwei Überprüfungen, einer für die normale Liste der SIDs des Tokens (mit WD für instance) und einer für eine zweite Liste (in der Regel mit RC und einer Teilmenge der ursprünglichen Token-SIDs). Der Zugriff wird nur gewährt, wenn ein Token beide Tests besteht. Daher funktioniert RC tatsächlich in Kombination mit anderen SIDs.

Jede ACL, die RC angibt, muss auch WD angeben. Wenn RC in einer ACL mit WD gekoppelt ist, wird eine Übermenge von Jeder beschrieben, einschließlich nicht vertrauenswürdigem Code.

Nicht vertrauenswürdiger Code kann Code sein, der mithilfe der Option Ausführen unter Explorer gestartet wurde. Standardmäßig deckt World nicht vertrauenswürdigen Code ab.

UD

User-Mode Treiber

Diese SID gewährt Zugriff auf Benutzermodustreiber. Derzeit deckt diese SID nur Treiber ab, die für das User-Mode Driver Framework (UMDF) geschrieben wurden. Diese SID ist ab Windows 8 verfügbar.

In früheren Versionen von Windows, die die Abkürzung "UD" nicht erkennen, müssen Sie die vollqualifizierte Form dieser SID (S-1-5-84-0-0-0-0-0-0)angeben, um Zugriff auf UMDF-Treiber zu gewähren. Weitere Informationen finden Sie unter Steuern des Gerätezugriffs in der User-Mode Driver Framework-Dokumentation.

SDDL-Beispiele für Geräteobjekte

In diesem Abschnitt werden die vordefinierten SDDL-Zeichenfolgen in Wdmsec.h beschrieben. Sie können diese auch als Vorlagen verwenden, um neue SDDL-Zeichenfolgen für Geräteobjekte zu definieren.

SDDL_DEVOBJ_KERNEL_ONLY

"D:P"

SDDL_DEVOBJ_KERNEL_ONLY ist die "leere" ACL. Code im Benutzermodus (einschließlich prozesse, die als System ausgeführt werden) kann das Gerät nicht öffnen.

Ein PnP-Bustreiber kann diesen Deskriptor beim Erstellen eines PDO verwenden. Die INF-Datei könnte dann lockere Sicherheitseinstellungen für das Gerät angeben. Durch Angabe dieses Deskriptors stellt der Bustreiber sicher, dass kein Versuch zum Öffnen des Geräts erfolgreich war, bevor der INF verarbeitet wurde.

Auf ähnliche Weise könnte ein Nicht-WDM-Treiber diesen Deskriptor verwenden, um seine Geräteobjekte unzugänglich zu machen, bis das entsprechende Benutzermodusprogramm (z. B. ein Installationsprogramm) den endgültigen Sicherheitsdeskriptor in der Registrierung festlegt.

In all diesen Fällen ist der Standardwert eine strenge Sicherheit, die bei Bedarf gelockert wird.

SDDL_DEVOBJ_SYS_ALL

"D:P(A;; GA;;; SY)"

SDDL_DEVOBJ_SYS_ALL ähnelt SDDL_DEVOBJ_KERNEL_ONLY, mit dem Unterschied, dass neben Kernelmoduscode auch Benutzermoduscode, der als System ausgeführt wird, das Gerät für jeden Zugriff öffnen darf.

Ein Legacytreiber kann diese ACL verwenden, um mit strengen Sicherheitseinstellungen zu beginnen, und der Dienst kann das Gerät zur Laufzeit für einzelne Benutzer öffnen, indem er die SetFileSecurity-Benutzermodusfunktion verwendet. In diesem Fall müsste der Dienst als System ausgeführt werden.

SDDL_DEVOBJ_SYS_ALL_ADM_ALL

"D:P(A;; GA;;; SY)(A;; GA;;; BA)"

SDDL_DEVOBJ_SYS_ALL_ADM_ALL ermöglicht dem Kernel, dem System und dem Administrator die vollständige Kontrolle über das Gerät. Keine anderen Benutzer können auf das Gerät zugreifen.

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R

"D:P(A;; GA;;; SY)(A;; GRGWGX;;; BA)(A;; GR;;; WD)"

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R ermöglicht dem Kernel und dem System die vollständige Kontrolle über das Gerät. Standardmäßig kann der Administrator auf das gesamte Gerät zugreifen, aber die ACL nicht ändern (der Administrator muss zuerst die Kontrolle über das Gerät übernehmen.)

Jeder (die Welt-SID) erhält Lesezugriff. Nicht vertrauenswürdiger Code kann nicht auf das Gerät zugreifen (nicht vertrauenswürdiger Code kann Code sein, der mit der Option Ausführen unter Explorer gestartet wird. Standardmäßig deckt World nicht eingeschränkten Code ab.)

Beachten Sie auch, dass normalen Benutzern der Traversalzugriff nicht gewährt wird. Daher ist dies möglicherweise kein geeigneter Deskriptor für ein Gerät mit einem Namespace.

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R

"D:P(A;; GA;;; SY)(A;; GRGWGX;;; BA)(A;; GR;;; WD)(A;; GR;;; RC)"

SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R ermöglicht dem Kernel und dem System die vollständige Kontrolle über das Gerät. Standardmäßig kann der Administrator auf das gesamte Gerät zugreifen, aber die ACL nicht ändern (der Administrator muss zuerst die Kontrolle über das Gerät übernehmen.)

Jeder (die Welt-SID) erhält Lesezugriff. Darüber hinaus kann nicht vertrauenswürdiger Code auch auf Code zugreifen. Nicht vertrauenswürdiger Code kann Code sein, der mithilfe der Option Ausführen unter Explorer gestartet wurde. Standardmäßig deckt World nicht eingeschränkten Code ab.

Beachten Sie auch, dass normalen Benutzern der Traversalzugriff nicht gewährt wird. Daher ist dies möglicherweise kein geeigneter Deskriptor für ein Gerät mit einem Namespace.

Beachten Sie, dass die obigen SDDL-Zeichenfolgen keine Vererbungsmodifizierer enthalten. Daher sind sie nur für Geräteobjekte geeignet und sollten nicht für Dateien oder Registrierungsschlüssel verwendet werden. Weitere Informationen zum Angeben der Vererbung mithilfe von SDDL finden Sie in der Microsoft Windows SDK-Dokumentation.