SDDL pour les objets d’appareil

Le langage SDDL (Security Descriptor Definition Language) est utilisé pour représenter les descripteurs de sécurité. La sécurité des objets d’appareil peut être spécifiée par une chaîne SDDL placée dans un fichier INF ou transmise à IoCreateDeviceSecure. Le langage de définition du descripteur de sécurité est entièrement documenté dans la documentation Microsoft Windows SDK.

Bien que les fichiers INF prennent en charge la plage complète de SDDL, seul un sous-ensemble du langage est pris en charge par la routine IoCreateDeviceSecure . Ce sous-ensemble est défini ici.

Les chaînes SDDL pour les objets d’appareil sont de la forme « D:P » suivie d’une ou plusieurs expressions de la forme « (A;; Accès;;; SID) ». La valeur SID spécifie un identificateur de sécurité qui détermine à qui la valeur Access s’applique (par exemple, un utilisateur ou un groupe). La valeur Access spécifie les droits d’accès autorisés pour le SID. Les valeurs Access et SID sont les suivantes.

Note Lorsque vous utilisez SDDL pour les objets d’appareil, votre pilote doit être lié à Wdmsec.lib.

Accès
Spécifie une valeur ACCESS_MASK qui détermine l’accès autorisé. Cette valeur peut être écrite sous la forme d’une valeur hexadécimale au format « 0xhex », ou sous la forme d’une séquence de codes symboliques à deux lettres représentant des droits d’accès.

Les codes suivants peuvent être utilisés pour spécifier des droits d’accès génériques.

Code Droit d’accès générique

GA

GENERIC_ALL

GR

GENERIC_READ

GW

GENERIC_WRITE

GX

GENERIC_EXECUTE

Les codes suivants peuvent être utilisés pour spécifier des droits d’accès spécifiques.

Code Droit d’accès spécifique

RC

READ_CONTROL

SD

Suppression

WD

WRITE_DAC

WO

WRITE_OWNER

Notez que GENERIC_ALL accorde tous les droits répertoriés dans les deux tableaux ci-dessus, y compris la possibilité de modifier la liste de contrôle d’accès.

SID
Spécifie le SID auquel l’accès spécifié est accordé. Les SID représentent des comptes, des alias, des groupes, des utilisateurs ou des ordinateurs.

Les SID suivants représentent les comptes sur l’ordinateur.

SID Description

SY

Système

Représente le système d’exploitation lui-même, y compris ses composants en mode utilisateur.

LS

Service local

Un compte prédéfini pour les services locaux (qui appartient également à Authenticated et World). Ce SID est disponible à partir de Windows XP.

NS

Service réseau

Un compte prédéfini pour les services réseau (qui appartient également à Authenticated et World). Ce SID est disponible à partir de Windows XP.

Les SID suivants représentent des groupes sur l’ordinateur.

SID Description

BA

Administrateurs

Groupe Administrateurs intégré sur l’ordinateur.

BU

Groupe d’utilisateurs intégré

Groupe couvrant tous les comptes d’utilisateurs locaux et les utilisateurs sur le domaine.

BG

Groupe invité intégré

Groupe couvrant les utilisateurs qui se connectent à l’aide du compte invité local ou de domaine.

Les SID suivants décrivent l’étendue de l’authentification d’un utilisateur.

SID Description

AU

Utilisateurs authentifiés

Tout utilisateur reconnu par l’ordinateur local ou par un domaine. Notez que les utilisateurs connectés à l’aide du compte Invité intégré ne sont pas authentifiés. Toutefois, les membres du groupe Invités avec des comptes individuels sur l’ordinateur ou le domaine sont authentifiés.

AN

Utilisateur anonyme connecté

Tout utilisateur connecté sans identité, par exemple une session réseau anonyme. Notez que les utilisateurs qui se connectent à l’aide du compte Invité Intégré ne sont ni authentifiés ni anonymes. Ce SID est disponible à partir de Windows XP.

Les SID suivants décrivent comment l’utilisateur s’est connecté à l’ordinateur.

SID Description

IU

Utilisateurs interactifs

Utilisateurs qui se sont initialement connectés à l’ordinateur « de manière interactive », par exemple les connexions locales et les connexions Bureau à distance.

NU

Utilisateur d’ouverture de session réseau

Utilisateurs accédant à l’ordinateur à distance, sans accès interactif au bureau (par exemple, partage de fichiers ou appels RPC).

WD

World (Monde)

Avant Windows XP, ce SID couvrait chaque session, qu’il s’agisse d’utilisateurs authentifiés, d’utilisateurs anonymes ou du compte Invité intégré.

À compter de Windows XP, ce SID ne couvre pas les sessions d’ouverture de session anonymes ; elle couvre uniquement les utilisateurs authentifiés et le compte Invité builtin.

Notez que le code non approuvé ou « restreint » n’est pas non plus couvert par le SID mondial. Pour plus d’informations, consultez la description du SID rc (Restricted Code) dans le tableau suivant.

Les SID suivants méritent des mention spéciales.

SID Description

RC

Code restreint

Ce SID est utilisé pour contrôler l’accès par du code non approuvé. La validation ACL par rapport aux jetons avec RC se compose de deux vérifications, l’une par rapport à la liste normale des SID du jeton (contenant WD pour instance) et l’autre par rapport à une deuxième liste (généralement contenant RC et un sous-ensemble des SID de jetons d’origine). L’accès est accordé uniquement si un jeton réussit les deux tests. En tant que tel, RC fonctionne en fait en combinaison avec d’autres SID.

