Роли приложений
Область применения: SQL Server (все поддерживаемые версии)
База данных SQL Azure
Управляемый экземпляр SQL Azure
Роль приложения — это участник базы данных, позволяющий приложению выполняться со своими, подобными пользовательским, правами доступа. Роли приложений можно использовать для разрешения доступа к определенным данным только тем пользователям, которые подключены посредством конкретного приложения. В отличие от ролей баз данных, роли приложений не содержат элементов и по умолчанию находятся в неактивном состоянии. Роли приложений активируются с помощью процедуры sp_setapprole, которая требует указания пароля. Так как роли приложений являются участниками на уровне базы данных, они имеют доступ к другим базам данных только с разрешениями, предоставленными учетной записи пользователя guestв этих базах данных. Таким образом, любая база данных, в которой была отключена учетная запись пользователя guest , не будет доступна для ролей приложений в других базах данных.
В SQL Serverроли приложений не имеют доступ к метаданным уровня сервера, так как они не связаны с участником на уровне сервера. Чтобы отключить это ограничение, позволив тем самым ролям приложений получать доступ к метаданным уровня сервера, установите глобальный флаг 4616. Дополнительные сведения см. в разделе "Флаги трассировки" (Transact-SQL) и DBCC TRACEON (Transact-SQL).
Соединение с ролью приложения
Ниже представлены этапы процесса, при помощи которого роль приложения переключает контексты безопасности.
Пользователь выполняет клиентское приложение.
Клиентское приложение соединяется с экземпляром SQL Server в качестве пользователя.
Приложение выполняет хранимую процедуру sp_setapprole с использованием пароля, известного только этому приложению.
Если имя и пароль роли приложения достоверны, она становится активной.
На этом этапе соединение утрачивает разрешения пользователя и приобретает разрешения роли приложения.
Разрешения, полученные через роль приложения, действуют в течение всего соединения.
В более ранних версиях SQL Serverединственным способом для пользователя вновь приобрести свой исходный контекст безопасности после активации роли приложения было отсоединение и повторное соединение с SQL Server. Начиная с версии SQL Server 2005 (9.x)процедура sp_setapprole имеет новый параметр, который создает файл cookie. Этот файл содержит сведения о контексте до того, как роль приложения переходит в активное состояние. Файл cookie может использоваться процедурой sp_unsetapprole для возврата сеанса в исходный контекст. Дополнительные сведения об этом новом параметре и примере см. в разделе sp_setapprole (Transact-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) |