
- •Основные функции администратора баз данных
- •Основные сведения о sql 2000 Server. Ключевые характеристики и назначение Microsoft sql Server 2005. Основные компоненты.
- •Создание пользовательских баз данных. Создание базы данных из sql server management studio. Создание базы данных при помощи команды create daabase.
- •Системные базы данных.
- •Файлы база данных и журналы транзакций. Применение файловых групп. Режимы работы базы данных. Расширенные свойства баз данных
- •Выполнение служебных операций с базами данных: увеличение размера базы данных, уменьшение размера базы данных, перенос файлов баз данных, переименование, удаление базы.
- •7 Терминология и основы системы безопасности sql Server 2005
- •8 Логины sql Server 2005 Выбор типа логина
- •Создание логинов в sql Server 2005, create login, парольные политики, свойства логинов
- •Логины, создаваемые по умолчанию
- •9 Серверные роли. Разрешения на уровне сервера
- •10 Пользователь и схема
- •11 Создание, изменение и удаление пользователей базы данных
- •Встроенные пользователи базы данных
- •12 Предоставление прав на объекты в базе данных
- •13.Роли приложений. Изменение контекста выполнения. Выражение execute as.
- •14.Основы резервного копирования sql server 2005. Типы резервного копирования.
- •15.Основы восстановления баз данных. Проведение восстановления
- •16. Режимы восстановления баз данных. Оперативный режим восстановления. Восстановление отдельных страниц. Восстановление системных баз данных.
- •Восстановление базы данных в оперативном режиме
- •Восстановление отдельных страниц базы данных
- •Восстановление системных баз данных
- •17 Автоматическая доставка журналов
- •18. Зеркальное отображение баз данных.
- •19 Управление транзакциями (не совсем!!!!!)
- •21. Репликация баз данных. Планирование, реализация, мониторинг и управление репликацией. Типы репликации.(неполное)
- •22 Средства администрирования
- •23. Применение sqlcmd.
- •24 Мониторинг производительности sql Server 2005
- •Средства для мониторинга и анализа производительности
13.Роли приложений. Изменение контекста выполнения. Выражение execute as.
Роли приложений (application roles) SQL Server 2005
Это метод заключается в том, что разрешения предоставляются не пользователю, а приложению, из которого пользователь подключается к базе данных. Применение этого способа выглядит так:
-
пользователь от имени любого логина подключается к серверу и делает нужную базу данных текущей;
-
затем пользователь выполняет хранимую процедуру sp_setapprole, чтобы активизировать указанную им роль приложения. При этом в базе данных он получает права этой роли приложения (и теряет свои текущие права);
-
после того, как необходимость в правах роли приложения закончилась, пользователь может опять переключиться на свою исходную учетную запись (sp_unsetapprole).
Создание роли приложения производится —из контейнера Имя_базы_данных | Security | Roles | Application Roles. Назначить пользователей этой роли невозможно, зато ей нужно будет указать пароль, который будет использоваться при активизации. Команда Transact-SQL на создание роли приложения:
CREATE APPLICATION ROLE AppRole1 WITH PASSWORD = 'password';
Предоставление прав этой роли ничем не отличается от предоставления прав обычным пользователям или ролям базы данных.
При подключении к базе данных клиентская программа, которая использует роль приложения, должна выполнить код, аналогичный следующему:
-Объявляем переменную appCookie.
-Она потребуется для возвращения к исходным правам: DECLARE @appCookie varbinary(8000);
-Активизируем роль приложения: EXEC sp_setapprole 'AppRole1','password','none',TRUE,@appCookie OUTPUT;
- Проверяем: SELECT USER_NAME();
-Возвращаемся к исходным правам: EXEC sp_unsetapprole @appCookie;
-Проверяем еще раз: SELECT USER_NAME();
Можно и не возвращаться к исходным правам. Но если потребуется во время работы имени роли приложения обратиться к другой базе данных, вы не сможете получить в ней других прав, кроме прав, предоставленных для специального пользователя guest.
Изменение контекста выполнения. Выражение EXECUTE AS
Изменение контекста выполнения команд Transact-SQL. Например, вы подключились от имени пользователя, у которого нет прав на определенную таблицу. Но в то же время вы обладаете правом выступать от имени другого пользователя, у которого права на эту таблицу есть (право действовать от имени другого пользователя называется IMPERSONATE). Вместо того чтобы разрывать соединение с SQL Server и входить заново от имени второго пользователя, вы можете просто "превратиться" во второго пользователя при помощи выражения EXECUTE AS и выполнить необходимые запросы к таблице от имени этого пользователя и с его правами, а потом, при желании, вернуться обратно.
Возможности у EXECUTE AS:
-
Выражение EXECUTE AS могут использовать любые пользователи, поэтому основное назначение этого выражения — "подключение" пользователю дополнительных прав на время выполнения определенных команд;
-
позволяет возвращаться "обратно" — к исходной учетной записи, которая использовалась до смены контекста выполнения. Для этого используется команда REVERT.
Работа с выражением EXECUTE AS:
-
откройте свойства пользователя User1 в Management Studio и перейдите на вкладку Securables;
-
нажмите кнопку Add под списком Securables, в открывшемся окне установите переключатель в положение All objects of the types (Все объекты типа) и нажмите кнопку OK;
-
в списке типов объектов выберите Users и нажмите кнопку OK;
-
в загруженном списке пользователей выберите пользователя User2 и установите для него флажок в столбце Grant напротив разрешения IMPERSONATE.
Соответствующая команда Transact-SQL может выглядеть так:
GRANT IMPERSONATE ON USER::User2 TO User1;
После этого можно использовать возможности выражения EXECUTE AS так:
-Переключаемся в контекст выполнения User2: EXECUTE AS USER = 'User2';
-Обращаемся к таблице Table2: SELECT * FROM dbo.Table2;
-Возвращаемся в контекст выполнения User1: REVERT;
EXECUTE AS CALLER — все команды в хранимой процедуре или функции будут выполнены с правами текущего пользователя (при этом неважно, кто является владельцем этой хранимой процедуры или функции);
EXECUTE AS SELF — все команды в хранимой процедуре или функции будут выполняться от имени пользователя, который создает или изменяет данную процедуру или функцию.
EXECUTE AS OWNER — все команды хранимой процедуры или функции будут выполняться от имени ее текущего владельца.
Выражение EXECUTE AS можно использовать не только для изменения контекста выполнения на уровне базы данных, но и на уровне сервера (т. е. логинов). Для этого ключевое слово USER меняется на LOGIN, например: EXECUTE AS LOGIN = 'Login2'.