CN102968479A - 跨安全区数据库备份方法 - Google Patents
跨安全区数据库备份方法 Download PDFInfo
- Publication number
- CN102968479A CN102968479A CN2012104670906A CN201210467090A CN102968479A CN 102968479 A CN102968479 A CN 102968479A CN 2012104670906 A CN2012104670906 A CN 2012104670906A CN 201210467090 A CN201210467090 A CN 201210467090A CN 102968479 A CN102968479 A CN 102968479A
- Authority
- CN
- China
- Prior art keywords
- database
- record
- manipulation
- intranet
- safety
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种跨安全区数据库备份方法,包括:源数据库、目标数据库、安全通道。其中,源数据库位于外网的服务器上;目标数据库位于内网的服务器上;安全通道是用于从外网向内网传输数据的安全数据通信通路。其方法包括步骤:捕获源数据库操作记录;将捕获的数据库操作记录转换成格式化操作记录;将格式化操作记录通过安全通道传输到内网;将格式化操作记录转换成数据库操作记录;在目标数据库中执行数据库操作记录中的数据库操作。其中,捕获源数据库操作记录可以通过数据库操作日志或者将数据库处理的所有函数重新封装或者通过远程进程注入的方法实现。本发明实现了从外网到内网的数据库安全备份。
Description
技术领域
本发明涉及的领域包括:数据库操作、数据安全。
背景技术
自网络诞生以来,安全问题如影随行。对于一些为公众提供服务的企业,安全问题显得尤为重要。例如,电力、电信、铁路交通等等。这些行业的企业都有一个非常重要的特点:所从事的行业涉及公共安全。为了避免大范围停电、通信中断、交通中断等公共安全事故,有必要对涉及运营管理的设备做特别的专门的保护,即,将这些设备脱离公共网络,在企业内建立独立于公共网络、安全的内部网络。我们称这样的网络为内网,内网组成的区域称为安全区,相应地公共网络简称为公网或外网。一个大型的企业内,可能建立多个这样的内网,多个内网组成多个安全区。出于安全的考虑,内网与公网之间,内网与内网之间,物理隔离,即无法建立TCP、UDP连接,无法传送IP数据包,特别是限制实时通信。这些企业在虽然内部建立了安全网络,但却无法脱离公网,因为直接面向公众服务的业务必须挂接在公网上。例如,用户数据:用户信息、用户业务、用户账单等必须挂在公网上。这些挂接在公网上的数据,容易遭受黑客攻击和破坏,这些数据有必要及时地备份到内网上,以保证当公网上的数据库数据被异常破坏时能够正常恢复。为了便于管理员将这些公网数据备份到内网上,现有技术是在公网和内网之间开辟一条安全通道。在这安全通道上,通过诸多的限制保证安全,比如,不能传送IP数据报文,数据传输只是单向的。例如,申请号为201110128834.7的发明申请案公开了一种安全传输设备,通过硬件方法实现单向性传输,使得公网的数据可以传到内网,而内网的数据无法传到公网上。但在这种环境下,传统的数据库备份的方法不能将公网的数据库内容备份到内网上,因而需要采用特殊的方法。
发明内容
本发明所要解决的问题是:将公网的数据库内容备份到内网上。
为解决上述问题,本发明采用的方案为:
跨安全区数据库备份方法,包括:源数据库、目标数据库、安全通道;其中,源数据库位于外网的服务器上;目标数据库位于内网的服务器上;安全通道是用于从外网向内网传输数据的安全数据通信通路,具有绝对的安全性。为便于说明,本说明书中所称的源服务器为位于外网,用于存放源数据库的服务器;本说明书所称的目标服务器为位于内网,用于存放目标数据库的服务器。其方法包括如下步骤:
S100、捕获源数据库操作记录;
S200、将捕获的数据库操作记录转换成格式化操作记录;
S300、将格式化操作记录通过安全通道传输到内网;
S400、将格式化操作记录转换成数据库操作记录;
S500、在目标数据库中执行数据库操作记录中的数据库操作。
前述的格式化操作记录是指符合用于安全通道传输数据格式的数据。目标数据库为备份数据库。
本发明的技术效果是显而易见地,将公网的数据库内容安全的备份到内网上,以便在公网数据库遭受异常破坏时得以恢复。
附图说明
图1为本发明网络拓扑结构示意图。
具体实施方式
下面结合附图,对本发明做进一步详细描述。
如图1所示,1为公网,2为内网,3为源服务器,4为目标服务器,5为安全通道的连接,31为安全通道的发送装置,41为安全通道的接收装置。其中发送装置31、接收装置41以及连接5组成安全通道。发送装置31与源服务器3相连。接收装置41与目标服务器4相连。发送装置31可以是安装在源服务器上的硬件设备,也可以是独立的主机。发送装置31安装在源服务器上时,发送装置31与源服务器3通过总线连接。发送装置31为独立主机时,发送装置31和源服务器3之间的连接可以是一般的以太网连接。相应地,接收装置41可以是安装在目标服务器上的硬件设备,也可以是独立的主机。接收装置41安装在目标服务器上时,接收装置41与目标服务器4通过总线连接。接收装置41为独立主机时,接收装置41和目标服务器4之间的连接可以是一般的以太网连接。有关安全通道的发送装置、接收装置、连接以及步骤S300中将格式化操作记录通过安全通道传输到内网,可以参考申请号为201110128834.7的发明申请案。
源服务器3包括有源数据库。目标服务器4包括有目标数据库。目标服务器4上的目标数据库需要事先建立并且对其进行必要的配置。配置的内容、比如,用户与用户权限、必要的数据表,必要的存储过程等等。出于本领域技术人员众所周知的原因,有关目标数据库的建立和配置不再累述。
本发明的方法步骤建立在上述的网络拓扑和环境搭建的基础上,归纳起来包括如下步骤:
S100、捕获源数据库操作记录;
S200、将捕获的数据库操作记录转换成格式化操作记录;
S300、将格式化操作记录通过安全通道传输到内网;
S400、将格式化操作记录转换成数据库操作记录;
S500、在目标数据库中执行数据库操作记录中的数据库操作。
下面对上述每个步骤做详细描述。
一、捕获源数据库操作记录之数据库操作日志
捕获源数据库操作记录的方法很多。最简单的方法是通过查询数据库的操作日志。将源数据库记载的数据库操作日志作为源数据库操作记录。这种方法非常简单,但存在一个问题,数据库操作日志容易被管理员误操作,比如,关闭数据库操作日志的功能。在这种情况下,导致捕获的源数据库操作记录是不完整的。
二、捕获源数据库操作记录之函数重新封装
捕获源数据库操作记录也可以通过函数重新封装的方法来实现。即将数据库处理的所有函数重新封装。例如,ExecSQL(string sSQL) 函数重新封装成rExecSQL(string sSQL),封装后的rExecSQL参数与原函数ExecSQL完全相同,不过在函数内加入操作记录的代码。下面是rExecSQL重封装后函数的示例代码:
int rExecSQL(string sSQL)
{
int result = ExecSQL(sSQL);
if (result>0 && IsSQLCatching())
{ //处于数据库操作记录状态并且数据库操作成功
CatchSQL(sSQL); // 捕获数据库操作记录
}
return result;
}
或者,该示例代码可以写成:
int rExecSQL(string sSQL)
{
CatchSQL (sSQL); // 捕获数据库操作记录
return ExecSQL(sSQL);
}
前示例代码只有在数据库操作成功时,才记录数据库操作。而后者是不管数据库操作是否能够成功或失败,都记录数据库的操作记录。后者是建立再备份数据库或目标数据库在执行SQL之前内容完全相同,假如在源数据库执行失败,则在目标数据库执行同样的SQL也一样会失败,假如在源数据库执行成功,则在目标数据库执行同样的SQL也必然成功。
封装后的数据库处理函数可以通过宏替换解决现有软件程序的兼容性问题,比如上述的原函数ExecSQL与封装函数rExecSQL下,做如下定义:
#define ExecSQL(sql) rExecSQL(sql)
本领域人员应该知道,这种代码级的替代封装方法在C语言中是非常常用的技术手段,不再累述。
三、捕获源数据库操作记录之进程注入函数
在windows系统中,捕获源数据库操作记录还可以通过远程进程注入的方法替换现有的数据库处理函数。这种方法的好处是,不改变现有的应用程序。首先编写一个动态链接库。假设这个这个动态链接库为mySQL.dll,原包含数据库处理函数的动态连接库为”SQL.dll”。mySQL.dll编译完成后放在c:\windows\system32\ 目录下。原动态链接库SQL.dll中包含被替代数据库处理函数ExecSQL。mySQL.dll中包含替代现有数据库处理函数rExecSQL,并在启动该动态连接库时执行替换现有数据库处理函数的操作。
1、mySQL动态链接库载入时的DllMain函数中执行替换操作,示例代码如下:
HANDLE hProc; //注入到指定进程之后的进程句柄
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ulcall,LPVOID lpResed) { switch (ulcall) { case DLL_PROCESS_ATTACH: { hProc = GetCurrentProcess();
installHookSQL(); //安装数据库处理函数的钩子函数 break; }
default: break; } return TRUE; }
2、installHookSQL函数中在原数据库处理函数开始添加远程转跳操作,转跳到替代现有数据库处理函数rExecSQL中。其示例代码如下: typedef int (*pExecSQL)(const char *szSQL); pExecSQL oldExecSQL=NULL;
BYTE btOldBytes[5]; BYTE btNewBytes[5];
void installHookSQL() {
DWORD iRead;
HANDLE hModule = GetModuleHandle(“SQL.dll”); //获取原数据库dll
oldExecSQL = (pExecSQL)GetProcAddress(hModule,"ExecSQL");
ReadProcessMemory(hProc,oldExecSQL, btOldBytes,5,&iRead);
btNewBytes[0] = 0xE9;
__asm
{
lea eax,rExecSQL
mov ebx,oldExecSQL
sub eax,ebx
sub eax,5
mov dword ptr[btNewBytes+1],eax
}
WriteProcessMemory(hProc,oldExecSQL, btNewBytes,5,&iRead);
}
3、替代现有数据库处理函数rExecSQL中包括捕获数据库操作代码,示例代码如下:
int _stdcall rExecSQL(const char * szSQL)
{
int result;
DWORD iRead;
CatchSQL(szSQL); //捕获数据库操作
//执行原数据库处理函数的操作,执行前恢复原函数,执行完成后重新安装替换
WriteProcessMemory(hProc, oldExecSQL, btOldBytes,5,&iRead);
result = oldExecSQL(szSQL);
WriteProcessMemory(hProc, oldExecSQL, btNewBytes,5,&iRead);
return result; }
4.将c:\windows\system32\mySQL.dll进程注入到远程进程的示例代码如下:
DWORD pid = 0;
char * szPath=” c:\\windows\\system32\\mySQL.dll”;//被注入动态链接库路径
DWORD dwSize = strlen(szPath)+1;
pid = FindRemoteProcessID(); //查找和搜索数据库操作进程ID
// 全权打开该进程 HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
// 远程申请申请一块内存以便写入被注入动态链接库路径
HANDLE lpData=VirtualAllocEx(hProc,NULL,dwSize,MEM_COMMIT,PAGE_READWRITE); DWORD dwWrite = 0;
// 将被注入动态链接库路径写入远程进程 WriteProcessMemory(hProc,lpData,szPath,dwSize,&dwSize);
// 在远程进行内创建线程执行载入mySQL的操作 HANDLE hThread = CreateRemoteThread(hProc,NULL,0, (LPTHREAD_START_ROUTINE)LoadLibrary, // 载入动态链接库 lpData,0,NULL); ......
经过上述方法处理后,每一次任何应用程序调用数据库操作函数ExecSQL时,都会转跳到替换数据库函数rExecSQL中,通过在rExecSQL中添加的CatchSQL捕获函数捕获数据库操作。
四、格式化操作记录的转化
步骤S200中,将捕获的数据库操作记录转化成格式化操作记录。格式化操作记录的转化包括两个步骤:第一是在捕获的数据库操作记录中添加时标信息;第二是将数据库操作记录转化成适合安全通道传输的数据格式。
数据库操作记录因为有前后关系的限制,所以需要添加时标信息,时标信息可以是序号。比如第一条数据库操作记录的时标为1,第二条数据库操作记录的时标为2,以此类推。
如前所述,安全通道传输的数据格式上有限制。比如,有的安全通道只能传输文本文件,而数据库操作记录中通常包含二进制的数据,比如图像数据。这种情况下需要将图像数据也转化成文本格式。转化成文本格式的算法可以采用Base64算法。 转化成文本格式的数据库操作记录传输到内网后,在目标数据库中执行数据库操作记录前,需要将格式化操作记录恢复成数据库操作记录,于是就有了步骤400中将格式化操作记录转换成数据库操作记录。
五、数据库操作记录的过滤
数据库操作记录中,有插入、删除、修改、查询操作。而查询操作并不修改数据库内容,因而在数据库备份时,查询操作可以忽略,从而减少安全通道传输的数据量。为此需要为数据库操作记录做一定的过滤。过滤操作可以在捕获数据库操作记录时进行,即在步骤S100中进行,也可以在数据库转化成格式化操作记录时即步骤S200中进行。
六、在目标数据库中执行数据库操作
步骤400中得到恢复的数据库操作记录后,可以根据记录中的时标,按顺序重新执行数据库操作。如此完成数据库内容的备份。
Claims (7)
1.跨安全区数据库备份方法,其特征在于,包括:源数据库、目标数据库、安全通道;其中,源数据库位于外网的服务器上;目标数据库位于内网的服务器上;安全通道是用于从外网向内网传输数据的安全数据通信通路;
其方法包括如下步骤:
S100、捕获源数据库操作记录;
S200、将捕获的数据库操作记录转换成格式化操作记录;
S300、将格式化操作记录通过安全通道传输到内网;
S400、将格式化操作记录转换成数据库操作记录;
S500、在目标数据库中执行数据库操作记录中的数据库操作。
2.如权利要求1所述的跨安全区数据库备份方法,其特征在于,所述的步骤S100中,捕获源数据库操作记录是将源数据库记载的数据库操作日志作为源数据库操作记录。
3.如权利要求1所述的跨安全区数据库备份方法,其特征在于,所述的步骤S100中,捕获源数据库操作记录是将数据库处理的所有函数重新封装。
4.如权利要求1所述的跨安全区数据库备份方法,其特征在于,所述的步骤S100中,捕获源数据库操作记录是通过远程进程注入的方法。
5.如权利要求1所述的跨安全区数据库备份方法,其特征在于,所述的步骤S200中,包括添加数据库操作记录时标的步骤。
6.如权利要求1所述的跨安全区数据库备份方法,其特征在于,所述的步骤S100中,包括数据库操作记录过滤的步骤。
7.如权利要求1所述的跨安全区数据库备份方法,其特征在于,所述的步骤S200中,包括数据库操作记录过滤的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012104670906A CN102968479A (zh) | 2012-11-19 | 2012-11-19 | 跨安全区数据库备份方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012104670906A CN102968479A (zh) | 2012-11-19 | 2012-11-19 | 跨安全区数据库备份方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102968479A true CN102968479A (zh) | 2013-03-13 |
Family
ID=47798617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012104670906A Pending CN102968479A (zh) | 2012-11-19 | 2012-11-19 | 跨安全区数据库备份方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102968479A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045678A (zh) * | 2015-07-09 | 2015-11-11 | 小米科技有限责任公司 | 数据库恢复方法及装置 |
CN105955848A (zh) * | 2016-05-05 | 2016-09-21 | 青岛海信移动通信技术股份有限公司 | 一种移动通信终端的信息备份方法和装置 |
CN106844682A (zh) * | 2017-01-25 | 2017-06-13 | 北京百分点信息科技有限公司 | 数据交换方法、装置及系统 |
CN106790446B (zh) * | 2016-12-02 | 2018-02-23 | 深圳市小满科技有限公司 | 数据备份系统及方法 |
CN111770120A (zh) * | 2019-04-01 | 2020-10-13 | 江苏华章物流科技股份有限公司 | Vs编辑器的实时异地备份方法及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091240A1 (en) * | 1999-06-29 | 2005-04-28 | Microsoft Corporation | Dynamic synchronization of tables |
CN101719149A (zh) * | 2009-12-03 | 2010-06-02 | 联动优势科技有限公司 | 数据同步方法及装置 |
-
2012
- 2012-11-19 CN CN2012104670906A patent/CN102968479A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091240A1 (en) * | 1999-06-29 | 2005-04-28 | Microsoft Corporation | Dynamic synchronization of tables |
CN101719149A (zh) * | 2009-12-03 | 2010-06-02 | 联动优势科技有限公司 | 数据同步方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045678A (zh) * | 2015-07-09 | 2015-11-11 | 小米科技有限责任公司 | 数据库恢复方法及装置 |
CN105045678B (zh) * | 2015-07-09 | 2018-10-26 | 小米科技有限责任公司 | 数据库恢复方法及装置 |
CN105955848A (zh) * | 2016-05-05 | 2016-09-21 | 青岛海信移动通信技术股份有限公司 | 一种移动通信终端的信息备份方法和装置 |
CN106790446B (zh) * | 2016-12-02 | 2018-02-23 | 深圳市小满科技有限公司 | 数据备份系统及方法 |
CN106844682A (zh) * | 2017-01-25 | 2017-06-13 | 北京百分点信息科技有限公司 | 数据交换方法、装置及系统 |
CN106844682B (zh) * | 2017-01-25 | 2019-08-16 | 北京百分点信息科技有限公司 | 数据交换方法、装置及系统 |
CN111770120A (zh) * | 2019-04-01 | 2020-10-13 | 江苏华章物流科技股份有限公司 | Vs编辑器的实时异地备份方法及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109495308B (zh) | 一种基于管理信息系统的自动化运维系统 | |
CN104063473B (zh) | 一种数据库审计监测系统及其方法 | |
CN103152352B (zh) | 一种基于云计算环境的全信息安全取证监听方法和系统 | |
CN102314561B (zh) | 基于api hook的恶意代码自动分析方法和系统 | |
CN102968479A (zh) | 跨安全区数据库备份方法 | |
CN112765245A (zh) | 一种电子政务大数据处理平台 | |
CN110535831A (zh) | 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质 | |
CN101958897B (zh) | 一种安全事件关联分析方法及系统 | |
CN112468472A (zh) | 一种基于安全日志关联分析的安全策略自反馈方法 | |
CN104766007A (zh) | 一种基于文件系统过滤驱动实现沙箱快速恢复的方法 | |
CN103294950A (zh) | 一种基于反向追踪的高威窃密恶意代码检测方法及系统 | |
CN103699839A (zh) | 一种内核级rootkit检测处理方法及系统 | |
CN110474870B (zh) | 基于区块链的网络主动防御方法、系统及计算机可读存储介质 | |
CN113542263B (zh) | 防火墙策略迁移方法及装置 | |
CN108092936A (zh) | 一种基于插件架构的主机监控系统 | |
CN105357179A (zh) | 网络攻击的处理方法及装置 | |
CN103701783A (zh) | 一种预处理单元、由其构成的数据处理系统以及处理方法 | |
CN108924106A (zh) | 一种基于网卡抓包的终端上网审计方法及系统 | |
CN114448654B (zh) | 一种基于区块链的分布式可信审计安全存证方法 | |
CN103618762A (zh) | 一种基于aop的企业服务总线状态预处理系统及方法 | |
CN103092866A (zh) | 数据监控方法及监控装置 | |
CN106326736A (zh) | 数据处理方法及系统 | |
CN103150155A (zh) | 数据拦截方法和装置 | |
CN103281210B (zh) | 网络设备的配置文件的版本管理系统 | |
CN107426017A (zh) | 一种通过采集交换机网络流量进行数据分析的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130313 |