Защита данных и файлов журналов

Компонент SQL Server устанавливает для указанных учетных записей разрешения на доступ к файлам физических данных и файлам журналов для всех баз данных. Эти разрешения предотвращают случайное повреждение файлов в случае их сохранения в каталоге с открытыми разрешениями. Например, если разрешения не заданы, а в операционной системе и каталоге базы данных для всех файлов выбраны разрешения Полный доступ, то любая учетная запись, имеющая доступ к каталогу, может удалять и изменять файлы базы данных, несмотря на то что у нее может не быть разрешений SQL Server на изменение базы данных.

Разрешения на доступ к файлам устанавливаются во время выполнения любой из следующих операций над базой данных: создание, присоединение, отсоединение, модификация путем добавления нового файла, резервное копирование и восстановление из копии.

Административные вопросы

  • Разрешения устанавливаются только в файловых системах, поддерживающих управление доступом Win32 (например, NTFS). Компонент Database Engine не поддерживает задание разрешений для файлов, хранящихся в необработанных секциях или в файловых системах FAT и FAT32.

  • Если администратор операционной системы вручную изменяет разрешения для файла, компонент Database Engine не пытается принудительно применить исходные разрешения.

  • Если учетная запись службы SQL Server (MSSQLSERVER) изменяется при помощи среды Среда SQL Server Management Studio, то она пытается добавить эту учетную запись во все существующие файлы баз данных и исправить разрешения. Эта операция может завершиться ошибкой в базах данных, которые были непригодны к использованию в момент изменения учетной записи службы.

  • Если учетная запись службы MSSQLSERVER изменяется при помощи служб Microsoft Windows, администратор операционной системы должен предоставить новой учетной записи службы разрешения Полный доступ для всех файлов баз данных и журналов.

Создание базы данных или добавление нового файла

При создании базы данных или добавлении в нее нового файла, учетной записи службы MSSQLSERVER и членам локальной группы администраторов предоставляется разрешение Полный доступ для файлов данных и файлов журналов. Все остальные учетные записи лишаются права на доступ к файлам.

Резервное копирование и восстановление базы данных

Разрешения Полный доступ для файла, созданного для восстановления или резервного копирования, предоставляются учетной записи службы MSSQLSERVER и членам локальной группы администраторов.

Если файл уже существует и у учетной записи службы MSSQLSERVER есть на него разрешения, то операция резервного копирования или восстановления продолжается обычным образом. Иначе компонент Database Engine олицетворяет учетную запись Windows соединения, производящего операцию, и пытается открыть файл. После открытия файла разрешения предоставляются учетной записи службы MSSQLSERVER и членам локальной группы администраторов.

Резервные файлы (файлы отката) обрабатываются аналогичным образом.

Присоединение и отсоединение базы данных

При присоединении и отсоединении базы данных компонент Database Engine пытается олицетворить учетную запись Windows соединения, выполняющего операцию, чтобы обеспечить учетную запись необходимыми разрешениями для доступа к файлам баз данных и файлам журналов. В случае использования учетных записей смешанного режима безопасности, использующих имена входа SQL Server, попытка олицетворения может завершиться ошибкой.

Примечание по безопасностиПримечание по безопасности

Рекомендуется не присоединять базы данных из неизвестных или сомнительных источников. Такие базы данных могут содержать вредоносный программный код Transact-SQL или привести к возникновению ошибок, изменяя схему или физическую структуру базы данных. Прежде чем использовать базу данных из неизвестного или сомнительного источника, выполните в базе данных на непроизводственном сервере инструкцию DBCC CHECKDB, а также изучите в ней программный код хранимых процедур и другой пользовательский код.

В следующей таблице перечислены разрешения файлов баз данных и файлов журналов после завершения операции присоединения или отсоединения. Также указано, может ли компонент Database Engine олицетворять подключающуюся учетную запись.

Операция

Возможно олицетворение учетной записи подключения

Кому предоставляются разрешения на доступ к файлам

Отсоединение

Да

Только учетной записи, выполняющей операцию. Администратор операционной системы может добавить дополнительные учетные записи, если в них возникает необходимость, после отсоединения базы данных.

Отсоединение

Нет

Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows.

Присоединение

Да

Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows.

Присоединение

Нет

Учетной записи службы SQL Server (MSSQLSERVER).

Сценарий

Следующий сценарий демонстрирует разрешения, устанавливаемые при создании базы данных и изменяемые при отсоединении и последующем присоединении базы данных.

User1, член предопределенной роли сервера dbcreator, создает базу данных Sales, состоящую из файлов e:\Data\Sales.mdf и f:\Log\Sales.ldf. В момент создания базы данных учетной записью службы MSSQLSERVER является SQLServiceAccount2 — локальная учетная запись. Разрешения Полный доступ для файлов базы данных и файлов журналов предоставляются SQLServiceAccount2 и членам локальной группы администраторов Windows.

Принимается решение переместить базу данных Sales в другой экземпляр SQL Server на том же сервере. Admin3, член предопределенной роли сервера sysadmin, отсоединяет базу данных. Компонент Database Engine устанавливает для файлов Sales.mdf и Sales.ldf такие разрешения, чтобы доступ к файлам был только у учетной записи Admin3.

Admin3 выполняет подключение к другому экземпляру SQL Server, SalesServer. Учетная запись службы MSSQLSERVER для экземпляра SalesServer — это SQLSalesServiceAccount. Admin3, администратор SQL Server этого экземпляра, присоединяет базу данных Sales. Разрешения Полный доступ предоставляются SQLSalesServiceAccount и членам группы администраторов Windows.