`
gzycnet
  • 浏览: 31249 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

Oracle 与MSSQL数据库安全PK

阅读更多
    SQL Server和Oracle在数据安全方面最大的一个区别就是访问SQL Server数据库需要经过两步才能完成。在实例级别,SQL Server维护了一个称为登录名(login)的用户帐户列表。在登录名列表中的用户才有权限连接到这个实例,然后用户要访问某个数据库的时候还需要在这个数据库中有一个与登录名对应的用户(user)才行。SQL Server的登录名可以是Windows或是活动目录帐号、有效证书或者是非对称密钥(asymmetric key),登录名也可以是和Windows完全无关的:DBA可以在SQL Server中创建一个用户并且指定一个密码给这个用户,前一类由AD帐号对应的登录名被称为信任(trusted)帐户,后一类登录名称为非信任(non-trusted)帐号。

    在Oracle中没有信任与不信任帐户这一说,Oracle中的用户帐户只需要创建一次,不像SQL Server的是Oracle不会将操作系统帐户映射到数据库当中。(译注:实际上Oracle中有种称为OPS$的帐号是和操作系统帐号关联的。)

    SQL Server安装之后会自动的创建一个特别的非信任帐号名叫sa(System Administrator的缩写)。sa是一个内置的管理帐号,是实例中所有数据库的所有者,同时还具有数据库的最高权限:sa可以创建、更改或删除登陆名和数据库,修改系统配置,关闭实例或是给其它的用户授予系统管理员的权限。除了这个系统级的sa之外,每个数据库还有一个DBO或称数据库所有者帐户。这个用户会和创建这个数据库的系统级别的主体(pricipal)关联在一起。数据库的所有者对自己的数据库拥有完全的权限,不过这个数据库之外的就不一定了。

    Oracle数据创建的时候差不多创建十来个系统界别的账户。默认情况下这写账户中只有四个可用,其它的帐号都被设置成了锁定或是设置为过期状态,这四个帐户就是SYS,SYSTEM,SYSMAN,DBSNMP。这里面的SYS和SYSTEM类似于SQL Server的sa。SYS是数据字典(Oracle数据字典建立在SYS架构之下)的所有者,SYSTEM帐户有着访问数据库中所有对象的权限。

    除了sa帐户之外,SQL Server还有一些内置的固定服务器角色(fixed server roles),这些角色和Windows的用户组一样:可以包含一个或者多个登录名。每个角色都有着一套权限,角色里面包含的登录名在整个服务器中有着相同级别的权限。最高权限的服务器角色就是sysadmin了,它和sa的权限是一样的。在Oracle中同样权限的角色是DBA,还有,被赋予SYSDBA和SYSOPER权限的用户也能执行一些诸如启动关闭数据库这样操作的权限。

    之前说过SQL Server登录名可以是信任的(Windows帐户)和非信任的,同样的,SQL Server用户也可以做同样的分类:信任的和非信任的。当使用信任帐户(或称Windows帐户)验证时,SQL Server依赖于Windows操作系统执行验证操作,如果用户是一个有效的域帐户或者是本地帐户,SQL Server则不需要它再次提供用户名和密码。使用非信任帐户验证时,SQL Server则要求用户提供的用户名和密码,然后用数据库内部维护的合法用户列表进行对比验证。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics