Microsoft SQL Server 2000
Роли пользователей
На уровне сервера служба безопасности оперирует понятием «учетная запись» (login). При подключении к SQL Server требуется ввести login и пароль. Login внутри SQL Server-а может совпадать с login-ом операционной системы (называется такая процедура подключения – аутентификация Windows. Так сейчас сделано в а-303).
Каждой учетной записи можно предоставить права на манипуляции со всеми (!) базами сервера. Эти права называются ролями сервера (server role).
Имеется 9 стандартных ролей сервера (fixed server role):
Sysadmin – любые типы администрирования SQL Server-а.
Serveradmin – конфигурирование и выключение сервера.
Setupadmin – управление связанными серверами и процедурами, автоматически запускаемыми при старте SQL Server.
Securityadmin – регистрация и удаление учетных записей, выдача пользователям прав на доступ к базам данных.
Processadmin – управление процессами, запущенными в SQL Server.
Dbcreator – может создавать и изменять базы данных.
Diskadmin – управляет файлами SQL Server.
Bulkadmin – управление массивным копированием (при архивировании и восстановлении баз из резервных копий).
Новые учетные записи можно создавать с помощью Enterprise Manager, а можно с помощью команд SQL. Для создания новой учетной записи вызывается системная хранимая процедура:
sp_addlogin @loginame = ‘новый_login’
[,@passwd = ‘пароль’]//если нужен пароль
[,@defdb = ‘имя_базы_данных_по_умолчанию’]// по умолчанию системная база ‘master’
[,@deflanguage = ‘язык_по_умолчанию’]
[,@sid = ‘SID’]
[,@encryptopt = ‘опция_шифрования_пароля’]
SID(Security ID) – двоичное число, которое является идентификатором безопасности учетной записи.
"Опция_шифрования_пароля" может принимать одно из значений:
NULL – пароль данной учетной записи будет шифроваться (по умолчанию);
Skip_encryption – пароль не будет шифроваться;
Skip_encryption_old – используется старый способ шифрования поролей, принтый в старых версиях SQL Server (используется для совместимости).
Для создания учетных записей SQL Server, совпадающих с login-ами отдельных пользователей Windows NT или группы пользователей используется хранимая процедура:
sp_grantlogin @loginname = ‘Login_в_WinNT’
Login_в_WinNT включает полное имя пользователя с указанием домена. Например, в домене VT определена учетная запись student303. Регистрация производится командой:
EXEC sp_grantlogin ‘VT\student303’
Создание учетных записей через Enterprise Manager: выделить значок logins в папке security нужного сервера в правой части панели откроется список учетных записей.
Внутри базы данных система безопасности оперирует понятием пользователь (user). Пользователям выдаются различные права (изменение, добавление, удаление) на объекты той базы данных, в которой они зарегистрированы.
Одна учетная запись (login) ассоциируется в каждой базе данных, к которой она имеет доступ, с одним пользователем (user). При этом один user может использоваться для предоставления доступа нескольким людям, подключенным к серверу под разными login-ами.
Например, учетная запись, имеющая доступ к базам данных A, B, C, может проходить в базе A под именем пользователя ‘vasya’, в базе B под именем ‘grant’, а в базе C еще под каким-то именем.
Для связывания учетной записи (login) с определенным именем пользователя (user) может использоваться хранимая процедура:
sp_adduser @loginname = ‘login’ // имя учетной записи
[,@name_in_db = ‘user’] // имя пользователя базы данных
[,@grpname = ‘role’]// имя роли
Если используется учетная запись Windows NT, то ее отображение в имя пользователя производится с помощью хранимой процедуры:
sp_grantdbaccess @loginame = ‘login’ // Login в Windows NT
[,@name_in_db = ‘user’] // имя пользователя базы данных
Если необязательный параметр name_in_db не указывать, создается user с именем, совпадающим с login.
Внутри базы данных права доступа к объектам этой базы распределяются на уровне пользователей. Например, один пользователь имеет право добавлять и удалять строки таблицы A, таблицу B только читать, а в таблице С изменять существующие строки.
Администратор БД имеет полный доступ ко всем объектам базы.
Пользователь, который создал объект, считается владельцем объекта и имеет на этот объект все права (изменение, добавление, удаление). Владелец объекта может назначать другим пользователям права доступа на свой объект.
При создании базы данных определяются два стандартных пользователя: dbo и guest (public).
guest (public) – имеет минимальные права доступа. Любой новый пользователь автоматически получает уровень прав guest.
dbo – (Database owner – владелец базы данных) – пользователь с максимальными правами на базу.
Если несколько пользователей имеют одинаковые права доступа к объектам БД, этих пользователей удобно объединить в группу и давать права доступа общие для всех членов группы. Такие группы пользователей в SQL Server называются ролями базы данных (database role). Можно назначить права доступа к объектам базы данных для конкретной роли и работать с ней как с обычным пользователем. Например, если сотрудник переходит в другой отдел, достаточно удалить его из одной роли и добавить в другую, а не устанавливать новые права для каждого пользователя.
Роли базы данных бывают фиксированными, или стандартными (fixed database role), и роли пользователя (их ‘вручную’ определяет администратор БД).
Фиксированные роли базы данных:
db_owner – владелец всех объектов базы, имеет максимальные права.
db_accessadmin – может добавлять и удалять пользователей.
db_securityadmin – управлять всеми разрешениями, объектами, ролями и членами ролей.
db_ddladmin – может выполнять любые команды DDL, кроме GRANT, DENY и REVOKE.
db_backupoperator – может выполнять команды DBCC, CHEKPOINT и BACKUP.
db_datareader – может просматривать любые данные в любой таблице БД.