Partager via


Gestion des privilèges dans un système de fichiers

Le privilège est un mécanisme utilisé par le système d’exploitation pour contrôler des opérations spécifiques. Chaque privilège a des opérations particulières associées à celle-ci que l’appelant de l’opération peut effectuer si les deux conditions suivantes sont remplies :

  • Le privilège doit être détenu par l’appelant.
  • Le privilège doit également être activé.

Le principe de ces exigences est connu sous le nom de privilège minimum. Le privilège minimum nécessite que les privilèges soient activés avant qu’ils ne soient utilisés, plutôt que supposés. Cette exigence réduit le risque qu’un utilisateur puisse effectuer par inadvertance une opération qu’il n’a pas prévu. Par exemple, SeRestorePrivilege autorise normalement l’appelant à contourner les vérifications habituelles de l’accès en écriture à un fichier. Par exemple, un administrateur ne souhaite peut-être pas remplacer les vérifications de sécurité normales lors de la copie d’un fichier. Toutefois, ils peuvent souhaiter le faire lors de la restauration de ce même fichier à l’aide d’un utilitaire de sauvegarde/restauration.

Pour les systèmes de fichiers, il existe de nombreux privilèges qui sont souvent utilisés pour modifier le comportement normal (notamment les vérifications de sécurité) pour le système. Ces privilèges sont les suivants :

  • SeBackupPrivilege autorise la récupération du contenu du fichier, même si le descripteur de sécurité sur le fichier peut ne pas accorder de tels accès. Un appelant avec SeBackupPrivilege activé rend inutile la vérification de sécurité basée sur la liste de contrôle d’accès.

  • SeRestorePrivilege autorise la modification du contenu du fichier, même si le descripteur de sécurité sur le fichier peut ne pas accorder de tels accès. Cette fonction peut également être utilisée pour modifier le propriétaire et la protection.

  • SeChangeNotifyPrivilege autorise la traversée à droite. Ce privilège est une optimisation importante dans Windows, car elle supprime le coût d’une vérification de sécurité sur chaque répertoire unique d’un chemin d’accès.

  • SeManageVolumePrivilege permet des opérations de gestion spécifiques au niveau du volume, telles que le volume de verrou, la défragmentation, le démontage de volume et la définition de la longueur des données valides sur Windows XP et versions ultérieures. Un pilote de système de fichiers applique explicitement ce privilège particulier principalement en fonction des opérations FSCTL. Dans ce cas, le système de fichiers prend une décision de stratégie pour appliquer ce privilège. La détermination de savoir si ce privilège est détenu par l’appelant est effectué par le moniteur de référence de sécurité dans le cadre de la vérification normale des privilèges.

Bien qu’il existe de nombreux autres privilèges, ils sont normalement opaques pour les systèmes de fichiers et seul le Moniteur de référence de sécurité (SRM) les interprète.

Les routines Windows clés pour la gestion des privilèges au sein d’un système de fichiers sont les suivantes :

  • SePrivilegeCheck effectue une vérification d’un ensemble spécifique de privilèges nécessaires.

  • SeSinglePrivilegeCheck effectue une vérification d’un privilège spécifique unique ; il s’agit d’une version optimisée de SePrivilegeCheck.

  • SeAccessCheck effectue une vérification d’accès normale sur un objet (normalement un objet de fichier pour un système de fichiers).

  • SeFreePrivileges libère le bloc de privilèges retourné par un appel précédent à SeAccessCheck.

  • SeAppendPrivileges ajoute des privilèges activés à une structure ACCESS_STATE. En règle générale, un système de fichiers utilise l'ACCESS_STATE qui lui est passé pendant le traitement de la demande IRP_MJ_CREATE.