Для настройки аудита необходимо его создать и указать место записи событий. Аудит может храниться в журнале безопасности Windows, в журнале приложений Windows или в любом файле. Вы присваиваете аудиту имя и настраиваете его характеристики, в частности, путь к файлу аудита и его максимальный размер. Также можно настроить аудит так, чтобы в случае сбоя проверки работа SQL Server завершалась. Если события аудита нужно записывать в несколько журналов, создается несколько аудитов.
Следующий этап — создание спецификаций аудита. В спецификации аудита сервера собирается информация об экземпляре SQL Server; в нее включаются объекты, относящиеся к серверу: данные учетных записей, членство в серверных ролях. Там же имеется информация о базе данных, контролируемая в основной базе данных, например сведения о правах доступа к базе. При создании спецификации аудита вы указываете, в какой аудит будут поступать наблюдаемые события. Вы можете создать несколько аудитов сервера и несколько спецификаций аудита, но аудит может иметь только одну активную спецификацию в каждый конкретный момент времени.
Также можно создать спецификации аудита базы данных: они будут использоваться для отслеживания событий по отдельной базе данных. В аудит можно добавить несколько спецификаций аудита баз данных, но в каждом аудите сервера активной может быть только одна спецификация аудита баз данных.
События подсистемы аудита SQL Server, используемые в спецификациях аудита сервера, объединяются в коллекции связанных событий. Они предоставляются в виде групп действий аудита. Если такую группу добавить в спецификацию аудита, можно будет отслеживать события, включенные в группу. К примеру, существует группа действий аудита DBCC_GROUP, предоставляющая доступ к командам DBCC. Отдельно же команды DBCC включаться в аудит не могут.
Всего существует 35 групп действий аудита сервера, причем некоторые из них тесно связаны друг с другом. Например, группы SUCCESSFUL_LOGIN_GROUP, FAILED_LOGIN_GROUP и LOGOUT_GROUP. Также есть тип действий аудита AUDIT_ CHANGE_GROUP, который можно использовать для проверки самого процесса аудита.
В спецификациях аудита баз данных можно также указывать группы событий аудита, собранные в группы действий аудита на уровне баз данных. Кроме групп действий аудита, спецификации аудита баз данных могут включать в себя отдельные события аудита, позволяющие проверять инструкции, отвечающие за работу с данными. Эти события можно настроить таким образом, чтобы отслеживать всю базу данных или только определенные объекты. Действие SELECT, в частности, может использоваться для проверки запросов SELECT, обращенных как к отдельной таблице, так и ко всей схеме в целом. Кроме того, события такого рода можно настроить так, чтобы отслеживать действия по отдельным пользователям или ролям, например db_writers.
Скажем, действие SELECT можно использовать для проверки запросов SELECT, обращенных к отдельной таблице, источником которых является пользователь Mary, или роль FINANCE_DEPT, или роль базы данных Public. Нельзя не отметить, что все это предоставляет широчайшие возможности контроля и дает большой запас гибкости при настройке аудита.
В модуле составления отчетов о зависимостях появилось новое представление каталогов и новые системные функции. Если использовать sys.sql_expression_dependencies, sys.dm_sql_referencing_entities и sys.dm_sql_referenced_entities, можно создавать отчеты по зависимостям между серверами, зависимостям между базами данных и SQL-зависимостями в пределах базы данных как для привязанных к схеме объектов, так и для непривязанных.
Для удобства управления разрешениями в базах данных SQL Server предоставляет несколько ролей, которые являются участниками безопасности, группирующими других участников. Они подобны группам в операционной системе Microsoft Windows. Разрешения ролей уровня базы данных распространяются на всю базу данных. [6]
В SQL Server существует два типа ролей уровня базы данных: предопределенные роли базы данных, стандартные для базы данных, и гибкие роли базы данных, которые может создать пользователь.
Предопределенные роли базы данных задаются на уровне базы данных и предусмотрены в каждой базе данных. Члены ролей базы данных db_owner и db_securityadmin могут управлять членством в предопределенных ролях базы данных. Но только члены роли базы данных db_owner могут добавлять членов в предопределенную роль базы данных db_owner. Кроме того, в базе данных msdb имеются специальные предопределенные роли базы данных.
В роли уровня базы данных можно добавить любую учетную запись базы данных и другие роли SQL Server. Каждый член предопределенной роли базы данных может добавлять другие имена входа к той же роли.
В следующей таблице представлены предопределенные роли уровня базы данных и их возможности. Эти роли существуют во всех базах данных.
Имя роли уровня базы данных | Описание |
db_owner | Члены предопределенной роли базы данных db_owner могут выполнять все действия по настройке и обслуживанию базы данных, а также удалять базу данных. |
db_securityadmin | Элементы предопределенной роли базы данных db_securityadmin могут изменять членство в роли и управлять разрешениями. Добавление участников к этой роли может привести к непреднамеренному повышению прав доступа. |
db_accessadmin | Члены предопределенной роли базы данных db_accessadmin могут добавлять или удалять права удаленного доступа к базе данных для имен входа и групп Windows, а также имен входа SQL Server. |
db_backupoperator | Члены предопределенной роли базы данных db_backupoperator могут создавать резервные копии базы данных. |
db_ddladmin | Члены предопределенной роли базы данных db_ddladmin могут выполнять любые команды языка определения данных (DDL) в базе данных. |
db_datawriter | Члены предопределенной роли базы данных db_datawriter могут добавлять, удалять или изменять данные во всех пользовательских таблицах. |
db_datareader | Элементы фиксированной роли базы данных db_datareader могут считывать все данные из всех пользовательских таблиц. |
db_denydatawriter | Члены предопределенной роли базы данных db_denydatawriter не могут добавлять, изменять или удалять данные в пользовательских таблицах базы данных. |
db_denydatareader | Члены предопределенной роли базы данных db_denydatareader не могут считывать данные из пользовательских таблиц базы данных. |
База данных msdb содержит специальные роли, показанные в следующей таблице.
Имя роли базы данных msdb | Описание |
db_ssisadmin db_ssisoperator db_ssisltduser | Члены этих ролей базы данных могут администрировать и использовать службы SSIS. Экземпляры SQL Server, обновленные с предыдущей версии, могут содержать более старую версию роли, имя которой присвоено с помощью служб DTS, а не служб SSIS. Дополнительные сведения см. в разделе Использование ролей служб Integration Services. |
dc_admin dc_operator dc_proxy | Члены этих ролей базы данных могут администрировать и использовать сборщик данных. Дополнительные сведения см. в разделе Безопасность сборщика данных. |
PolicyAdministratorRole | Члены роли базы данных db_ PolicyAdministratorRole могут выполнять все действия по настройке и обслуживанию политик и условий средства «Управление на основе политики». Дополнительные сведения см. в разделе Администрирование серверов с помощью управления на основе политик. |
ServerGroupAdministratorRole ServerGroupReaderRole | Члены этих ролей базы данных могут администрировать и использовать зарегистрированные группы серверов. |
Работа с ролями уровня базы данных
В следующей таблице описаны команды, представления и функции, предназначенные для работы с ролями уровня базы данных.
Функция | Тип данных | Описание |
sp_helpdbfixedrole (Transact-SQL) | Метаданные | Возвращает список всех предопределенных ролей базы данных. |
sp_dbfixedrolepermission (Transact-SQL) | Метаданные | Отображает разрешения предопределенной роли базы данных. |
sp_helprole (Transact-SQL) | Метаданные | Возвращает информацию о ролях, относящихся к текущей базе данных. |
sp_helprolemember (Transact-SQL) | Метаданные | Возвращает сведения о членах роли в текущей базе данных. |
sys.database_role_members (Transact-SQL) | Метаданные | Возвращает одну строку для каждого члена каждой роли базы данных. |
IS_MEMBER (Transact-SQL) | Метаданные | Указывает, является ли текущий пользователь членом указанной группы Microsoft Windows или роли базы данных Microsoft SQL Server. |
CREATE ROLE (Transact-SQL) | Команда | Создает новую роль базы данных в текущей базе данных. |
ALTER ROLE (Transact-SQL) | Команда | Изменяет имя роли базы данных. |
DROP ROLE (Transact-SQL) | Команда | Удаляет роль из базы данных. |
sp_addrole (Transact-SQL) | Команда | Создает новую роль базы данных в текущей базе данных. |
sp_droprole (Transact-SQL) | Команда | Удаляет роль базы данных из текущей базы данных. |
Хранимая процедура sp_addrolemember (Transact-SQL) | Команда | Добавляет пользователя базы данных, роль базы данных, имя входа Windows или группу Windows к роли текущей базы данных. |
sp_droprolemember (Transact-SQL) | Команда | Удаляет учетную запись безопасности из роли SQL Server в текущей базе данных. |