1
数据库原理与应用技术
1.11.4 10.4 应用程序的安全管理

10.4 应用程序的安全管理

如何使用登录账号和权限实现数据库的安全访问,属于用户的权限管理。用户只要被授予使用某个语句或操作某个数据库对象的权限,就可以用任何工具来使用这些权限。

但有些时候,不允许用户用任何工具对数据库进行某些操作,而只能用特定的应用程序来处理,如一些关键数据或一些复杂的数据库,表间的数据关系可能很难直接用外键、规则等功能来维护。为了保证数据的完整性和一致性,应该使用设计良好的应用程序来对数据库进行操作,而不应让用户使用数据库工具直接修改数据,这时要求只能由专用的应用程序存取,以避免用户对数据库的错误操作。

因此,SQL Server中设计了应用程序角色的概念,这种安全机制可以指定数据库或其中的某些对象只能由某些特殊的应用程序访问。

应用程序角色的特点是不包含成员,任何用户都不能加入应用程序角色中,其角色权限在角色被激活时生效;应用程序角色在激活时需要口令;在激活应用程序角色后,当前用户的所有权限都会消失,代之以应用程序角色的权限。例如,人事数据库中包含档案表,这是敏感数据,一般都是要求保密的。因此,档案表设计为只允许通过专门的档案管理程序存取,任何用户无论是总经理还是数据库管理员都不能直接用外部工具访问。为此可以将所有用户对该表的所有操作权限全部设置为DENY,同时另外创建一个应用程序角色,并授予该角色所有权限。只有专门开发的档案管理程序可以提供这个应用程序角色激活所需的口令,当档案管理程序连接到数据库之后,就可以激活这个应用程序角色,从而进行正常的业务数据处理,而其他工具由于无法提供正确的口令,即使连上了数据库,也不能对档案表进行存取。

通过企业管理器创建应用程序角色,只要在“角色”节点下选择“新建应用程序角色”,在图10-10中所示的角色名称、密码、此角色拥有的架构的文本框中分别输入相应的内容,就可设置应用程序角色。如果使用T-SQL语句创建应用程序角色,则可以调用系统存储过程sp_addapprole。

图10-10 设置应用程序角色

默认情况下,应用程序角色处于停用状态,如果要使用应用程序角色所具有的权限,则应激活应用程序角色。激活应用程序角色要使用系统存储过程sp_setapprole。

应用程序角色一旦被激活,只有当应用程序与SQL Server断开连接时才被停用。修改应用程序角色的口令可以使用系统存储过程sp_approlepassword。

如果要删除一个应用程序角色,只要用鼠标右键单击角色,在弹出的快捷菜单中选择“删除”命令即可。如果使用 T-SQL 语句删除应用程序角色,则需要调用系统存储过程sp_dropapprole。