Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Управляем разрешениями для экземпляра
Теперь вы знаете, как предоставить доступ пользователю к экземпляру SQL Server, но до сих пор ничего не было сказано о том, какие разрешения могут иметь эти имена входа в SQL Server. Как правило, пользователю необходим доступ к каким-либо данным. Однако возможно вам придется создать некоторые имена входа с разрешениями на выполнение задач администрирования. Для выполнения этой задачи SQL Server предоставляет серверные роли на уровне экземпляра. (Серверные роли являются фиксированными, нельзя создать новые роли на уровне экземпляра). В табл. 2.2 перечислены фиксированные серверные роли, созданные SQL Server 2005.
Получаем информацию о принадлежности к серверной роли Выполнив запрос системной функции IS_SRVROLEMEMBER можно узнать, принадлежит текущий пользователь к одной из серверных ролей. Следующий пример кода Transact SQL возвращает значение 1, если текущее имя входа принадлежит к серверной роли sysadmin, и значение 0 в противном случае. SELECT IS_SRVROLEMEMBER ('sysadmin'); Добавляем имя входа к серверной роли. Добавить имя входа к существующей серверной роли можно при помощи системной хранимой процедуры sp_addsrvrolemember. Следующий пример добавляет Mary к серверной роли sysadmin: EXECUTE sp_addsrvrolemember " Mary", " sysadmin"; Удаляем имя входа из серверной роли. Чтобы удалить имя входа из серверной роли, можно использовать хранимую процедуру sp_dropsrvrolemember. Следующий пример удаляет пользователя Mary из серверной роли sysadmin: EXECUTE sp_dropsrvrolemember " Mary", " sysadmin"; Предоставляем индивидуальные разрешения. SQL Server 2005 предоставляет более гранулярную структуру разрешений, что позволяет с большей точностью контролировать операции входа. Разрешениями можно манипулировать при помощи операторов GRANT, DENY и REVOKE. Информация о серверных разрешениях доступна из представления каталога sys.server_permissions. В следующем примере пользователю Mary предоставляются права на создание и выполнение трассировок в SQL Server Profiler: GRANT ALTER TRACE TO Mary; Пользователи могут получить информацию о своих разрешениях с помощью функции fn_my_permissions. Следующий пример отображает разрешения пользователя: SELECT * FROM fn_my_permissions (NULL, 'SERVER'); Дополнительная информация. Со списком серверных разрешений можно ознакомиться в разделе " Предоставление разрешений SQL Server. Инструкция GRANT (T-SQL)" в SQL Server Books Online (Электронная документация по SQL Server). Запрещаем доступ пользователям В некоторых ситуациях, например, когда пользователь увольняется из организации, необходимо запретить доступ определенному имени входа. Если этот запрет временный, можно не удалять имя входа из экземпляра, а просто отключить его. При отключении доступа свойства имени входа и его сопоставление пользователям базы данных сохраняются. Повторно включив это имя входа, вы можете работать с прежними свойствами. Чтобы отключить и включить имя входа, выполните следующую инструкцию ALTER: · Отключаем имя входа ALTER LOGIN Mary DISABLE; · Включаем имя входа ALTER LOGIN Mary ENABLE; Можно проверить, отключены ли имена входа, выполнив запрос к представлению каталога sql_logins, как показано в следующем примере: · Отключаем имя входа ALTER LOGIN Mary DISABLE; GO · Выполняем запрос к системному представлению каталога · SELECT * FROM sys.sql_logins WHERE is_disabled=1; GO · Включаем имя входа ALTER LOGIN Mary ENABLE; Совет. В SQL Server Management Studio отключенные имена входа помечаются красной стрелкой. Эта стрелка отображается в правом нижнем углу значка имени входа, который находится в папке Security/Logins (Безопасность/Имена входа) в панели Object Explorer (Обозревателя объектов). С другой стороны, если необходимо удалить имя входа из данного экземпляра, следует использовать инструкцию DROP LOGIN. Следующий пример удаляет имя входа. DROP LOGIN Mary; Предупреждение. При удалении имени входа SQL Server 2005 не удаляет пользователей базы данных, сопоставленных этому имени входа. Предупреждение. Удаление имени входа, которому сопоставлены пользователи или группы Windows не гарантирует, что эти пользователи или члены групп не смогут получить доступ к SQL Server. Учтите, что такие пользователи могут принадлежать и к какой-либо другой группе Windows с действующим именем входа. Устанавливаем соединение с SQL Server с использованием проверки подлинности SQL Server Следующая программа на Microsoft Visual Basic (она имеется в файлах примеров под именем ConnectUsingSQL Auth.vb.txt ) показывает, как установить соединение с SQL Server с использованием проверки подлинности SQL Server: " Создаем экземпляр объекта SQLConnection Dim oConn as New SQLClient.SQLConnection " Определяем строку соединения " с заданными именем входа и паролем oConn.ConnectionString=" server=localhost; database=AdventureWorks; " + _ " user id= Mary; password=34TY$$543" " Открываем соединение oConn.Open() " Выполняем необходимые действия ... " Закрываем соединение oConn.Close() Аннотация: Данная лекция содержит материалы по управлению доступом к базам данных SQL Server, в частности рассматривается управление пользователями базы данных, включение пользователя guest, создание ролей базы данных, предоставление разрешений на базу данных и добавление пользователя базы данных Ключевые слова: SQL, server, доступ, базы данных, пользователь, sysadmin, база данных ролей, база данных групп, пользовательский контекст, ANSI, объект базы данных, таблица, управление доступом, операции, наследование, контекст безопасности, ядро, субъект системы, выполнение хранимой процедуры, revert, безопасность, Windows, surface area Одного предоставления доступа к экземпляру SQL Server будет недостаточно для приложения, которому необходим доступ к данным. Предоставив доступ к экземпляру SQL Server, необходимо предоставить доступ к определенным базам данных. Доступ к базам данных предоставляется посредством добавления пользователей базы данных и сопоставления пользователям базы данных имен входа. Каждое имя входа сопоставляется пользователю базы данных для каждой базы данных, к которой этому имени входа нужен доступ. Каждый пользователь базы данных сопоставляется только одному имени входа, за исключением пользователя базы данных dbo. Примечание. В предыдущих версиях SQL Server можно было использовать для сопоставления нескольких имен входа одному пользователю базы данных системную хранимую процедуру sp_addalias. Так можно поступить и в SQL Server 2005. Однако эту функцию использовать не рекомендуется, поскольку она считается устаревшей и, возможно, будет удалена из следующих версий программы. Предоставление доступа к базам данных Пользователи базы данных - это участники уровня базы данных. Все имена входа, за исключением серверной роли sysadmin, должны быть сопоставлены пользователям, которые, в свою очередь, сопоставлены базе данных, к которой им нужен доступ. Члены роли sysadminсопоставлены пользователю dbo во всех базах данных сервера. Популярное:
|
Последнее изменение этой страницы: 2017-03-11; Просмотров: 575; Нарушение авторского права страницы