Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
Роль приложения — это участник базы данных, позволяющий приложению выполняться со своими, подобными пользовательским, правами доступа. Роли приложений можно использовать для разрешения доступа к определенным данным только тем пользователям, которые подключены посредством конкретного приложения. В отличие от ролей баз данных, роли приложений не содержат элементов и по умолчанию находятся в неактивном состоянии. Роли приложений активируются с помощью процедуры sp_setapprole, которая требует указания пароля. Так как роли приложений являются участниками на уровне базы данных, они имеют доступ к другим базам данных только с разрешениями, предоставленными учетной записи пользователя guestв этих базах данных. Таким образом, любая база данных, в которой гость отключена, недоступна для ролей приложений в других базах данных.
В SQL Server роли приложений не могут получить доступ к метаданным уровня сервера, так как они не связаны с субъектом уровня сервера. Чтобы отключить это ограничение и разрешить ролям приложений доступ к метаданным уровня сервера, задайте глобальный флаг трассировки 4616 с помощью -T4616 или DBCC TRACEON (4616, -1). Если вы предпочитаете не включать этот флаг трассировки, можно использовать хранимую процедуру, подписанную сертификатом, чтобы разрешить ролям приложений просматривать состояние сервера. Пример кода см. в этом примере скрипта на GitHub.
Подключиться с использованием роли приложения
Ниже представлены этапы процесса, при помощи которого роль приложения переключает контексты безопасности.
Пользователь выполняет клиентское приложение.
Клиентское приложение подключается к экземпляру SQL Server в качестве пользователя.
Затем приложение выполняет
sp_setapproleхранимую процедуру с паролем, известным только для приложения.Если имя роли приложения и пароль верны, роль приложения активируется.
На этом этапе соединение утрачивает права пользователя и принимает на себя права роли приложения.
Разрешения, полученные через роль приложения, действуют в течение всего соединения.
В более ранних версиях SQL Server для пользователя единственный способ повторно получить исходный контекст безопасности после запуска роли приложения — отключиться от SQL Server и снова подключиться к нему. Начиная с SQL Server 2005 (9.x), sp_setapprole есть параметр, который создает файл cookie. Файл cookie содержит информацию о контексте до включения роли приложения. Затем хранимая sp_unsetapprole процедура использует файл cookie для возврата сеанса в исходный контекст. Сведения об этом новом параметре и примере см. в статьях sp_setapprole (Transact-SQL) и sp_unsetapprole (Transaction-SQL).
Внимание
Параметр encrypt ODBC не поддерживается в SqlClient. При передаче конфиденциальных сведений по сети следует пользоваться протоколом TLS (ранее — SSL) или IPSec для шифрования канала. Если необходимо сохранить учетные данные в клиентском приложении, следует зашифровать их при помощи функций API шифрования. В SQL Server 2005 (9.x) и более поздних версиях параметр password сохраняется в виде однонаправленного хэша.
Связанные задачи
| Задача | Тип |
|---|---|
| Создайте роль приложения. | Создать роль приложения и CREATE APPLICATION ROLE (Transact-SQL) |
| Изменение роли приложения. | ALTER APPLICATION ROLE (Transact-SQL) |
| Удалить роль приложения. | DROP APPLICATION ROLE (Transact-SQL) |
| Использование роли приложения. | sp_setapprole (Transact-SQL) |