一、达梦数据库介绍
达梦数据库管理系统属于新一代大型通用关系型数据库,全面支持 ANSI SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。
本次安装环境为Windows10专业版操作系统,数据库版本为v458764,单机部署过程比较简单就不在此进行讲解。本文针对达梦数据库等保测评进行实际操作,不妥之处还恳请留言指正,共同学习。
二、等保测评
身份鉴别
a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
达梦支持数据库身份验证模式和外部身份验证模式。数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;外部身份验证模式支持基于操作系统(OS)的身份验证、LDAP 身份验证和 KERBEROS 身份验证。
1)验证方式:
2)用户登录验证:
3)口令策略:
执行命令:“select * from v$dm_ini where para_name ='PWD_POLICY';”查看密码策略:
4)用户唯一标识由达梦数据库自动实现,这点默认符合。
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
达梦数据库具备登录失败处理功能:
备注:如果未设置登录失败处理措施,可执行命令:“LIMIT FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 5;”进行配置。表示用户失败的登录次数达到3次,这个用户账号将被锁定5分钟。
c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
核查是否采用加密等安全方式对系统进行远程管理,防止鉴别信息在网络传输过程中被窃听。检查远程管理时管理员所使用的管理协议,查看传输过程中的鉴别信息是否是经过加密处理的、抗重放的,并可使用抓包工具,判断管理员远程管理时传输过程中的鉴别信息被窃听的可能性。
选择是否使用SSL协议加密以达梦数据库服务器端的设置为准,即通过设置服务器配置文件DM.INI中的ENABLE_ENCRYPT参数来指定,客户端以服务器采用的通信方式与其进行通信。
达梦数据库在ENABLE_ENCRYPT 取值 0、1 和 2 分别代表不加密、SSL 加密、SSL 认证,默认值为 1;COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取。(本地管理可判定为不适用,远程管理根据实际情况判定)。
d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
访谈管理员并进行验证,是否采用双因子身份鉴别技术,鉴别技术是什么 。实际实现双因素认证比较麻烦,一般情况判定为不符合。
访问控制
a) 应对登录的用户分配账户和权限;
1)查看用户,并结合结合访谈管理员是否存在网络管理员,安全管理员,系统管理员、审计管理员等多个账户,为各个管理用户分配对应的权限,根据所列出的账户,查看是否存在默认账户,默认账户是否已禁用。
b) 应重命名或删除默认账户,修改默认账户的默认口令
达梦数据库具有特定的默认账户,存在默认口令即用户名,达梦数据库实现了 B1 级安全特性。“三权分立”的安全机制,将系统管理员分数据库管理员、数据库安全员和数据库审计员三类。在安装过程中,DM 数据库会预设数据库管理员账号 SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR,其缺省口令都与用户名一致。“四权分立”的安全机制,将系统管理员分数据库管理员、数据库对象操作员、数据库安全员和数据库审计员四类,在“三权分立”的基础上,新增数据库对象操作员账户SYSDBO,其缺省口令为 SYSDBO。用户需要在安装过程中或者安装完毕后立即修改缺省口令,避免因口令泄漏造成的安全问题。
c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在
1)询问管理员数据库中的账户使用情况,是否存在无人使用的账户,如果存在建议删除。
2)检查网络管理员,安全管理员、系统管理员不同用户是否采用不同账户登录数据库。根据所列出的账户,询问数据库管理员各个账户的作用,是否存在多余的、过期的和共享账户。
d) 应授予管理用户所需的最小权限,实现管理用户的权限分离
询问数据库管理员管理账户是否按照最小权限进行划分。
(1)数据库管理员 (DBA )
“三权分立”的安全机制,每个 DM 数据库至少需要一个数据库管理员来管理,负责评估数据库运行所需的软、硬件环境、安装和升级 DM 数据库、配置 DM 数据库参数、创建主要的数据库存储结构(表空间)和对象(如表、视图、索引、角色、用户等)、监控和优化数据库性能、数据导入导出以及数据库的备份和恢复等。“三权分立”时数据库管理员既可进行系统管理和维护工作,也可对数据内容进行增删查改动作。根据国产数据库军事使用要求,数据库管理员只能进行系统管理和维护工作,不能对数据内容进行增删查改,数据库应用人员则可操作数据内容,而不能管理和维护系统。“四权分立”的安全机制,在原有“三权分立”基础上调整自主访问控制权限,只具有“三权分立”中 DBA 角色预设的一部分与数据库管理相关的明确的数据库权限,如数据库创建、备份、还原和校验等。
(2 ) 数据库安全员(SSO )
对于很多对安全性要求不高的系统来说,C2 级安全特性已经能够工作得很好,此时不需要考虑通过数据库安全员来进一步加强系统的安全机制。但是在很多大型的系统中,安全性还是至关重要的,有必要由安全员来制定安全策略,强化系统安全机制,此时数据库安全员的主要任务就是制定安全策略,定义新的数据库安全员,设置系统的安全等级、范围和组,并为主、客体定义安全标记,从而全面提升系统安全性。
(3 ) 数据库审计 员(AUDITOR )
数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计
记录。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。
(4)数据库对象操作员 (DBO )
数据库对象操作员是“四权分立”新增加的一类用户,可以创建数据库对象,并对自己
拥有的数据库对象(表、视图、存储过程、序列、包、外部链接)具有所有的对象权限并可以授出与回收,但其无法管理与维护数据库对象。
备注:另外在达梦数据库中有一个特殊的预定义用户“SYS”,此用户仅用于保存系统内部对象,并非数据库管理员,也无法进行登录。
e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则
1)访谈和查看管理员是否制定了访问控制策略;
2)查看管理员权限;(此测评点如果数据库已经启用身份鉴别,且具备权限分离可判定为符合)。
f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级
结合a)、b)、c)、d)、e)项,并访谈管理员并核查访问控制粒度主体是否为用户级,客体是否为数据库表级。询问数据库管理员是否具有安全策略,数据库是否具有重要的表。在企业管理器中右键点击重要的表,查看其权限。
(此测评点多数测评机构默认判定为符合)
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
通过访谈管理员是否对重要主体和客体设置安全标记。达梦数据库自身可以实现这个功能,也可通过操作系统或者第三方来实现。该项一般默认都不符合。
达梦数据库实现安全标记的描述:
当把策略应用于用户或表时,那么该用户或表就获得了一个安全标记。一个安全标记由多个组件组成,其组件包括等级、范围和组。每个标记必须包含一个等级,范围和组则是可选的。
标记以二进制位的形式存储于数据库中。当一个策略被应用到表上时,需要指定标记的存储列名,此列的类型为INT,此时表上每条元组的标记均存在于该列中。
在应用策略时,还可设置标记列是否被隐藏。当标记列被隐藏时,若用户在插入数据时不指定列清单,则在值列表中可以不设置该列的值,另外,在查询时也不显示该列数据。
标记列上可以建索引,设置列约束、改列名等,但不能修改列类型、设置缺省值等。标记列不能被用户显式删除,除非在表上取消该策略。
除了行标记,达梦数据库的扩展客体标记支持对数据库除约束和目录外的所有的客体进行标记,如模式、表、索引等对象。一旦一个对象被应用了扩展客体标记,则用户只有在支配相应标记的情况下,才能访问客体。创建的新对象不会含有默认的标记,需要安全员进行手工设置。
安全审计
a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
1)执行命令:“SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';”查看审计状态(如果未开启审计,可执行命令:“SP_SET_ENABLE_AUDIT(1);”或”SP_SET_ENABLE_AUDIT(2);“开启审计):
数据库性能监控:
2)访谈管理员是否通过第三方工具(数据库审计系统)收集审计数据进行分析。
b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
1)检查日志记录的各类信息(目前未看到其他查看日志的功能等)。
(1)执行命令:“select * from V$AUDITRECORDS;”查看审计记录:
(2)DM性能监视工具(会话监视):
(3)DM性能监视工具(事务监视):
(4)DM性能监视工具(SQL监视):
(5)DM性能监视工具(日志文件):
(6)DM性能监视工具(数据库监视)
(7)DM性能监视工具(系统监视):
(8)审计工具的审计记录:
2)核查是否部署第三方工具(数据库审计系统)增强达梦数据库日志功能。记录第三方审计工具的审计内容,查看是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等
应保证各个管理员尽可以访问与自身相关的日志文件,如关键日志仅允许特权账户访问
1)访谈管理员对审计记录如何保护,对审计记录是否定期备份,备份策略。
是否采取了备份、转存等手段对审计记录进行保护,避免未预期的删除、修 改或覆盖,数据库本地日志保存时间超过6个月。采用第三方数据库审计产品,审计记录保存时间超过6个月。
备注:AUDIT_FILE_FULL_MODE -数值,数值默认1,审计文件满后的处理方式,1:删除文件;2:不删除文件,也不添加审计记录;AUDIT_MAX_FILE_SIZE -数值,数值默认100M,审计文件的最大大小,以兆为单位。有效值范围(1~4096M)。
2)是否严格限制用户访问审计记录的权限,可以通过普通用户登录然后是否能够访问修改删除日志。
d) 应对审计进程进行保护,防止未经授权的中断
达梦数据库可以根据权限建立各类型的账户,可以防止审计进程未经授权的中断,如果数据库已建立审计账户且各个数据库管理员权限已分离,可判定为符合;另外达梦是单进程多线程模式,中断审计线程会导致数据库进程直接关闭。
入侵防范
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序
数据库系统此测评项可判定为不适用。
b) 应关闭不需要的系统服务、默认共享和高危端口
数据库系统此测评项不适用。
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
1)可以通过sql设置用户登录的ip地址,非设定的ip登录时会报错提示无效的ip,可执行命令:“alter user "SYSDBA" allow_ip "127.0.0.1","X.X.X.X";”即可设置。
2)通过审计分析工具配置用户登录地址限制:
3)另外达梦数据库还可以配置禁止登录地址和指定时间段内允许登录。
4)通过防火墙配置登录地址限制。
d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求
数据库系统此测评项不适用。
e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
1) 访谈管理员是否定期或不定期进行漏洞扫描或渗透测试,周期按照天/月/季度/半年/年等方式(建议漏洞扫描周期最长半年一次)。
2)通过本次漏洞扫描是否发现与数据库相关的高危漏洞,若存在,是否及时进行漏洞修补,检查数据库版本去了解此版本的漏洞情况。
f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
数据库系统此测评项不适用。
恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断
数据库系统此测评项不适用。
可信验证
可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心
通过访谈管理员,是否采取了可信技术,可信技术主要是基于可信芯片、可信根,目前实现此技术的可能性不大,一般判定为不符合。
数据完整性
a)应采用密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
传输过程中的完整性一般是通过通信协议来实现的,常见的包括TLS、SSL、SSH等协议,对数据库而言,查看是否启用了安全协议进行数据通信,同时询问管理员,确认是否还有其他保证数据传输过程中的完整性措施。达梦数据库在ENABLE_ENCRYPT 取值 0、1 和 2 分别代表不加密、SSL 加密、SSL 认证,默认值为 1;COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取。(本地管理可判定为不适用,远程管理根据实际情况判定)
安全参数配置:
备注:选择 SSL 加密时,需要在达梦数据库服务器所在目录下的server_ssl 子目录中存放 CA 的证书、服务器的证书和服务器的密钥,同时在客户端所在目录下的client_ssl子目录中存放 CA 的证书、客户端的证书和客户端的密钥,这样服务器和客户端的通信即是 建立在加密的SSL 连接之上的。
b)应采用密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
对数据库配置文件进行一个完整性检测,需要配置文件初始可信状态时的哈希值,然后再根据目前的文件生成一个哈希值,对比前后的一致性,确认数据是否被篡改过,根据了解一般数据库自身不带这种机制,询问管理人员是否使用了第三方软件对数据库重要数据进行了完整性校验。
实际操作中可核查数据库表中的业务数据、审计数据有无存在哈希字段,据了解数据在前端一般通过json或xml格式进行传输,相关数据库表字段中具有完整性校验字段。目前一般做不到,判定为不符合。
数据保密性
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
若password是以明文密码传送给数据库,建议不在生产环境中使用。若数据库未开启SSL时,我通过Wireshare对数据库认证过程的数据包进行抓取,可能发现传输的密码字段信息。
达梦数据库在ENABLE_ENCRYPT 取值 0、1 和 2 分别代表不加密、SSL 加密、SSL 认证,默认值为 1;COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取。(本地管理可判定为不适用,远程管理根据实际情况判定)
安全参数配置:
备注:选择 SSL 加密时,需要在 DM 数据库服务器所在目录下的 server_ssl 子目录中存放 CA 的证书、服务器的证书和服务器的密钥,同时在客户端所在目录下的 client_ssl子目录中存放 CA 的证书、客户端的证书和客户端的密钥,这样服务器和客户端的通信即是 建立在加密的 SSL 连接之上的。
总结,最直接验证的办法就是抓包验证重要的加密数据(鉴别数据、需要加密的业务数据、个人信息等)是否明文传输。
b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
检查数据库表中的重要数据是否明文存储,根据经验除鉴别数据外,业务数据、审计数据实际很少加密存储,所以一般不符合或者部分符合。如果使用数据库加密功能,就可以符合符合,数据库加密主要分库内加密和库外加密,库内加密主要是调用的数据库本身的加密功能,库外加密主要通过第三方厂家的数据库加密功能。
达梦数据库可全库加密,但需要在初始化建库时指定ENCRYPT_NAME参数,才能全库加密(一般不做),加密算法为加密算法可以是达梦数据库支持的加密算法,也可以是第三方加密算法。
在未做全库加密的情况下可实现表空间加密,加密算法可以是达梦数据库支持的加密算法,也可以是第三方加密算法。
达梦数据库支持对口令加密的算法包括MD5、SHA1、SHA224、SHA256、SHA384、SHA512,另外支持算法加盐选项SALT。
DM支持的加密和散列算法
算法名称 | 算法类型 | 分组长度 | 密钥长度 |
---|---|---|---|
DES_ECB | 分组加密算法 | 8 | 8 |
DES_CBC | 分组加密算法 | 8 | 8 |
DES_CFB | 分组加密算法 | 8 | 8 |
DES_OFB | 分组加密算法 | 8 | 8 |
DESEDE_ECB | 分组加密算法 | 8 | 16 |
DESEDE_CBC | 分组加密算法 | 8 | 16 |
DESEDE_CFB | 分组加密算法 | 8 | 16 |
DESEDE_OFB | 分组加密算法 | 8 | 16 |
AES128_ECB | 分组加密算法 | 16 | 16 |
AES128_CBC | 分组加密算法 | 16 | 16 |
AES128_CFB | 分组加密算法 | 16 | 16 |
AES128_OFB | 分组加密算法 | 16 | 16 |
AES192_ECB | 分组加密算法 | 16 | 24 |
AES192_CBC | 分组加密算法 | 16 | 24 |
AES192_CFB | 分组加密算法 | 16 | 24 |
AES192_OFB | 分组加密算法 | 16 | 24 |
AES256_ECB | 分组加密算法 | 16 | 32 |
AES256_CBC | 分组加密算法 | 16 | 32 |
AES256_CFB | 分组加密算法 | 16 | 32 |
AES256_OFB | 分组加密算法 | 16 | 32 |
DES_ECB_NOPAD | 分组加密算法 | 8 | 8 |
DES_CBC_NOPAD | 分组加密算法 | 8 | 8 |
DESEDE_ECB_NOPAD | 分组加密算法 | 8 | 16 |
DESEDE_CBC_NOPAD | 分组加密算法 | 8 | 16 |
AES128_ECB_NOPAD | 分组加密算法 | 16 | 16 |
AES128_CBC_NOPAD | 分组加密算法 | 16 | 16 |
AES192_ECB_NOPAD | 分组加密算法 | 16 | 24 |
AES192_CBC_NOPAD | 分组加密算法 | 16 | 24 |
AES256_ECB_NOPAD | 分组加密算法 | 16 | 32 |
AES256_CBC_NOPAD | 分组加密算法 | 16 | 32 |
RC4 | 流加密算法 | - | 16 |
MD5 | 散列算法 | - | - |
SHA1 | 散列算法 | - | - |
数据备份恢复
a)应提供重要数据的本地数据备份与恢复功能;
1)访问管理员配置数据、审计数据、业务数据的备份策略,检查备份策略的备份情况与管理员所说是否一致,是否具有恢复测试记录。
2)可以通过数据库管理工具进行备份。
b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地;
部署异地备份机房,并符合备份策略通过网络定期进行异地备份。
c)应提供重要数据处理系统的热冗余,保证系统的高可用性;
集群部署、双机热备均可判定为符合。
剩余信息保护
a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;
达梦提供了客体内存重用和文件重用安全功能,保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。执行命令:“select * from v$dm_ini where para_name ='ENABLE_OBJ_REUSE';”查看参数:
达梦数据库 ENABLE_OBJ_REUSE 参数控制客体重用功能,参数为 1 表示启用客体重用,0 表示不启用,默认为 0。可执行命令:“sp_set_para_value(2,'ENABLE_OBJ_REUSE',1);”启用参数。
达梦数据内存重用是指:数据库系统分配内存及释放内存时均对内存内容进行清除,保证内存中前一进程所残留内容被再次使用。
达梦数据文件重用是指:数据库系统生成、扩展、删除文件时,对文件内容也进行清除,
b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
达梦提供了客体内存重用和文件重用安全功能,保证敏感数据所在的存储空间被释放或重新分配前得到完全清除。执行命令:“select * from v$dm_ini where para_name ='ENABLE_OBJ_REUSE';”查看参数:
达梦数据库 ENABLE_OBJ_REUSE 参数控制客体重用功能,参数为 1 表示启用客体重用,0 表示不启用,默认为 0。可执行命令:“sp_set_para_value(2,'ENABLE_OBJ_REUSE',1);”启用参数。
达梦数据内存重用是指:数据库系统分配内存及释放内存时均对内存内容进行清除,保证内存中前一进程所残留内容被再次使用。
达梦数据文件重用是指:数据库系统生成、扩展、删除文件时,对文件内容也进行清除。
备注:ENABLE_OBJ_REUSE为静态参数,管理员可通过使用DM系统过程SP_SET_PARA_VALUE来修改该参数值,也可以使用DM控制台Console工具对该参数进行配置,不过配置后都需要重新启动DM数据库服务器才能生效。
个人信息保护
a)应仅采集和保存业务必需的用户个人信息;
检查数据库中是否存储个人信息,若有,检查个人信息保护机制和个人信息保护管理制度
b)应禁止未授权访问和非法使用用户个人信息。
检查个人信息保护机制和个人信息保护管理制度,验证非授权人员是否可以访问个人信息存储的相关组件内容。
总结
达梦数据库是一款国产数据库,目前使用单位相比较还是很少,其安全配置功能几乎按照等保2.0检查的相关要求进行设计,达梦数据的各类工具也比较实用,值得国内其他数据借鉴,最后还是希望国产数据库越来越完善。
等保2.0数据库测评之高斯数据库测评正在更新中........
参考资料:
GB∕T 28448-2019 《信息安全技术 网络安全等级保护测评要求》