应用程序角色

应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的特权来运行。 使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。 与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。 应用程序角色使用两种身份验证模式。 应用程序角色可使用 sp_setapprole 激活,但此过程需要密码。 因为应用程序角色是数据库级主体,所以它们只能通过其他数据库中为 guest 授予的权限来访问这些数据库。 因此,其他数据库中的应用程序角色将无法访问任何已禁用 guest 的数据库。

在 SQL Server 2005 中,应用程序角色无法访问服务器级元数据,因为它们不与服务器级主体关联。 若要禁用此限制,请允许应用程序角色访问服务器级别元数据,并设置全局标志 4616。 有关详细信息,请参阅跟踪标志 (Transact-SQL)DBCC TRACEON (Transact-SQL)

连接应用程序角色

应用程序角色切换安全上下文的过程包括下列步骤:

  1. 用户执行客户端应用程序。
  2. 客户端应用程序作为用户连接到 SQL Server。
  3. 然后应用程序用一个只有它才知道的密码执行 sp_setapprole 存储过程。
  4. 如果应用程序角色名称和密码都有效,将激活应用程序角色。
  5. 此时,连接将失去用户权限,而获得应用程序角色权限。

通过应用程序角色获得的权限在连接期间始终有效。

在 SQL Server 的早期版本中,用户若要在激活应用程序角色后重新获取其原始安全上下文,唯一的方法就是断开 SQL Server 连接,然后再重新连接。 在 SQL Server 2005 中,sp_setapprole 提供了一个新选项,它可以在激活应用程序之前创建一个包含上下文信息的 Cookie。 sp_unsetapprole 可以使用此 Cookie 将会话恢复到其原始上下文。 有关这个新选项和示例的信息,请参阅 sp_setapprole (Transact-SQL)

ms190998.security(zh-cn,SQL.90).gif安全说明:
SqlClient 不支持Microsoft ODBC encrypt 选项。 通过网络传输机密内容时,请使用安全套接字层 (SSL) 或 IPSec 对通道进行加密。 如果必须使凭据在客户端应用程序中持久化,请使用加密 API 函数来加密凭据。 在 SQL Server 2005 中,参数 password 是作为单向哈希值进行存储的。

请参阅

概念

了解上下文切换

其他资源

sp_setapprole (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助