Toute liste de contrôle d’accès qui spécifie RC doit également spécifier WD. Lorsque RC est associé à WD dans une liste de contrôle d’accès, un sur-ensemble de Tout le monde, y compris du code non approuvé, est décrit.

Le code non approuvé peut être lancé à l’aide de l’option d’identification dans Explorer. Par défaut, World ne couvre pas le code non approuvé.

UD

pilotes User-Mode

Ce SID accorde l’accès aux pilotes en mode utilisateur. Actuellement, ce SID couvre uniquement les pilotes écrits pour l’infrastructure de pilotes User-Mode (UMDF). Ce SID est disponible à compter de Windows 8.

Dans les versions antérieures de Windows, qui ne reconnaissent pas l’abréviation « UD », vous devez spécifier la forme complète de ce SID (S-1-5-84-0-0-0-0-0-0-0) pour accorder l’accès aux pilotes UMDF. Pour plus d’informations, consultez Contrôle de l’accès aux appareils dans la documentation User-Mode Driver Framework.

Exemples SDDL pour les objets d’appareil

Cette section décrit les chaînes SDDL prédéfinies trouvées dans Wdmsec.h. Vous pouvez également les utiliser comme modèles pour définir de nouvelles chaînes SDDL pour les objets d’appareil.

SDDL_DEVOBJ_KERNEL_ONLY

« D:P »

SDDL_DEVOBJ_KERNEL_ONLY est la liste de contrôle d’accès « vide ». Le code en mode utilisateur (y compris les processus s’exécutant en tant que système) ne peut pas ouvrir l’appareil.

Un pilote de bus PnP peut utiliser ce descripteur lors de la création d’un PDO. Le fichier INF peut ensuite spécifier des paramètres de sécurité plus souples pour l’appareil. En spécifiant ce descripteur, le pilote de bus s’assure qu’aucune tentative d’ouverture de l’appareil avant le traitement de l’inf n’aboutit.

De même, un pilote non WDM peut utiliser ce descripteur pour rendre ses objets de périphérique inaccessibles jusqu’à ce que le programme en mode utilisateur approprié (tel qu’un programme d’installation) définisse le descripteur de sécurité final dans le Registre.

Dans tous ces cas, la valeur par défaut est une sécurité stricte, desserrée si nécessaire.

SDDL_DEVOBJ_SYS_ALL

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

SDDL_DEVOBJ_SYS_ALL est similaire à SDDL_DEVOBJ_KERNEL_ONLY, à ceci près qu’en plus du code en mode noyau, le code en mode utilisateur s’exécutant en tant que système est également autorisé à ouvrir l’appareil pour tout accès.

Un pilote hérité peut utiliser cette liste de contrôle d’accès pour démarrer avec des paramètres de sécurité stricts et laisser son service ouvrir l’appareil au moment de l’exécution à des utilisateurs individuels à l’aide de la fonction en mode utilisateur SetFileSecurity . Dans ce cas, le service doit s’exécuter en tant que Système.

SDDL_DEVOBJ_SYS_ALL_ADM_ALL

« D:P(A;; GA;;; SY)(A;; GA;;; BA) »

SDDL_DEVOBJ_SYS_ALL_ADM_ALL permet au noyau, au système et à l’administrateur de contrôler entièrement l’appareil. Aucun autre utilisateur ne peut accéder à l’appareil.

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 permet au noyau et au système de contrôler complètement l’appareil. Par défaut, l’administrateur peut accéder à l’ensemble de l’appareil, mais ne peut pas modifier la liste de contrôle d’accès (l’administrateur doit d’abord prendre le contrôle de l’appareil).)

Tout le monde (world SID) dispose d’un accès en lecture. Le code non approuvé ne peut pas accéder à l’appareil (le code non approuvé peut être du code lancé à l’aide de l’option d’identification dans Explorer. Par défaut, World ne couvre pas le code restreint.)

Notez également que l’accès par traversée n’est pas accordé aux utilisateurs normaux. Par conséquent, il peut ne pas s’agir d’un descripteur approprié pour un appareil avec un espace de noms.

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 permet au noyau et au système de contrôler complètement l’appareil. Par défaut, l’administrateur peut accéder à l’ensemble de l’appareil, mais ne peut pas modifier la liste de contrôle d’accès (l’administrateur doit d’abord prendre le contrôle de l’appareil).)

Tout le monde (world SID) dispose d’un accès en lecture. En outre, le code non approuvé est également autorisé à accéder au code. Le code non approuvé peut être lancé à l’aide de l’option d’identification dans Explorer. Par défaut, World ne couvre pas le code restreint.

Notez également que l’accès par traversée n’est pas accordé aux utilisateurs normaux. Par conséquent, il peut ne pas s’agir d’un descripteur approprié pour un appareil avec un espace de noms.

Notez que les chaînes SDDL ci-dessus n’incluent aucun modificateur d’héritage. Par conséquent, ils ne conviennent qu’aux objets d’appareil et ne doivent pas être utilisés pour les fichiers ou les clés de Registre. Pour plus d’informations sur la spécification de l’héritage à l’aide de SDDL, consultez la documentation Microsoft Windows SDK.