Нормальные формы


CREATE APPLICATION ROLE AppRole1



жүктеу 4,63 Mb.
бет70/72
Дата11.02.2023
өлшемі4,63 Mb.
#41261
түріУчебное пособие
1   ...   64   65   66   67   68   69   70   71   72
Копия Теория баз данных

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.




8.6 Изменение контекста выполнения. Выражение EXECUTE AS

Новая возможность SQL Server 2005/2008 — изменение контекста выполнения команд Transact-SQL. Например, вы подключились от имени пользователя, у которого нет прав на определенную таблицу. Но в то же время вы обладаете правом выступать от имени другого пользователя, у которого права на эту таблицу есть (право действовать от имени другого пользователя называется IMPERSONATE). Вместо того чтобы разрывать соединение с SQL Server и входить заново от имени второго пользователя, вы можете просто "превратиться" во второго пользователя при помощи выражения EXECUTE AS и выполнить необходимые запросы к таблице от имени этого пользователя и с его правами, а потом, при желании, вернуться обратно.


В принципе, возможность менять контекст выполнения была и в предыдущих версиях SQL Server. Она представлялась командой SETUSER (для обратной совместимости эта команда сохранена и в SQL Server 2005/2008). Однако возможностей у EXECUTE AS намного больше:

  • команда SETUSER позволяла менять контекст выполнения только пользователям с правами системного администратора (на уровне сервера) или dbo (на уровне базы данных). Поскольку прав у этих пользователей и так всегда достаточно, то обычно команда SETUSER применялась только для проверки, как та или иная команда будет выполняться от имени определенного пользователя. Выражение EXECUTE AS могут использовать любые пользователи, поэтому основное назначение этого выражения — "подключение" пользователю дополнительных прав на время выполнения определенных команд;

  • выражение EXECUTE AS, в отличие от команды SETUSER, позволяет возвращаться "обратно" — к исходной учетной записи, которая использовалась до смены контекста выполнения. Для этого используется команда REVERT. При этом с помощью EXECUTE AS вы вполне можете поменять контекст выполнения несколько раз. Каждая выполненная команда REVERT вернет контекст выполнения на один "уровень" назад.

Работа с выражением EXECUTE AS очень проста. Предположим, что у вас есть пользователь базы данных User1, у которого нет прав на таблицу Table2, и пользователь User2, у которого такие права есть. До начала применения команды EXECUTE AS необходимо предоставить пользователю User1 право IMPERSONATE на объект пользователя User2, чтобы он получил возможность выполнять команды от имени этого пользователя. На графическом экране это можно сделать так:



  • откройте свойства пользователя User1 в Management Studio и перейдите на вкладку Securables;

  • нажмите кнопку Add под списком Securables, в открывшемся окне установите переключатель в положение All objects of the types (Все объекты типа) и нажмите кнопку OK;

  • в списке типов объектов выберите Users и нажмите кнопку OK;

  • в загруженном списке пользователей выберите пользователя User2 и установите для него флажок в столбце Grant напротив разрешения IMPERSONATE.

Соответствующая команда Transact-SQL может выглядеть так:





жүктеу 4,63 Mb.

Достарыңызбен бөлісу:
1   ...   64   65   66   67   68   69   70   71   72




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау