SQL server登录名,用户,角色 sql安全管理 数据库安全

安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。
下面结合Microsoft SQL Server 2008系统的安全特征,分析安全性问题和安全性机制之间的关系。

数据库安全控制的一般方法

SQL server登录名,用户,角色 sql安全管理 数据库安全_第1张图片

身份验证

  • 最常用的”用户名/密码”
  • 高级的采用生物特征,如:指纹、虹膜

访问控制

  • 目的是防止非法用户进入系统以及合法用户对系统资源的非法利用
  • 对用户访问数据库各种对象的权限的控制,通过用户分类和数据分类实现。

文件操作控制

  • 对操作系统用户管理和权限进行合理分配,防止操作系统用户非法进入数据库系统,合理设置数据库文件的访问权限,防止文件被未授权修改

数据加密存储

  • 将明文变成密

登录到系统

  • 第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。

在Microsoft SQL Server 2008系统中,通过身份验证模式和主体解决这个问题。

身份验证模式是Microsoft SQL Server 2008系统验证客户端和服务器之间连接的方式。Microsoft SQL Server 2008系统提供了两种身份验证模式:Windows身份验证模式和混合模式。

  • 在Windows身份验证模式中,用户通过Microsoft Windows用户账户连接时,SQL Server使用Windows操作系统中的信息验证账户名和密码。Windows身份验证模式使用Kerberos安全协议,通过强密码的复杂性验证提供密码策略强制、账户锁定支持、支持密码过期等。
  • 在混合模式中,当客户端连接到服务器时,既可能采取Windows身份验证,也可能采取SQL Server身份验证。当设置为混合模式时,允许用户使用Windows身份验证SQL Server身份验证进行连接。

这里要引入主体的概念

主体是可以请求系统资源的个体、组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。主体是可以请求系统资源的个体、组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。

而在Microsoft SQL Server 2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。

  • 第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源?

这也是一个基本的安全问题,在Microsoft SQL Server 2008系统中,通过安全对象和权限设置来解决这个问题。

主体和安全对象的结构示意图

SQL server登录名,用户,角色 sql安全管理 数据库安全_第2张图片

  • 第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的“孤儿”吗?

在MS SQL Server 2008系统中,这个问题是通过用户和架构分离来解决的。

数据库对象、架构和用户之间的关系

SQL server登录名,用户,角色 sql安全管理 数据库安全_第3张图片

三个认证过程与用户来源

三个认证过程包括:

  • 系统登录—用户登录到 SQL Server
  • 数据库访问—访问用户数据库、系统数据库
  • 数据操作—对表、视图、存储过程的操作

一个用户要对某一个数据库进行操作 ,必须同时满足两个条件:

  • 能连接到SQL Server服务器(连接权)
  • 有执行该操作的权限(访问权、操作权)
  • 首先要求能够合法地登录到SQL Server上,其具体表现就是合法的登录账户(用户名/密码),解决了“连接权”
  • 其次要验证是不是特定数据库的合法用户,就需要检查刚才的登录名有没有在数据库中加以映射,解决了“访问权”
  • 最后要验证刚才的用户是否对数据库的特定对象具有操作的权限,解决了“操作权”

例:学校大门—Windows; 实验楼—SQL Server
      实验室—数据库;   做实验—具体操作

管理登录名

  • 管理登录名包括创建登录名、设置密码策略、查看登录名信息及修改和删除登录名等。
  • sa是一个默认的SQL Server登录名,拥有操作SQL Server系统的所有权限。该登录名不能被删除。当采用混合模式安装SQL Server系统之后,应该为sa指定一个密码。

创建登录名

  • 在SQL Server 2008系统中,许多操作都既可以通过T-SQL语句完成,也可以通过SQL Server Management Studio(SSMS)工具来完成。
  • 在创建登录名时,既可以通过将Windows登录名映射到SQL Server系统中,也可以创建SQL Server登录名。

维护登录名

  • 登录名创建之后,可以根据需要修改登录名的名称、密码、密码策略、默认的数据库等信息,可以禁用或启用该登录名,甚至可以删除不需要的登录名。

管理数据库用户

  • 数据库用户是数据库级的主体,是登录名在数据库中的映射,是在数据库中执行操作和活动的行动者。
  • 在SQL Server 2008系统中,数据库用户不能直接拥有表、视图等数据库对象,而是通过架构拥有这些对象。数据库用户管理包括创建用户、查看用户信息、修改用户、删除用户等操作。(进入实验楼的不一定都有进入实验室的权限,如守卫楼的阿姨等)

sa登录

  • sa登录是系统管理员的登录。在以前的SQL Server版本中不存在角色,sa登录具有所有可能的关于系统管理工作的权限。从SQL Server 2005开始,sa登录保持了向后兼容性。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。

创建用户

  • 可以使用CREATE USER语句在指定的数据库中创建用户。
  • 由于用户是登录名在数据库中的映射,因此在创建用户时需要指定登录名。

维护用户

  • 可以使用ALTER USER语句修改用户。修改用户包括两个方面,第一,可以修改用户名;第二可以修改用户的默认架构。
  • 修改用户名与删除、重建用户是不同的。修改用户名仅仅是名称的改变,不是用户与登录名对应关系的改变,也不是用户与架构关系的变化。

修改和删除

  • 如果用户不再需要了,可以使用DROP USER语句删除数据库中的用户。
  • 也可以使用ALTER USER语句修改指定用户的默认架构,这时可以使用WITH DEFAULT_ SCHEMA子句。

