Главная » Microsoft SQL Server, Базы данных » Безопасность базы данных

0

После получения доступа к серверу пользователь может получить доступ к отдельным базам данных. Система безопасности баз данных относительно сложная.

Изначально доступ к базе данных устанавливается либо путем добавления базы данных пользователю, либо добавления пользователя базе данных.

Гостевые учетные записи

Любой пользователь, желающий получить доступ к базе данных, но для которого в ней не создана учетная запись, автоматически получает привилегии гостя, если в базе данных существует учетная запись guest (см. рис. 40.1).

При создании базы данных учетная запись guest автоматически не создается — ее нужно добавлять в базу данных вручную с помощью программного кода. При этом регистрационную запись guest не обязательно определять для сервера баз данных:

EXEC sp_adduser ‘Guest’

Будьте очень осторожны с использованием гостевой учетной записи. Несмотря Внимание! на то что в некоторых случаях удобнее открывать доступ к базе пользователям без обязательной их регистрации в системе безопасности базы данных, следует учитывать, что разрешения, предоставленные пользователю с учетной записью guest, применяются абсолютно ко всем пользователям.

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

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

Доступ пользователям к любой базе данных должен открываться в явном виде. Так как эта схема представляет собой отношение “многие ко многим”, доступом к базе можно управлять как на уровне регистрационных записей, так и на уровне баз данных.

Если некоторой учетной записи открыт доступ к базе данных, то ей может быть назначена учетная запись базы. Если ее имя совпадает с именем регистрационной записи сервера, то ей можно назначить другое имя — оно будет служить чем-то вроде псевдонима регистрационной записи, который распознает база данных.

Для предоставления доступа к базе данных на уровне регистрационных записей в Object Explorer используется страница User Mappping диалогового окна Login Properties (рис. 40.6).

Puc. 40.6. Диалоговое окно Login Properties используется для предоставления доступа к базе данных регистрационной записи и для назначения ей ролей

Многие настройки системы безопасности включают в себя множества объектов, На заметку таких как пользователи и базы данных, или роли и разрешения объектов. Эти настройки можно установить в разных местах: в диалоговом окне Login Permission, в роли или на странице свойств объекта.

Для предоставления доступа пользователям со стороны базы данных используйте команду New User контекстного меню в узле Database^Security^Users. В поле Login Name открывшегося диалогового окна Database User-New (рис. 40.7) введите имя добавляемой

регистрационной записи. Для поиска регистрационных записей используется кнопка с многоточием. В поле User Name вводится имя пользователя, под которым он будет известен базе данных.

Рис. 40.7. Диалоговое окно Database User Properties используется для добавления новых пользователей базы данных, а также для управления существующими пользователями

Предоставление доступа в программном коде

Для предоставления доступа пользователю к базе данных используется хранимая процедура sp_grantdbaccess. Эта процедура должна быть вызвана из базы данных, к которой пользователю предоставляется доступ. Первым ее аргументом выступает регистрационная запись сервера, вторым — имя учетной записи базы данных, если оно отличается:

USE Family

ЕХЕС sp_grantdbaccess ‘XPS\Lauren’, 1LRN’

После выполнения этой хранимой процедуры регистрационное имя Lauren появится в списке пользователей базы данных как LRN.

Для снятия доступа к базе данных используется хранимая процедура sp_revokedbaccess. При этом требуется указать только имя пользователя базы данных:

USE Family

ЕХЕС sp_revokedbaccess ‘LRN’

I Для получения списка пользователей базы данных программным путем создай- сус те запрос к представлению каталога sysdatabase_principals.

Фиксированные роли базы данных

SQL Server содержит несколько стандартных (или фиксированных) ролей базы данных. Подобно серверным фиксированным ролям, в основном они предназначены для выполнения

административных задач. Один пользователь может принадлежать нескольким ролям. Среди фиксированных ролей базы данных стоит упомянуть следующие.

?               Роль db_accessadmin позволяет авторизировать пользователя для доступа к базе данных, но не для управления системой безопасности уровня базы.

?               Роль db_backupoperators позволяет выполнять задачи установки контрольных точек, создания резервных копий, запуска команды DBCC. В то же время она не открывает возможности восстановления базы данных — это разрешено только членам роли sysadmin.

?               Роль db_datareaders позволяет читать все данные в базе. Эта роль является эквивалентом разрешения доступа ко всем объектам базы и может быть замещена разрешением deny отдельных объектов.

?               Роль db_datawr iters позволяет записывать данные в базу. Эта роль является эквивалентом разрешения доступа ко всем объектам базы и может быть замещена разрешением deny отдельных объектов.

?               Роль db_ddladmins позволяет выполнять инструкции DDL (CREATE, ALTER и DROP).

?               Роль db_denydatareaders блокирует чтение из всех таблиц базы данных. Этот запрет замещает собой любые разрешения на уровне объектов.

?               Роль db_deny data writers блокирует изменение данных во всех таблицах базы данных. Этот запрет замещает собой любые разрешения на уровне объектов.

?               Роль db_owner открывает полный доступ ко всем объектам базы данных. Эта роль включает в себя все возможности остальных ролей. Она отличается от роли пользователя dbo и не является эквивалентом серверной роли sysadmin на уровне базы данных, поскольку запрет на уровне объектов замещает собой предоставленное ролью db_owner разрешение.

?               Роль db_securityadmins позволяет управлять системой безопасности базы данных — ролями и разрешениями.

Назначение фиксированных ролей базы данных в Management Studio

Фиксированную роль базы данных можно назначить пользователю в графической среде Management Studio. Для этого можно использовать любую из процедур, описанных ниже.

?               Роль пользователю можно назначить в диалоговом окне Database User Properties (см. рис. 40.7), как в случае его создания, так и в случае его существования.

?               Роль пользователю можно назначить в диалоговом окне Database Role Properties (рис. 40.8). Чтобы открыть это окно, щелкните правой кнопкой мыши на папке Roles в узле Security базы данных и выберите в контекстном меню пункт Properties.

Назначение пользователей фиксированным ролям базы данных программным путем

В программном коде добавить пользователя в фиксированную роль базы данных можно с помощью хранимой процедуры sp_addrole.

j Для просмотра пользователей, назначенных роли, выполните запрос к представ-

оус лению каталога sysdatabase_role_members, объединенному с sysdatabase_ I * principal.

Puc. 40.8. В диалоговом окне Database Role Properties перечислены все пользователи, назначенные текущей роли. Назначение и открепление пользователей от роли выполняется с помощью кнопок Add и Remove

Разрешения защищаемых объектов

Пользователю базы данных могут быть предоставлены конкретные разрешения к определенным защищаемым объектам. Для этого используется страница Securabies диалогового окна Database User (рис. 40.9).

Способ конфигурирования разрешений зависит от типа объекта. Каждая база данных представляет собой защищаемый объект и имеет ряд специфичных только для нее разрешений.

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

Инструкции GRANT. REVOKE и DENY мы подробно рассмотрим в следующих разделах.

Роли приложений

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

Так как за роль приложения придется расплачиваться потерей контроля над Внимание! идентичностью пользователя, я выступаю решительно против использования ролей приложений.

Рис. 40.9. Страница Securables используется для конфигурирования разрешений к отдельным объектам

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии