数据库集群实施方案数据库安全的核心和关键是其数据安全。
数据安全是指以保护措施确保数据的完整性、保密性、可用性、可控性和可审查性。
由于数据库存储着大量的重要信息和机密数据,而且在数据库系统中大量数据集中存放,供多用户共享,因此,必须加强对数据库访问的控制和数据安全防护。
数据库系统安全的层次与结构一般数据库系统安全涉及5个层次:(1)用户层:侧重用户权限管理及身份认证等,防范非授权用户以各种方式对数据库及数据的非法访问;(2)物理层:系统最外层最容易受到攻击和破坏,主要侧重保护计算机*络系统、*络链路及其*络节点的实体安全;(3)*络层:所有*络数据库系统都允许通过*络进行远程访问,*络层安全性和物理层安全性一样极为重要;(4)操作系统层:操作系统在数据库系统中,与DBMS交互并协助控制管理数据库。
操作系统安全漏洞和隐患将成为对数据库进行非授权访问的手段;(5)数据库系统层:数据库存储着重要程度和敏感程度不同的各种数据,并为拥有不同授权的用户所共享,数据库系统必须采取授权限制、访问控制、加密和审计等安全措施。
为了确保数据库安全,必须在所有层次上进行安全性保护措施。
若较低层次上安全性存在缺陷,则严格的高层安全性措施也可能被绕过而出现安全问题。
数据库系统安全解决方案概述环境安全环境安全是指数据库所运行的软硬件环境的安全控制。
正确的架构设计是数据库及其他应用稳定、安全的运行最有力保障,一个正确的架构设计可以较好的体现在物理环境中,通过比较简单的对物理环境的设定,就可以屏蔽大量的安全隐患。
错误的架构设计会导致物理结构散乱,无论从运维还是管理上来说,都有相当大的困难,较多的物理漏洞必须通过繁杂的软件安全控制来屏蔽风险,抛开安全本身无法较好保证而言,更换服务器时对软件的设置相当困难。
软硬件架构按照较大的框架进行分割,我们可以知道任何安全的架构都是传统三层架构的扩展,根本还是在于表示层,业务逻辑层,数据访问层,对于数据库看来则是应用层,中间层,数据层。
逻辑上实现三层架构比较容易,在软件中分离数据访问即可,但是往往我们都忽略了物理三层架构的设置,很多系统往往在软件上实现了三层架构,但是对应的三层架构缺共同存储与一台设备上,这是比较危险的做法,当然从成本出发这是比较节省的方案,存在的问题也显而易见,管理混乱,安全性降低,如果系统没有做好较好的安全控制,那么这个系统就会形成一通百通的局面。
不过成本、效率、高可用性永远是软件系统的铁三角,不同的系统对三者的要求也不一样,我们刚才说到的物理三层结构从成本上来说是最高的,但是大大提高了效率和高可用性中的安全性与稳定性。
数据库架构数据库自身也是一个应用软件,自身也分为三层架构,应用层,交换层,数据层。
如何使数据库具有高效性,高可用性是数据库运维中的重点。
一般来说负荷较大的应用系统都会使用共享存储的模式将数据存储剥离开来,应用服务本身则是使用负载均衡的模式进行部署。
这样的好处是结构清晰可靠,高可用,高性能,数据库可快速或无缝切换,但是相对其他普通方案而言成本较高。
物理访问控制物理访问控制主要是指在现实世界中对服务器、数据存储的访问控制。
物理访问控制主要出现在自建机房中,因托管机房访问控制是由托管服务提供商完成的。
主要的物理访问控制机制要满足,可审计性,非单一性,访问限制等条件。
访问限制:通过各类门禁隔绝非相关人员。
非单一性:进入核心机房任何情况下必须有两人同行。
可审计性:对于一切操作(包括进出机房,操作数据等)必须留下操作痕迹。
操作系统设置操作系统是安装数据库应用服务的基础,很难想象一个不健康的操作系统之上能够运行一个稳定高效的数据库服务。
在操作系统的层面,就安全而言主要还是控制非法终端绕过中间层对数据库进行直接访问。
其主要方法有:1、数据库系统的宿主操作系统除提供数据库服务外,不得提供其它*络服务,这主要是为了尽量减少端口开放数量以及访问量。
2、应在宿主操作系统中设置本地数据库专用帐户,并赋予该账户除运行各种数据库服务外的最低权限;3、对数据库系统安装目录及相应文件访问权限进行控制,如:禁止除专用账户外的其它账户修改、删除、创建子目录或文件。
*络安全控制应用系统及数据库系统的*络安全控制其实类似于操作系统安全控制,核心内容是通过*络技术,分割物理或虚拟*络,并通过限制端口,限制访问终端,甚至限制访问内容,从而使非法终端不能绕过中间层直接连接到数据库或直接访问底层数据。
建设思路:所有独立的数据库应用均只能由指定的前端代理、HA或中间层服务器进行访问,其他机器均不能访问数据库服务以及相应端口。
为方便运维人员进行日常维护,可添加一至两台安全性较高的终端进入可访问列表,进行日常维护。
如能充分保证内*内其他机器的安全性,可适当降低该数据库访问列表权限,使内*均可访问。
应用安全应用安全是泛指与数据库自身相关联的各种应用与设置安全,包括数据账户控制,数据库应用控制,数据库应用规范等。
数据库在安装成功后首先应该对数据库进行安全设置与性能调校,然后导入或新建数据库实例(非实例类为库),并制定相应的数据库操作、开发、维护规范,形成有效的管理机制,对于多实例对方案运行的数据库,必须针对不同的数据实例针对性地写出相应的巡检计划与警告、异常阀值,减少数据库因宕机造成的安全异常。
账户控制帐户安全和口令策略是任何应用系统安全控制的核心机制,数据库也不例外。
账户设置原则严禁不同的数据库系统使用相同的账户与口令;重新命名数据库管理员帐户;数据库应用账户必须与数据库管理员帐户分离;删除或停用不需要的默认账户以及空账户。
账户分离原则系统管理员:能够管理数据库系统中的所有组件及数据库;应用数据库管理员:能够管理本数据库中的账户、对象及数据;数据库应用用户:只能以特定的权限访问特定的数据库对象,不具有数据库管理权限。
权限控制原则针对每个数据库账户按最小权限原则设置其在相应数据库中的权限;系统管理权限:账户管理、服务管理、数据库管理等;数据库管理权限:包括创建、删除、修改数据库等;数据库访问权限:包括插入、删除、修改数据库特定表记录等。
使用数据库系统分配账户的方式鉴别数据库用户,不可使用宿主操作系统的账户鉴别代替数据库账户鉴别。
注:较高安全等级的数据库一般来说只给用户提供调用特定存储过程和函数的权限,该用户本身对数据库对象不可见。
应用控制数据库应用控制是指应用系统或管理维护人员在操作数据库时的安全控制。
相关应用系统以及管理员必须使用满足操作条件的最小权限用户接入数据库。
数据库操作人员在操作数据库时,必须留有痕迹,最好是记录详尽的操作细节。
应用系统在开发中,最好对流程性对象(存储过程,函数等)中所做的对数据库数据有增、删、改的操作留下记录,写入相应的事件表。
流程性对象在开发完毕后应给予应用用户调用权限,并对对象本身进行封装加密,防止结构泄露。
操作系统管理员与数据库管理员原则上不应为同一人(SQLSERVER除外),任何应用系统都应该制定审计制度,负责审计数据库操作。
应用系统接入数据库时的所有的连接串必须通过可更改的参数文件获取相关连接信息,不允许在程序开发中直接写入数据库相关信息。
所有数据库所执行的应用级操作均不得使用管理员账户进行操作,管理员账户仅仅用于数据库管理员进行维护、调优、与其他设置类操作。
针对于较高安全等级的数据库,数据库操作应尽量封装在流程性对象中,这样对安全性、高效性、可审计性都有极大提升。
前端应用使用数据库时,只通过调用流程性对象完成。
禁止未授权的数据库系统远程管理访问,对于已经批准的远程管理访问,应采取安全措施增强远程管理访问安全,对于高级应用应修改数据库服务端口。
数据库规范数据库规范是我们安全、高效地使用数据库的有力保障,也是我们快速查找问题,减少维护压力强有力的工具。
针对不同的数据库与应用系统在效能、安全、高可用性上有不同的要求。
数据库工程师在制定数据库应用规范框架时,应保障各系统通用性与良好的扩展性。
根据数据库应用规范框架,对每个数据库系统最好建立独立的数据库规内容档,包括命名规范,操作规范,用户管理规范、运行维护规范等。
操作人员在对数据库进行维护,调优及其他操作时必须按照“规范”中描述的内容进行操作,并予以记录。
下级规范的制定必须定位于总体规范框架之内,如与规范框架有冲突,应及时对框架进行评估,并进行调整。
数据安全数据安全范围比较大,概括来说可以包含:数据物理文件安全,系统冗余、容错,数据备份恢复等。
数据安全的中心思想就是如何保证数据文件本身的安全及如何减少数据库中的脏数据问题。
数据库往往是一个应用系统的核心系统,而数据库的核心也就是数据库中的数据,如何保障数据文件的安全稳定是数据库最为重要又最为薄弱的一环。
同时,正确的数据可以让数据库稳定地运行,过多的错误数据不但影响用户正常使用,也会降低数据库运行效率,还可能导致数据库服务停机,更为严重的是感染正确数据,如何避免错误数据的产生?产生错误数据后如何进行清洗?这些问题都是数据库开发、应用中经常碰到的问题。
数据文件安全数据文件是指存放电子数据的物理文件。
核心操作系统安全控制物理文件拷贝复制管理内外*文件传递管理防火墙过滤关键字数据库应用安全管理我们通过以上形式来提升数据文件的安全系数,从根本上来说也就是通过“环境安全”与“应用安全”实现了数据文件安全。
数据备份恢复数据备份及恢复在数据库系统每次成功升级后,数据库管理员都应备份相应的数据库系统软件;数据库管理员应制定数据备份计划,并按照计划定期备份数据库系统中的数据,妥善安全保存这些备份数据,防止备份数据的丢失、泄露与被篡改。
系统及数据恢复,要求数据库管理员应制定数据库系统及数据恢复流程,并至少对恢复流程作三次演练。
系统冗余、容错数据库系统冗余是指对数据库服务以及核心数据通过冗余的方式,提高系统的稳定性。
其主要实现手段还是使用各种集群服务通过共享存储的形式使用数据库。
容错这里主要指除开系统冗余之外的软件自身容错,比如异常的判定,预期异常的排除,错误代码处理,通过进行容错处理,可以降低系统以及数据库运行时产生错误的几率与错误数据产生几率,从而使系统更为稳定的运行。
注:数据库容错方面最好使用强判定模式,弱判定模式比较容易形成错误数据以及异常。
SQLserver2021高可用性高可用性介绍自从SQLServer2021以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQLServer2021,SQLServer2021R2,SQLServer2021的不断发布,SQLServer中已经存在了满足不同场景的多种高可用性技术。
在本项目组中,我们期待创建一个任何时刻都在线的数据库系统。
但由于各种各样的因素,无法预估的灾难,需要提前采取各种措施来预防突发情况。