数据库角色

  • 数据库角色是数据库级别的主体,也是数据库用户的集合。数据库用户可以作为数据库角色的成员,继承数据库角色的权限。数据库管理人员可以通过管理角色的权限来管理数据库用户的权限。
  • Microsoft SQL Server 2008系统提供了一些固定数据库角色和public特殊角色

每个教师都要有浏览全校学生的权限,但有的教师(如辅导员)可以修改学生个人信息与查看学生成绩,而另一些教师(如专业课教师)可以查看学生个人信息与修改学生成绩,怎样分别给他们授权?
(建立两种权限角色:一个“浏览成绩+修改个人信息”,一个“浏览个人信息+修改成绩”,将每个教师赋予特定的角色标志)

固定数据库角色

  • 就像固定服务器角色一样,固定数据库角色也具有了预先定义好的权限。使用固定数据库角色可以大大简化数据库角色权限管理工作。
  • SQL Server 2008系统提供了9个固定数据库角色。
  • 固定数据库角色都有预先定义好的权限,不能为这些角色增加或删除权限。

SQL server登录名,用户,角色 sql安全管理 数据库安全_第4张图片

public角色

  • 除了前面介绍的固定数据库角色之外,SQL Server系统成功安装之后,还有一个特殊的角色,这就是public角色。
  • public角色有两大特点:
    • 初始状态时没有权限;
    • 所有的数据库用户都是它的成员。
  • 虽然初始状态下public角色没有任何权限,但是可以为该角色授予权限。

管理权限

  • 权限是执行操作、访问数据的通行证。只有拥有了针对某种安全对象的指定权限,才能对该对象执行相应的操作。
  • 在SQL Server 2008系统中,不同的对象有不同的权限。
  • 为了更好地理解权限管理的内容,下面介绍权限的类型、常用对象的权限、隐含的权限、授予权限、收回权限、否认权限等几方面内容。

权限的类型

  • 在SQL Server 2008系统中,不同的分类方式可以把权限分成不同的类型。如果依据权限是否预先定义,可以把权限分为预先定义的权限和预先未定义的权限。
  • 预先定义的权限是指那些系统安装之后,不必通过授予权限即拥有的权限。
  • 预先未定义的权限是指那些需要经过授权或继承才能得到的权限。

对象权限

  • 如果按照权限是否与特定的对象有关,可以把权限分为针对所有对象的权限和针对特殊对象的权限。
  • 针对所有对象的权限表示这种权限可以针对SQL Server系统中所有的对象,例如,CONTROL权限是所有对象都有的权限。
  • 针对特殊对象的权限是指某些权限只能在指定的对象上起作用,例如INSERT可以是表的权限,但是不能是存储过程的权限,而EXECUTE可以是存储过程的权限,但是不能是表的权限。下面,详细讨论这两种权限类型。
  • 在SQL Server 2008系统中,针对所有对象的权限包括CONTROL、ALTER、ALTER ANY、TAKE OWNERSHIP、INPERSONATE、CREATE、VIEW DEFINITION等。

常用对象的权限

  • 在使用GRANT语句、REVOKE语句、DENY语句执行权限管理操作时,经常使用ALL关键字表示指定安全对象的常用权限。
  • 不同的安全对象往往具有不同的权限。
  • 需要注意的是:SQL Server 2008 只提供自主存储控制语句,其安全性达到TCSEC标准的C1级;不提供强制存储控制语句,所以不能达到B1级。

授予权限

  • 在SQL Server 2008系统中,可以使用GRANT语句将安全对象的权限授予指定的安全主体。这些可以使用GRANT语句授权的安全对象包括应用程序角色、程序集、非对称密钥、证书、约定、数据库、端点、全文目录、函数、消息类型、对象、队列、角色、路由、架构、服务器、服务、存储过程、对称密钥、系统对象、表、类型、用户、视图和XML架构集合等。
  • GRANT语句的语法是比较复杂的,不同的安全对象有不同的权限,因此也有不同的授权方式。

收回权限

  • 如果希望从某个安全主体处收回权限,可以使用REVOKE语句。
  • REVOKE语句是与GRANT语句相对应的,可以把通过GRANT语句授予给安全主体的权限收回。
  • 也就是说,使用REVOKE语句可以删除通过GRANT语句授予给安全主体的权限。

否认权限

  • 安全主体可以通过两种方式获得权限:
    • 通过作为角色成员继承角色的权限(祖上的遗产)
    • 直接使用GRANT语句为其授予权限 (个人自己奋斗)
  • 使用REVOKE语句只能删除安全主体通过GRANT得到的权限,要想彻底删除安全主体的特定权限必须使用DENY语句。
  • DENY语句的语法形式与REVOKE语句非常类似。

SQL Server 2008内置的加密机制

  • SQL Server 2008系统不是简单地提供一些加密函数,而是把成熟的数据安全技术引进到数据库中,形成了一个清晰的内置加密层次结构。
  • 加密是一种保护数据的机制,它通过将原始数据打乱,达到只有经过授权的人员才能访问和读取数据、未授权人不能识别或读取数据的目的,从而增强了数据的保密性。

对称加密机制和非对称加密机制示意图

SQL server登录名,用户,角色 sql安全管理 数据库安全_第5张图片

 

你可能感兴趣的:(SQL,数据库安全,SQL安全管理,sql登录名,sql用户,sql角色)