纵观整个证券行业,当前的证券交易基本都是利用J2EE来缓存所有的交易对象,这势必导致中间层大量的系统开销,同时增加系统和人力成本。利用内存数据库,把交易按逻辑分类,并缓存到应用服务器中,可以极大的提高系统性能和对象访问的统一性。
而由于证券行业的特殊性,其安全性要求非常敏感。试想一下,如果数据发生泄露,比如内幕数据,用户隐私数据被泄露或出卖,将会造成非常恶劣的影响。因此,这里我们有必要聊一聊内存数据库的代表之一——solidDB安全的那些事。
和磁盘数据库一样,内存数据库solidDB的安全性也保证了数据以及数据对象未经许可而非法访问。
首先,从认证的角度,solidDB默认采用的依然是传统的基于用户名/密码式认证方式。不过,用户也可以选择数据库之外的操作系统,作为其第三方认证机制。比如,对于Linux和Unix操作系统,solidDB可调用基于X/Open SSO(Single Sign-On)标准的Pluggable Authentication Modules (PAM) API,实现单点登录。而对于Windows,则可以调用基于Security Support ProviderInterface (SSPI) API。
需要说明的是,要启用第三方认证,客户端与服务器端都需要开启IBM Global Security Kit(GSKit)功能,提供公钥加密私钥解密服务。
其次,从数据加密的角度,solidDB提供了两种方式,一种是基于DES算法的数据加密形式,而另一种便是上面提到的GSKit机制。默认情况下,solidDB采用的是DES数据加密算法,并且只对密码加密。GSKit需要单独加密。当然,除密码之外,用户也可以选择使用DES与GSKit中任意一个,针对数据库文件或者数据库日志文件加密。
第三,从授权的角度,solidDB赋予不同用户以不同的权限,执行不同的操作。比方说,要创建一张表,用户需要获取创建表权限。而要修改表结构,用户同样需要获得授权。
作为例子,我们来看一下solidDB提供的几个系统权限。PUBLIC权限值的是将该操作权限授予所有用户;SYS_ADMIN_ROLE权限为数据库管理员所有;_ SYS_CONSOLE_ROLE权限指的是用户虽然不是管理员,但却拥有使用solidDB Remote Control的权限;SYS_SYNC_ADMIN_ROLE权限针对的是数据同步功能的管理员;SYS_SYNC_REGISTER_ROLE权限仅限于向主数据库注册与注销备份数据库。
除了常规的认证、加密、授权机制以外,solidDB还提供了下面集中额外的安全机制。
SELinux(Security Enhanced Linux)是Linux支持的一种安全补丁,目标是为用户与应用提供系统资源访问的控制,solidDB支持Red Hat Enterprise Linux (RHEL)的SELinux特性。
举例来说,要启用solidDB服务器(solid)的SELinux安全策略,可以执行如下命令:
# cd/usr/share/selinux/devel
# secpolgen/bin/solid
# sh solid.sh
要启用SMA server (solidsma)的SELinux安全策略,可以执行如下命令:
# cd/usr/share/selinux/devel
# secpolgen/bin/solidsma
# shsolidsma.sh
要启用solidDB High Availability Controller (solidhac)的SELinux安全策略,可以执行如下命令:
# cd/usr/share/selinux/devel
# secpolgen/bin/solidhac
# shsolidhac.sh
审计是solidDB支持的一种额外的安全机制,能追踪solidDB数据库的用户数据与schema变化。审计功能由Sql.AuditTrailEnabled参数指定。一旦审计功能开启,数据库相关信息将会发送到SYS_AUDIT_TRAIL系统表中,管理员可通过SQL语法查询SYS_AUDIT_TRAIL表。
那么,作为审计功能,SYS_AUDIT_TRAIL表会记录哪些数据库活动呢?
· 用户与登录信息的变更
· Schema与Catelog的变革
· Audit的启动、停止、删除