1.身份验证(Authentication)是指通过提交服务器评估的凭据以登录到主体请求访问的 SQL Server 的过程。身份验证可以确定接受身份验证的用户或进程的标识。
2.提示:登录名(Login Name)和用户名(User Name)是两个不同的概念:
登录名:服务器方的一个实体,登录名只能进入SQL Server服务器,但是不能让用户访问服务器中的数据库资源。
用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。
3.GRANT表示允许主体对于安全对象做某些操作,DENY表示不允许主体对某些安全对象做某些操作。还有一个REVOKE语句用于收回先前对主体GRANT或DENY的权限。在设置权限时,尤其要注意权限在安全对象上的继承关系。对于父安全对象上设置的权限,会被自动继承到子安全对象上。
DENY(拒绝)权限优先,但不适用sysadmin角色的成员,以及登录名sa、用户dbo。DENY优先于所有的权限(all permissions),只是 DENY不适用于对象所有者(object owners)或 sysadmin的成员。如果您针对 public角色对某个对象执行 DENY权限语句,则会拒绝该对象的所有者和 sysadmin成员以外的所有用户和角色访问该对象。在高层级上的DENY会覆盖任何子层级的GRANT。
GRANT(授予)权限将删除对所指定安全对象的相应权限的 DENY或 REVOKE权限。如果在包含该安全对象的更高级别拒绝了相同的权限,则 DENY优先。但是,在更高级别撤消已授予权限的操作并不优先。
REVOKE(撤销,取消;废除)废除类似于拒绝,但是,废除权限是删除已授予的权限,并不妨碍用户、组或角色从更高级别继承已授予的权限。因此,如果废除用户查看表的权限,不一定能防止用户查看该表,因为可能已将查看该表的权限授予了用户所属的角色。
表级 DENY并不优先于列级 GRANT,列级权限的 GRANT覆盖对象级的 DENY。
4.(1)角色的创建
创建自色的SQL语句格式是
CREATE ROLE<角色名>
刚刚创建的角色是空的,没有任何内容,可以用GRANT为角色授权。
(2)给角色授权
GRANT<权限>[,<权限>]... ON<对象类型>对象名 TO<角色>[,<角色>]...
(3)将一个角色授予其他的角色或用户GRANT<角色1>[, <角色 2>]...
TO<自色3>[,<用户1>]...
[WITHADMIN OPTION]
4.角色权限的收回
REVOKE <权限>[, <权限>]...
ON<对象类型><对象名>
FROM<角色>[,<角色>]...
5.权限 (permission),与对象关联的规则,用来规定哪些用户可以获得该对象的访问权限以及方式如何。对安全对象的访问通过授予或拒绝权限进行控制。
权限可以明确用户能够使用哪些数据库对象,并对它们进行何种操作。用户在数据库内的权限取决于用户账号的权限和该用户所属的角色的权限。
提示:在设置权限时,尤其要注意权限在安全对象上的继承关系。对于高级别安全对象上设置的权限,会被自动继承到低级别安全对象上。
理解权限的继承和权限的覆盖会在设置权限时减少很多问题,最佳方法是统筹规划,上机验证。