Freigeben über


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 in der Microsoft Windows SDK-Dokumentation vollständig 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 sind das Format "D:P" gefolgt von einem oder mehreren Ausdrücken des Formulars "(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 Zugriffsberechtigungen an, die für die SID zulässig sind. Die Access- und SID-Werte sind wie folgt.

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

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

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

Programmcode Generisches Zugriffsrecht

GA

GENERISCH_ALLES

GR

GENERIC_READ

GW

GENERIC_WRITE

GX

ALLGEMEIN_AUSFÜHREN

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

Programmcode Spezifisches Zugriffsrecht

RC

READ_CONTROL

SD

Löschen

WD (Weißer Zwerg)

WRITE_DAC

WO

Schreibrechte für den Besitzer

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

SID
Gibt die SID an, die dem angegebenen 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 (die auch zu Authenticated und World gehören). 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

B.A.

Administratoren

Die integrierte Gruppe "Administratoren" auf dem Computer.

BU

Integrierte Benutzergruppe

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

BG

Integrierte Gastgruppe

Gruppe, die Benutzer abdeckt, die sich mit dem lokalen Gastkonto oder dem Gastkonto der Domäne 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. Benutzer, die sich mit dem integrierten Gastkonto angemeldet haben, werden nicht authentifiziert. Mitglieder der Gruppe "Gäste" mit einzelnen Konten auf dem Computer oder der Domäne werden jedoch authentifiziert.

EIN

Anonymer angemeldeter Benutzer

Jeder Benutzer hat sich ohne Identität angemeldet, z. B. eine anonyme Netzwerksitzung. Benutzer, die sich mit dem integrierten Gastkonto anmelden, sind weder authentifiziert noch anonym. 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 zunächst "interaktiv" am 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-Anrufe).

WD (Weißer Zwerg)

Welt

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.

Nicht vertrauenswürdiger oder "eingeschränkter" Code wird auch nicht von der World SID abgedeckt. Weitere Informationen finden Sie in der Beschreibung des Restricted Code (RC) SID 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-Überprüfung für Token mit RC besteht aus zwei Überprüfungen, eine für die normale Liste der SIDs des Tokens (die z. B. WD enthalten) und eine für eine zweite Liste (normalerweise mit RC und einer Teilmenge der ursprünglichen Token-SIDs). Der Zugriff wird nur gewährt, wenn ein Token beide Tests bestanden hat. So 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 Obermenge von "Jeder" einschließlich nicht vertrauenswürdigem Code beschrieben.

Nicht vertrauenswürdiger Code kann Code sein, der mit der Option "Ausführen unter" im Explorer gestartet wird. 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 UMDF-Treibern Zugriff zu gewähren. Weitere Informationen finden Sie unter Steuern des Gerätezugriffs in der Dokumentation User-Mode Driver Framework.

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 das "leere" ACL. Benutzermoduscode (einschließlich prozesse, die als System ausgeführt werden) können das Gerät nicht öffnen.

Ein PnP-Bustreiber könnte diesen Deskriptor beim Erstellen eines PDO verwenden. Die INF-Datei könnte dann lockerere Sicherheitseinstellungen für das Gerät angeben. Durch Angabe dieses Deskriptors würde der Bustreiber sicherstellen, dass kein Versuch, das Gerät zu öffnen, bevor die INF verarbeitet wurde, erfolgreich war.

Ebenso 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 gelten standardmäßig strenge Sicherheitsvorgaben, die bei Bedarf gelockert werden.

SDDL_DEVOBJ_SYS_ALL

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

SDDL_DEVOBJ_SYS_ALL ähnelt SDDL_DEVOBJ_KERNEL_ONLY, außer 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 starten und den Dienst zu erlauben, das Gerät zur Laufzeit mithilfe der SetFileSecurity-Benutzermodusfunktion für einzelne Benutzer zu öffnen. 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 volle Kontrolle über das Gerät. Auf das Gerät können keine anderen Benutzer 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, kann die ACL jedoch nicht ändern (der Administrator muss zuerst die Kontrolle über das Gerät übernehmen.)

Jeder (World SID) erhält Lesezugriff. Nicht vertrauenswürdiger Code kann nicht auf das Gerät zugreifen (nicht vertrauenswürdiger Code kann mit der Option "Ausführen als" im Explorer gestartet werden. Standardmäßig deckt World den eingeschränkten Code nicht ab.)

Beachten Sie außerdem, dass normalen Benutzern kein Durchlaufzugriff gewährt wird. Dies ist 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, kann die ACL jedoch nicht ändern (der Administrator muss zuerst die Kontrolle über das Gerät übernehmen.)

Allen (der Welt-SID) wird Lesezugriff gewährt. Darüber hinaus hat unzuverlässiger Code ebenfalls Zugriff auf Code. Nicht vertrauenswürdiger Code kann Code sein, der mit der Option "Ausführen unter" im Explorer gestartet wird. Standardmäßig deckt World den eingeschränkten Code nicht ab.

Beachten Sie außerdem, dass normalen Benutzern kein Durchlaufzugriff gewährt wird. Dies ist möglicherweise kein geeigneter Deskriptor für ein Gerät mit einem Namespace.

Diese SDDL-Zeichenfolgen enthalten keine Vererbungsmodifizierer. 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 Dokumentation zum Microsoft Windows SDK.