Firebird数据库
Firebird数据安全
2016-05-20 11:04:09

 

       数据库必须是安全的且数据存储在里面必须如此。 Firebird提供两种级别的数据安全保护 :用户身份验证在服务器级别和 SQL 特权在数据库内。这一章讲述如何管理两级安全。

 


       整个数据库的安全取决于识别一个用户验证其权限,这一过程被称为身份验证。关于用户授权访问特定的Firdbird服务器的信息存储在一个特殊的安全数据库命名为 security2.fdb,是一个用户账号对应一个用户。

 

       用户名称是不区分大小写的系统标识符,最多包含31个字符。用户必须有一个密码,其中前八位是有意义的。虽然输入密码超过八个字符是有效的,但后面的任何字符将被忽略。密码区分大小写的.

 

       如果在连接期间指定的用户是 SYSDBA, 数据库所有者或专门特权的用户,该用户将拥有无限访问数据库的权限。

特别特权的用户

 

       在Firebird中,SYSDBA 帐户是"超级用户",它超越了任何存在安全限制。它拥有服务器中常规数据库中的所有对象的存取权,以及完全读写访问安全数据库security2.fdb中的账号权限。 没用户具有访问安全数据库元的数据权限。

 

       在 Windows 和 MacOS 的缺省 SYSDBA 口令是 'masterkey' — — 或 'masterke',准确地说是因为超过 8 个字符长度的限制。

 

 

 

      其他用户可以获得提升的权限,在几个方面,其中一些依赖于操作系统平台。接下来的小节将讨论这些和归纳在"系统管理员"节。

 

      

       在 POSIX 系统中,包括 MacOSX,Firebird将解释 POSIX 用户帐户, 作为一个Firebird自己安全数据库中的用户,提供服务器将客户端计算机视为受信任的宿主,且系统用户帐户存在客户端和服务器上。与客户建立一种"信任"关系主机,相应的条目必须包含在一个文件 /etc/hosts.equiv 或/etc/gds_hosts.equiv 在Firebird的主机服务器上。


       文件 hosts.equiv 包含的信任关系在操作系统级别,包括所有的服务(rlogin, rsh, rcp,等等)。

 

       文件 gds_hosts.equiv 只包含Firebird同主机之间的信任的关系。

 

       对于这两个文件格式是相同的看起来像这样 ︰

 

       主机名  [用户名]

 

 

在POSIX的主机上,除了MacOSX外 SYSDBA用户没有默认密码。如果使用标准的脚本完整的安装,一次性密码将被创建并存储在一个文本文件,同security2.fdb同一个目录下,通常为/opt/firebird/ 目录下。密码文件的名称是SYSDBA.password。

 

 

 

 

Root 用户可以直接作为 SYSDBA在POSIX 主机系统上。Firebird解释root就好像它是SYSDBA且为它在服务器上提供了对所有数据库的访问。

 

 

在能够作为Windows 服务器的操作系统上,可以使用操作系统帐户。可信的认证必须在firebird.conf配置文件中启用身份验证参数,设置成信任或混合.

 

即使启用了可信认证,当Windows操作系统管理员连接到数据库时不会自动授予SYSDBA特权。使这种情况的发生,必须由管理员必须由 SYSDBA 或数据库所有者将内部创建角色RDB$ADMIN赋给它.有关详细信息,请参阅后面题为AUTO ADMIN MAPPING一节.

 

Firebird服务器的嵌入式的版本在Windows上不使用服务器级别的身份验证。然而,因为数据库中的对象是受制于 SQL 权限的,如果适用,那么一个有效的用户名和角色可能在连接参数是必需的。

 

 

数据库的"所有者"是创建当时的 CURRENT_USER 用户,或者在 CREATE DATABASE语句被提供的用户参数USER和PASSWORD的引用。

 

"所有者"不是用户名。是数据库的所有者的用户具有完全管理员权限与该数据库相关的权限,包括有权将其除去,从备份还原和启用或禁用AUTOADMIN MAPPING的能力。