Sécurisation des fichiers de données et des fichiers journaux

SQL Server définit les autorisations d'accès aux fichiers sur les données physiques et les fichiers journaux de chaque base de données sur certains comptes spécifiques. Ces autorisations empêchent toute falsification des fichiers qui résideraient dans un répertoire assorti d'autorisations d'ouverture. Par exemple, si ces autorisations ne sont pas définies et que les autorisations du système d'exploitation sur ce répertoire indiquent Contrôle total pour tous les utilisateurs, tout compte ayant accès à ce répertoire peut supprimer ou modifier les fichiers de base de données, même s'il ne possède pas les autorisations SQL Server permettant de modifier la base de données elle-même.

Les autorisations d'accès sont définies lors des opérations de base de données suivantes : création, attachement, détachement, modification pour ajouter un nouveau fichier, sauvegarde ou restauration.

Considérations d'ordre administratif

  • Les autorisations sont définies uniquement lorsque le système de fichiers prend en charge le contrôle d'accès Win32, comme dans le cas du système de fichiers NTFS. Le Moteur de base de données ne peut pas définir des autorisations sur des fichiers stockés sur des partitions brutes ou utilisant les systèmes de fichiers FAT et FAT32.

  • Si l'administrateur du système d'exploitation modifie manuellement les autorisations de fichier, le Moteur de base de données n'essaiera pas d'imposer les autorisations d'origine.

  • Si le compte du service SQL Server (MSSQLSERVER) est modifié au moyen de SQL Server Management Studio, Management Studio essaie d'ajouter le compte et les autorisations correctes à tous les fichiers de la base de données. Il est possible qu'il n'y parvienne pas pour les bases de données qui ne sont pas disponibles au moment où le compte de service est modifié.

  • Si le compte du service MSSQLSERVER est modifié par le biais des Services Microsoft Windows, l'administrateur du système d'exploitation doit octroyer au nouveau compte les autorisations Contrôle total pour tous les fichiers de base de données et les fichiers journaux.

Création d'une base de données ou ajout d'un fichier

Lorsqu'une base de données est créée, ou modifiée en vue de l'ajout d'un fichier, le compte du service MSSQLSERVER et les membres du groupe Administrateurs local reçoivent un accès Contrôle total sur les fichiers de données et les fichiers journaux. L'accès aux fichiers est supprimé pour tous les autres comptes.

Sauvegarde et restauration d'une base de données

Le compte du service MSSQLSERVER et les membres du groupe Administrateurs local reçoivent des autorisations Contrôle total sur le fichier créé comme destination de restauration ou de sauvegarde.

Si le fichier existe déjà et si le compte du service MSSQLSERVER a déjà les autorisations requises, l'opération de restauration ou de sauvegarde se poursuit. Dans le cas contraire, le Moteur de base de données imite le compte Windows de la connexion qui effectue l'opération et essaie d'ouvrir le fichier. Une fois le fichier ouvert, les autorisations sont octroyées au compte du service MSSQLSERVER et aux membres du groupe Administrateurs local.

Les fichiers intermédiaires (fichiers d'annulation) sont traités de la même manière.

Attachement et détachement d'une base de données

Lors vous détachez ou attachez une base de données, le Moteur de base de données essaie d'emprunter l'identité du compte Windows de la connexion qui effectue l'opération pour s'assurer que le compte a l'autorisation d'accéder aux fichiers de la base de données et aux fichiers journaux. Pour les comptes de sécurité mixte qui utilisent les connexions SQL Server, l'emprunt d'identité peut échouer.

Remarque relative à la sécuritéRemarque relative à la sécurité

Nous vous conseillons de ne pas attacher les bases de données à partir de sources inconnues ou non approuvées. De telles bases de données peuvent contenir un code malveillant susceptible d'exécuter du code Transact-SQL non souhaité ou de générer des erreurs en modifiant le schéma ou la structure physique des bases de données. Avant d'utiliser une base de données provenant d'une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur qui n'est pas de production et examinez également le code, tel que les procédures stockées ou tout autre code défini par l'utilisateur, dans la base de données.

Le tableau suivant illustre les autorisations définies sur les fichiers de base de données et les fichiers journaux au terme d'une opération d'attachement ou de détachement, et si le Moteur de base de données peut imiter le compte qui se connecte.

Opération

Le compte qui se connecte peut être imité

Des autorisations d'accès aux fichiers sont octroyées

Détacher

Oui

Au compte effectuant l'opération uniquement. D'autres comptes peuvent être ajoutés par un administrateur de système d'exploitation s'ils sont nécessaires après détachement de la base de données.

Détacher

Non

Au compte du service SQL Server (MSSQLSERVER) et aux membres du groupe Administrateurs Windows local.

Attacher

Oui

Au compte du service SQL Server (MSSQLSERVER) et aux membres du groupe Administrateurs Windows local.

Attacher

Non

Au compte du service SQL Server (MSSQLSERVER).

Scénario

Le scénario suivant illustre les autorisations définies lors de la création d'une base de données et lors de sa modification (détachement et attachement).

User1, membre du rôle serveur fixe dbcreator, crée la base de données Sales qui se compose des fichiers e:\Data\Sales.mdf et f:\Log\Sales.ldf. Au moment où la base de données est créée, le compte du service MSSQLSERVER est SQLServiceAccount2, un compte local. Des autorisations Contrôle total sont octroyées à SQLServiceAccount2 et aux membres du groupe Administrateurs Windows local sur les fichiers de la base de données et les fichiers journaux.

L'on décide de déplacer la base de données Sales sur une autre instance de SQL Server sur le même serveur. Admin3, membre du rôle serveur fixe sysadmin, détache la base de données. Le Moteur de base de données définit des autorisations sur les fichiers Sales.mdf et Sales.ldf de manière à ce que seul le compte Admin3 puisse y avoir accès.

Admin3 se connecte à l'autre instance de SQL Server, SalesServer. Le compte du service MSSQLSERVER pour l'instance SalesServer est SQLSalesServiceAccount. Admin3, administrateur SQL Server sur cette instance, attache la base de données Sales. Des autorisations Contrôle total sont octroyées au compte SQLSalesServiceAccount et aux membres du groupe Administrateurs Windows local.