
- •Хранимые процедуры Управление процессом компиляции хранимых процедур
- •Управление автоматическим выполнением хранимых процедур
- •Использование индексов
- •Планирование использования индексов
- •Создание индексов средствами t-sql
- •Использование курсоров
- •Динамические курсоры
- •Последовательные курсоры
- •Ключевые курсоры
- •Управление курсорами.
- •Работа с триггерами
- •Пример триггера
- •Система безопасности sql Server
- •Общие правила разграничения доступа
- •Аутентификация и интеграция с доменом Windows
- •Режим аутентификации Wondows
- •Режим аутентификации sql Server
- •Права доступа
- •Компоненты системы безопасности sql Server
- •Создание пользователей
- •Роли приложения
- •Защита данных в sql Server
- •Управление правами доступа к объектам базы данных средствами t-sql
- •Репликация данных
- •Понятие репликации данных
- •Издатель
- •Подписчик
- •Дистрибьютор
- •Механизмы репликации
Режим аутентификации sql Server
В случае, если пользователь подключается к SQL Server с указанием имени и пароля из не доверительного соединения, используется режим аутентификации SQL Server. В этом режиме SQL Server сам проверяет правильность имени пользователя и пароля, сравнивая их с данными в системных таблицах. Предварительно пользователь должен быть создан.
Если данные, введённые пользователем, совпадают с данными в системных таблицах SQL Server, пользователю разрешается доступ к серверу. В противном случае попытка доступа отклоняется и выдаётся сообщение об ошибке.
Аутентификация SQL Server обеспечивает обратную совместимость с предыдущими версиями. Приложения, написанные для предыдущих версий, сохраняют возможность устанавливать соединения с SQL Server более поздней версии без дополнительной доработки.
Аутентификация SQL Server необходима под управлением операционных систем, которые не поддерживают серверную часть программного интерфейса доверительных соединений. Режим аутентификации SQL Server так же должен быть установлен при разрешении доступа пользователям из интернета, поскольку им не доступна аутентификация средствами Windows.
Права доступа
После того, как клиент базы данных прошёл аутентификацию, он получает доступ к SQL Server. Для получения доступа к любой базе данных, учётная запись пользователя (login) отображается в пользователя данной базы данных (user). Подобное отображение учётной записи необходимо для каждой базы данных, доступ к которой пользователь хочет получить. Отображение сохраняется в системной таблице sysusers, которое имеется в любой базе данных. Такой подход обеспечивает высокую степень безопасности, защищая от предоставления пользователю автоматического доступа ко всем базам данных и их объектам. Объект пользователь базы данных (user) применяется для предоставления доступа ко всем объектам базы данных (таблицам, представлениям, хранимым процедурам). В пользователя базы данных (user) может отображаться учётная запись Windows, группа Windows, и учётная запись SQL Server.
В случае, когда учётная запись не отображается в пользователя базы данных (user), клиент всё равно может получить доступ к базе данных под гостевым именем guest, если оно разрешено. Обычно пользователю guest предоставляется минимальный доступ только в режиме чтения, но в некоторых ситуациях и этот доступ необходимо запретить.
SQL Server воспринимает команды пользователя, после того, как пользователь успешно пройдёт аутентификацию. Большинство действий в базе данныз выполняется с помощью команд T-SQL. При выполнении команды T-SQL SQL Server проверяет права пользователя на выполнение этой команды, что гарантирует наличие у пользователя прав на выполнение команды. Если пользователь не имеет прав на выполнение команды, или не имеет прав на доступ к объектам базы данных, которые данная команда будет использовать, сервер отклоняет её выполнение и выдаёт сообщение об ошибке.
Компоненты системы безопасности sql Server
Основой системы безопасности SQL Server являются учётные записи, логины(login), пользователи(user), роли (role), группы(group).
Учётная запись отображается в пользователя баз данных, которые в свою очередь могут объединяться в группы и роли для упрощения управления системой безопасности.
SQL Server управляет работой пользователей с использованиеv идентификатора учётной записи (login). Для получения доступа к серверу, необходимо зарегистрироваться на SQL сервере, либо в домене Windows в зависимости от выбранного режима аутентификации. С каждым пользователем, установившим соединение с сервером ассоциируется идентификатор учётной записи (loginID).
При использовании режима ауетенфикации SQL Server, член роли sysadmin должен создать для пользователя логин, задав пользовательское имя и пароль для доступа к серверу. При этом создаваемая учётная запись не имеет отношения с учётной записью Windows. Можно создать учётную запись пользователя Windows с любым именем, включая её имя в домене. При подключении к серверу, необходимо указать имя и пароль пользователя. Данные об учётных записях пользователей хранятся в таблице syslogins системной базы данных master.
Для создания пользователей в SQL Server 2000 использовалась системная хранимая процедура sp_addlogin.
sp_addlogin [@loginname] ‘login’ [, [@password=]] ‘password’
[, [defdb=]] ‘database’
[, [@deflanguage=]] ‘database’
[, [@sid]] ‘SID’
[, [@encrypt=]] ‘encryption’
login – в качесове данного параметра указывается имя учётной записи SQL Server, которое будет использоваться для аутентификации пользователя.
password – пароль, который ассоциируется с данной учётной записью. При создании учётной записи, пароль можно не указывать. При этом. если пароль не указан, необходимо сказать пользователю, чтобы он задал пароль при первом входе в систему.
database – база данных по умолчанию. Именно к этой базе данных пользователь получает доступ после подключения к SQL Server.
language – параметр, который определяет язык, который будет выбран для данного пользователя при соединении с SQL Server.
sid – security id. создавать на различных серверах пользователей с одинаковыми sid.
encryption option – определяет, будет ли шифроваться пароль для данной учётной записи.
Создание логина в SQL Server 2008.
CREATE LOGIN loginname
{WITH OPTIONS}
PASSWORD = ‘password’
SID = ‘sid’
DEFAULT DATABASE = database_name
DEFAULT LANGUAGE = ‘language’
CHECK_EXPIRATION = {ON|OFF}
password – пароль, который ассоциируется с данной учётной записью. При создании учётной записи, пароль можно не указывать. При этом. если пароль не указан, необходимо сказать пользователю, чтобы он задал пароль при первом входе в систему.
database – база данных по умолчанию. Именно к этой базе данных пользователь получает доступ после подключения к SQL Server.
language – параметр, который определяет язык, который будет выбран для данного пользователя при соединении с SQL Server.
sid – security id. создавать на различных серверах пользователей с одинаковыми sid.
CHECK_EXPIRATION – определяет применение политики паролей для данного логина. Хотя параметр database не является обязательным, рекомендуется всегда ассоциировать учётную запись пользователя с определённой базой данных. В противном случае, пользователь будет подключён к системной безе данных мастер, что может привести к очень нежелательным последствиям.
При использовании режима аутентификации Windows представитель стандартной роли сервера sysadmin должен указать SQ L серверу, какие группы и пользователи Windows имеют доступ к серверу. При использовании аутентификации Windows имя и пароль пользователя не указывается. Проверка правильности имени пользователя и пароля возлагается на контроллер домена Windows. При подключении клиента к SQL Server используется доверительное соединение, которое устанавливается операционной системой только при регистрации пользователя в домене. Поскольку невозможно установить доверительное соединение без предварительной регистрации в домене, SQL Server не выполняет никаких действий по аутентификации пользователя, а просто считывает информацию о пользователе из атрибутов доверительного соединения. Сервер ищет соответствия имени пользователя, пытающегося установить соединение с именем в системной таблице syslogins, которому разрешён доступ. Если соответствие найдено, то доступ предоставляется, в противном случае, поиск соответствия выполняется для групп, к которым принадлежит пользователь. Если соответствие всё равно не найдено, доступ к SQL Server не разрешается, и пользователь получает сообщение об ошибке.
Необходимо помнить, что учётная запись Windows имеет приоритет перед учётными записями SQL Server. То есть, если пользователь зарегистрированный в домене Windows пытается установить соединение с сервером, использующим смешанный режим аутентификации, используя имя и пароль учётной записи SQL Server, для предоставления доступа всё равно будет использована учётная запись Windows.
В большинстве случаев учётная запись SQL Server создаётся с целью предоставления доступа, но бывают ситуации, когда необходимо запретить доступ к серверу пользователю или группе. При наличии сложной системы безопасности Windows, доступ обычно предоставляется группе пользователей. Но если в группе имеется пользователь, которому нельзя разрешать доступ к SQL Server, его следовало бы исключить из этой группы, но такой подход является неприемлемым, если группа предназначена не только для объединения пользователей, имеющих доступ к SQL Server, но и для выполнения каких-то дополнительных функций. Для этого необходимо создать учётную запись с целью запрещения доступа, это гарантирует, что пользователь никаким образом не сможет установить соединение с сервером. Создав группу Windows, и запретив ей доступ к SQL Server можно включать в неё пользователей, которым необходимо отказать в доступе. Такой подход позволяет решить проблемы отслеживания представительства пользователей в группах, имеющих доступ к SQL Server.
При установке смешанного режима аутентификации в SQL Server создаётся стандартная учётная запись sa. sa – это специальная учётная запись администратора SQL Server. По умолчанию она соответствует встроенной системной роли сервера sysadmin и не может быть изменена. Эта учётная запись появилась уже в первых версиях SQL Server и поддерживается в современных версиях для сохранения совместимости с приложениями, написанными для предыдущих версий SQL Server. sa не рекомендуется использовать для администрирования сервера, хотя этот пользователь имеет все административные права. Вместо этого рекомендуется создать новых пользователей и включить их в группу sysadmin. Использование sa рекомендуется оставить на тот случай, когда системные администраторы по каким-либо причинам окажутся недоступны, или администратор забудет их пароли. По умолчанию пользователь sa может иметь пустой пароль, поэтому сразу после установки SQL Server рекомендуется изменить пароль для этой учётной записи.