1. sql server bulk insert 与bcp 哪个快
今天做了一个基于SQL Server的文本文件批量导入工具,和大家分享一下心得。
方案一:
遍历文本文件,解析每一行,形成SQL语句后向数据库插入。
方案二
遍历文本文件,解析每一行,将SQL语句保存到文本文件然后执行。
方案三
使用SQL Server Bulk Insert 功能披露导入数据,然后在数据库中做数据处理。
刚开始用方案一做的,50MB文本文件导入大约20-25分钟,后来进行了优化,采用数据批量插入,性能提升不大。
继续优化,使用多线程向数据库中插入数据,性能提升10-20%左右,效果也不好。
方案二没有完全测试,主要是生成SQL文件耗时15分钟左右,不太理想。
最后使用BULK INSERT ,然后在数据库中写脚本对数据进行处理,50MB文件10秒即可导入
FQuery.SQL.Text := 'BULK INSERT LOGDATA FROM ' + QuotedStr(FFileName)
+ ' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'', BATCHSIZE = 500)';
FQuery.ExecSQL;
最后执行大量的UPDATE语句,将数据格式化
建议在做大数据量导入的时候还是用BULK INSERT ,SQL SERVER 性能在那里摆着,一个SQL 4ms,1000行就要4秒,根本快不了
测试java的insert 同使用9i以后的bulk Insert 的速度.
测试结果显示通过bulk Insert 速度相当的快.
100000条记录
insert ,---------------93秒
bulk insert -------------0.441秒
环境:
oracle 10.2.0.3 Windows 2000Server
java
代码:
SQL> desc a
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
ID INTEGER Y
NAME VARCHAR2(20) Y
bulk Insert 使用的类型及过程
create or replace type i_table is table of number(10);
create or replace type v_table is table of varchar2(10);
create or replace procere pro_forall_insert(v_1 i_table,v_2 v_table)
as
c integer;
begin
forall i in 1.. v_1.count
insert into a values(v_1(i),v_2(i));
end;
测试的java代码:
public class testOracle {
public testOracle() {
Connection oraCon = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException ex) {}
oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.15.234:1521:ora10g", "imcs","imcs");
oraCon.setAutoCommit(false);
} catch (SQLException ex) {
ex.printStackTrace();
}
CallableStatement cstmt = null;
oracle.sql.ArrayDescriptor a = null;
oracle.sql.ArrayDescriptor b = null;
if (1 == 1 )
{
Object[] s1 = new Object[100000];
Object[] s2 = new Object[100000];
for (int i = 0; i < 100000; i++) {
s1[i] = new Integer(1);
s2[i] = new String("aaa").concat(String.valueOf(i));
}
try {
a = oracle.sql.ArrayDescriptor.createDescriptor("I_TABLE", oraCon);
b = oracle.sql.ArrayDescriptor.createDescriptor("V_TABLE", oraCon);
ARRAY a_test = new ARRAY(a, oraCon, s1);
ARRAY b_test = new ARRAY(b, oraCon, s2);
cstmt = oraCon.prepareCall("{ call pro_forall_insert(?,?) }");
cstmt.setObject(1, a_test);
cstmt.setObject(2, b_test);
long aaaa = System.currentTimeMillis();
System.out.println(System.currentTimeMillis());
cstmt.execute();
oraCon.commit();
System.out.println(System.currentTimeMillis()-aaaa);
} catch (Exception e) {
e.printStackTrace();
}
}
else
{
try
{
PreparedStatement oraPs = null;
String oraInsertSql =
"insert into a values(?,?)";
oraPs = oraCon.prepareStatement(oraInsertSql);
long aaaa = System.currentTimeMillis();
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++)
{
oraPs.setInt(1,i);
oraPs.setString(2, new String("aaa").concat(String.valueOf(i)));
oraPs.executeUpdate();
}
oraCon.commit();
System.out.println(System.currentTimeMillis()-aaaa);
}
catch (SQLException ex)
{
System.out.print("dddddd");
System.out.print(ex.getMessage());
}
}
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
testOracle a = new testOracle();
}
private void jbInit() throws Exception {
}
};
2. JAVAJDKV1002官方版JAVAJDKV1002官方版功能简介
大家好,关于JAVA JDK V10.0.2 官方版,JAVA JDK V10.0.2 官方版功能简介这个很多人还不知道,现在让我们一起来看看吧!
JDK10是一款Java语言的软件开发工具包,JDK作为JAVA开发的环境,是运行JAVA程序不可缺少的环境,不管是做JAVA开发还是做安卓开发,都必须在电脑上安装JDK,有需要的赶快来试试吧!
【功能特点】
1、局部变量类型推断
局部变量类型推断可以说是Java 10中最值得注意的特性,这是Java语言开发人员为了简化Java应用程序的编写而采取的又一步,如下图所示。
这个新功能将为Java增加一些语法糖 – 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。局部变量类型推断将引入”var”关键字,也就是你可以随意定义变量而不必指定变量的类型,如下图:将被下面这个新语法所取代:
Java SE Development Kit 10
看完是不是有点JS的即视感???越来越像JS了吗?!虽然类型推断在Java中不是一个新概念,但在局部变量中确是很大的一个改进。
说到类型推断,从JDK 5引进泛型,到JDK 7的”<>”操作符允许不绑定类型而初始化List,再到JDK 8的Lambda表达式,再到现在JDK 10的局部变量类型推断,Java类型推断正大刀阔斧的向前发展。
2、GC改进和内存管理
JDK 10中有2个JEP专门用于改进当前的垃圾收集元素。
第一个垃圾收集器接口是,JEP 304,它将引入一个纯净的垃圾收集器接口,以帮助改进不同垃圾收集器的源代码隔离。
预定用于Java 10的第二个JEP是针对G1的并行完全GC,JEP 307,其重点在于通过完全GC并行来改善G1最坏情况的等待时间。G1是Java 9中的默认GC,并且此JEP的目标是使G1平行。
3、线程本地握手,JEP 312
JDK 10将引入一种在线程上执行回调的新方法,因此这将会很方便能停止单个线程而不是停止全部线程或者一个都不停。
4、备用内存设备上的堆分配,JEP 316
允许HotSpot VM在备用内存设备上分配Java对象堆内存,该内存设备将由用户指定。
5、其他Unicode语言 – 标记扩展,JEP 314
目标是增强java.util.Locale及其相关的API,以便实现语言标记语法的其他Unicode扩展,BCP 47。
6、基于Java的实验性JIT编译器
Oracle希望将其Java JIT编译器Graal用作Linux / x64平台上的实验性JIT编译器。
7、根证书,JEP 319
这个的目标是在Oracle的Java SE中开源根证书。
8、根证书颁发认证,CA
这将使OpenJDK对开发人员更具吸引力,它还旨在减少OpenJDK和Oracle JDK构建之间的差异。
9、将JDK生态整合单个存储库,JEP 296
此JEP的主要目标是执行一些内存管理,并将JDK生态的众多存储库组合到一个存储库中。
10、删除工具javah,JEP 313
从JDK中移除了javah工具,这个很简单并且很重要。
【安装教程】
1、下载软件压缩包文件,点击“jdk-10_windows-x64_bin.exe”,64位,根据提示完成安装即可。
2、程序会自动安装JRE程序,选择目录即可
3、直到Java SE 10安装完毕,点击“关闭”按钮即可,如下图所示:
4、安装完JDK后配置环境变量,计算机→属性→高级系统设置→高级→环境变量
5、系统变量→新建 JAVA_HOME 变量
变量值填写jdk的安装目录,本人是 C:Program FilesJavajdk-10)
6、系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%in;%JAVA_HOME%jrein;
,注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码
7、系统变量→新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar,注意最前面有一点系统变量配置完毕
8、检验是否配置成功 运行cmd 输入 java -version ,java 和 -version 之间有空格若如图所示 显示版本信息 则说明安装和配置成功。
3. 什么是业务逻辑
不同的项目有不同的功能,不同的功能需要不同的实现,实现这些核心功能的代码就叫业务逻辑。比如让你实现一个功能,给你两个数,让你获取它的和。你所写的“如何才能获得任意给定的两个数的和”这个程序的实现过程即可称为业务逻辑处理。
4. 编程语言的种类(常见的编程语言)
编程都有哪些语言?程序设计语言大体分为三代
(1)机器语言,有0和1二进制代码按一定的规则组成,能被机器直接理解和执行。
(2)汇编语言,将机器指令的代码用英文助记符来表示,代替机器语言中的指令和数据
(3)高级程序设计语言,接近自然语言和数学公式的程序设计语言。主要有面向对象和面向过程
面向对象:Python,Java,C++等
面向过程:C,Pascal,basic
编程分哪几种?编程有几种类型?
编程语言的种类繁多,总的来说分为机器语言、汇编语言以及高级语言三大类。
机械语言(machinelanguage):计算机可直接识别、运行的二进制代码,执行速度快,资源占用少,但可读性不强,编程复杂;
汇编语言(assemblylanguage):一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。目标代码简短,占用内存少,执行速度快,但缺乏可移植性,编程复杂;
高级语言(High-levelprogramminglanguage):相对于机器语言以及汇编语言,高级语言的可读性强,可移植性高,一般通过事先编好的一个叫做编译程序的机器语言程序编译成用机器指令表示的目标程序。现在流行的高级语言有Java、C语言、C++、C#、Pascal、Basic等等。
近几年有哪些编程语言?15年6月:Java、C、C++;16年1月:Java、C、C++;17年5月:Java、C、C++;
18年9:Java、C、Python;19年1月:Java、C、Python.
我们看到Java和C语言一直是很受欢迎,特别是Java。但是并不是java一直都是榜首的,在这6年的某一月份,C、Python、C++等等都多次把Java拉下王座。
如果你苦于选择编程语言,“画漫”是觉得你可以从编程语言的受欢迎角度出发。因为毕竟受欢迎程度,也一定的放映了市场需求。所以Java、Python、C、C++,这四种编程语言,可能会是一个不错的选择。
根据StackOverflow年度调查数据显示,JavaScript是最流行的编程语言,有62.5%的受访者声称自己使用的是JavaScript。JavaScript无疑是网络世界的主导性语言,在过去十年的时间里发展势头非常迅猛。为什么这么说?只要环顾四周,数一下你看到了多少网络设备即可。StackOverflow的联合创始人JeffAtwood也是一位知名度很高的编程者,他曾说过:“任何可以用JavaScript编写的应用程序最终都将用JavaScript来编写。”
记住这句话,我们可以肯定的一点是,2018年以及未来的那些年,都不会缺少JavaScript编程人员的工作机会。JavaScript知识与包括Angular、React、Ember和Backbone等在内的许多前端框架以及Node.js运行时环境相通,让您可以更高效的在后端运行JavaScript。据StackOverflow数据统计,2017年最流行的前4个框架中,有3个是建立在JavaScript基础之上。
如果你喜欢做完之后立即能看到工作成果,例如制作交互式Web组件,那对你来说JavaScript是一个不错的选择。要记住的一点是,选择JavaScript作为职业道路就意味着你也要接受HTML和CSS,因为这些基本上都是用来制作网页的。
像ApacheCordova或者是ReactNative这样的工具可以帮助你将JavaScript应用于移动应用程序,甚至有可能通过像Electron这样的项目将JavaScript用于游戏开发或者是桌面应用程序开发。
编程语言有哪些种类有高级语言VB、Java等,中级语言C、C++等,低级语言:汇编语言,最低级的应该是机器语言。或者分成高级语言、汇编语言、机器语言。
脚本类的语言是高级语言的变形,严格意义上说不能成为严谨的计算机语言。分类种类很多,比如还分成了描述性语言、结构化程序设计语言、面向对象语言等,还有一些是针对某些系统的专用语言,那分类就更多了。
主流数据库不是语言是数据库管理系统,它牵扯到的计算机语言是SQL,结构化查询语言,是完全针对数据库系统。
编程语言Basic语言优点:
⑴Pascal语言结构严谨,可以很好地培养一个人的编程思想。
⑵Delphi是一个真正的面向对象的开发工具,并且是完全的可视化。
⑶Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
⑷Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点:
Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
综述:方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。
编程语言分为哪三大类?
编程语言的分类:共分为两大类。
第一类是汇编语言,汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
另一类是高级语言,高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,大大简化了程序中的指令。同时由于省略了很多细节,编程者也就不需要有太多的专业知识。
当我们想要激励部落成员,提高社区吸引力时,我们不应该使用恐惧法,相反我们应该使用自豪法。当使用恐惧法激励时,比如说这样的话:“如果我们不解决问题X,那么Python开发者将会减少,他们将会转而去使用语言Y”,那么我们就在故意地向全世界自由贡献代码的人传递负能量。但如果我们使用自豪法,说出来的话将是这样的:“Python中的问题X的确难以解决,看看语言Y的社区,他们用一个极好的方法解决了这个问题,我们也可以在Python中尝试这个解决方案,以同样优雅的方式解决Python中的问题”。积极地强调“以我们自己的努力为自豪”,有利于促进Python社区中不断学习的文化,还会不断促进与其他社区关系的发展。
程序语言有哪些?目前实用的编程语言有哪些?
编写计算机应用软件:javaCC+C#
编写游戏软件主要用:CC+C#
编写基于Web的程序:phpASPJSP.NET
开心农场使用php写的
计算机有哪些编程语言?
工业编程语言:A+|Ada|汇编语言|B|Brain***|C|C++|C++/CLI|Cg|COBOL|Eiffel|Erlang|FORTRAN|IronPython|Java|JRuby|Jython|LISP|Oberon|Objective-C|Ocaml|Pascal|Perl|Powerbuilder|Python|QBASIC|R|REXX|Ruby|Self|Smalltalk|SQL|Tcl/Tk|VisualBasic|PHP|C#|F#|J#|VisualBasic.NET
脚本编程语言:ActionScript|JavaScript|JScript|Nuva|PostScript|VBScript|lua
学术编程语言:APL/J|Haskell|Logo|ML|pascal|Prolog|Scheme|SAC
其他编程语言:ALGOL|BASIC|Clipper|Forth|Mola-2/Mola-3|MUMPS|PL/I|Simula
5. 如何全方位打造一个安全可信电脑终端
终端安全是企业信息技术安全体系建设的服务对象和密集风险发生部分。 我们面临着多方面的挑战,需要釆用不同类型,不同层次,不同级别的安全措 施,实现终端安全。
一、挑战和威胁
1. 员工安全意识薄弱,企业安全策略难以实施,网络病毒泛滥
病毒、蠕虫和间谍软件等网络安全威胁损害客户利益并造成大量金钱和生 产率的损失。与此同时,移动设备的普及进一步加剧了威胁。移动用户能够从 家里或公共热点连接互联网或办公室网络,常在无意中轻易地感染病毒并将其 带进企业环境,进而感染网络。
据2010 CSI/FBI安全报告称,虽然安全技术多年来一直在发展,且安全技 术的实施更是耗资数百万美元,但病毒、蠕虫和其他形式的恶意软件仍然是各 机构现在面临的主要问题。机构每年遭遇的大量安全事故造成系统中断、收入 损失、数据损坏或毁坏以及生产率降低等问题,给机构带来了巨大的经济影响。
为了解决这些问题,很多企业都制定了企业的终端安全策略,规定终端必 须安装杀毒软件,以及及时更新病毒库;终端必须及时安装系统安全补丁;终 端必须设置强口令等。但是由于员工安全意识薄弱,企业的安全策略难以实施, 形同虚设,网络安全问题依然严重。
2. 非授权用户接入网络,重要信息泄露
非授权接入包括以下两个部分:
(1) 来自外部的非法用户,利用企业管理的漏洞,使用PC接入交换机, 获得网络访问的权限;然后冒用合法用户的口令以合法身份登录网站后,查看 机密信息,修改信息内容及破坏应用系统的运行。
(2) 来自内部的合法用户,随意访问网络中的关键资源,获取关键信息用 于非法的目的。
目前,企业使用的局域网是以以太网为基础的网络架构,只要插入网络, 就能够自由地访问整个网络。因非法接入和非授权访问导致企业业务系统的破 坏以及关键信息资产的泄露,已经成为了企业需要解决的重要风险。
3. 网络资源的不合理使用,工作效率下降,存在违反法律法规的风险
根据IDC最新数据报导,企事业员工平均每天有超过50%的上班时间用来 在线聊天,浏览娱乐、色情、赌博网站,或处理个人事务;员工从互联网下载 各种信息,而在那些用于下载信息的时间中,62%用于软件下载,11%用于下 载音乐,只有25%用于下载与写报告和文件相关的资料。
在国内,法律规定了很多网站是非法的,如有色情内容的、与反政府相关 的、与迷信和犯罪相关的等。使用宽带接入互联网后,企事业内部网络某种程 度上成了一种“公共”上网场所,很多与法律相违背的行为都有可能发生在内 部网络中。这些事情难以追查,给企业带来了法律法规方面的风险。
二、防护措施
目前,终端数据管理存在的问题主要表现在:数据管理工作难以形成制度 化,数据丢失现象时常发生;数据分散在不同的机器、不同的应用上,管理分 散,安全得不到保障;难以实现数据库数据的高效在线备份;存储媒体管理困 难,历史数据保留困难。
为此,我们从以下几个方面采取措施实现终端安全。
1. 数据备份
随着计算机数据系统建设的深入,数据变得越来越举足轻重,如何有效地 管理数据系统日益成为保障系统正常运行的关键环节。然而,数据系统上的数 据格式不一,物理位置分布广泛,应用分散,数据量大,造成了数据难以有效 的管理,这给日后的工作带来诸多隐患。因此,建立一套制度化的数据备份系 统有着非常重要的意义。
数据备份是指通过在数据系统中选定一台机器作为数据备份的管理服务 器,在其他机器上安装客户端软件,从而将整个数据系统的数据自动备份到与 备份服务器相连的储存设备上,并在备份服务器上为各个备份客户端建立相应 的备份数据的索引表,利用索引表自动驱动存储介质来实现数据的自动恢复。 若有意外事件发生,若系统崩溃、非法操作等,可利用数据备份系统进行恢复。 从可靠性角度考虑,备份数量最好大于等于2。
1) 数据备份的主要内容
(1) 跨平台数据备份管理:要支持各种操作系统和数据库系统;
(2) 备份的安全性与可靠性:双重备份保护系统,确保备份数据万无一失;
(3) 自动化排程/智能化报警:通过Mail/Broadcasting/Log产生报警;
(4) 数据灾难防治与恢复:提供指定目录/单个文件数据恢复。
2) 数据备份方案
每个计算环境的规模、体系结构、客户机平台和它支持的应用软件都各不 相同,其存储管理需求也会有所区别,所以要选择最适合自身环境的解决方案。 目前虽然没有统一的标准,但至少要具有以下功能:集成的客户机代理支持、 广泛的存储设备支持、高级介质管理、高级日程安排、数据完整性保证机制、 数据库保护。比如,华为公司的VIS数据容灾解决方案、HDP数据连续性保护 方案,HDS的TrueCopy方案,IBM的SVC方案等。
2. 全面可靠的防病毒体系
计算机病毒的防治要从防毒、查毒、解毒三方面来进行,系统对于计算机病 毒的实际防治能力和效果也要从防毒能力、查毒能力和解毒能力三方面来评判。
由于企业数据系统环境非常复杂,它拥有不同的系统和应用。因此,对于 整个企业数据系统病毒的防治,要兼顾到各个环节,否则有某些环节存在问题, 则很可能造成整体防治的失败。因而,对于反病毒软件来说,需要在技术上做 得面面俱到,才能实现全面防毒。
由于数据系统病毒与单机病毒在本质上是相同的,都是人为编制的计算机 程序,因此反病毒的原理是一样的,但是由于数据系统具有的特殊复杂性,使 得对数据系统反病毒的要求不仅是防毒、查毒、杀毒,而且还要求做到与系统 的无缝链接。因为,这项技术是影响软件运行效率、全面查杀病毒的关键所在。 但是要做到无缝链接,必须充分掌握系统的底层协议和接口规范。
随着当代病毒技术的发展,病毒已经能够紧密地嵌入操作系统的深层,甚 至是内核之中。这种深层次的嵌入,为彻底杀除病毒造成了极大的困难,如果 不能确保在病毒被杀除的同时不破坏操作系统本身,那么,使用这种反病毒软 件也许会出现事与愿违的严重后果。无缝链接技术可以保证反病毒模块从底层 内核与各种操作系统、数据系统、硬件、应用环境密切协调,确保在病毒入侵 时,反病毒操作不会伤及操作系统内核,同时又能确保对来犯病毒的防杀。
VxD是微软专门为Windows制定的设备驱动程序接口规范。简而言之, VxD程序有点类似于DOS中的设备驱动程序,它是专门用于管理系统所加载 的各种设备。VxD不仅适用于硬件设备,而且由于它具有比其他类型应用程序 更高的优先级,更靠近系统底层资源,因此,在Windows操作系统下,反病毒 技术就需要利用VxD机制才有可能全面、彻底地控制系统资源,并在病毒入侵 时及时报警。而且,VxD技术与TSR技术有很大的不同,占用极少的内存,对 系统性能影响极小。
由于病毒具备隐蔽性,因此它会在不知不觉中潜入你的机器。如果不能抵 御这种隐蔽性,那么反病毒软件就谈不上防毒功能了。实时反病毒软件作为一 个任务,对进出计算机系统的数据进行监控,能够保证系统不受病毒侵害。同 时,用户的其他应用程序可作为其他任务在系统中并行运行,与实时反病毒任 务毫不冲突。因此,在Windows环境下,如果不能实现实时反病毒,那么也将 会为病毒入侵埋下隐患。针对这一特性,需要采取实时反病毒技术,保证在计 算机系统的整个工作过程中,能够随时防止病毒从外界入侵系统,从而全面提 高计算机系统的整体防护水平。
当前,大多数光盘上存放的文件和数据系统上传输的文件都是以压缩形式 存放的,而且情况很复杂。现行通用的压缩格式较多,有的压缩工具还将压缩 文件打包成一个扩展名为“.exe”的“自解压”可执行文件,这种自解压文件 可脱离压缩工具直接运行。对于这些压缩文件存在的复杂情况,如果反病毒软 件不能准确判断,或判断片面,那就不可避免地会留有查杀病毒的“死角”,为 病毒防治造成隐患。可通过全面掌握通用压缩算法和软件生产厂商自定义的压 缩算法,深入分析压缩文件的数据内容,而非采用简单地检查扩展文件名的方 法,实现对所有压缩文件的查毒杀毒功能。
对于数据系统病毒的防治来说,反病毒软件要能够做到全方位的防护,才 能对病毒做到密而不漏的查杀。对于数据系统病毒,除了对软盘、光盘等病毒 感染最普遍的媒介具备保护功能外,对于更为隐性的企业数据系统传播途径, 更应该把好关口。
当前,公司之间以及人与人之间电子通信方式的应用更为广泛。但是,随 着这种数据交换的增多,越来越多的病毒隐藏在邮件附件和数据库文件中进行
传播扩散。因此,反病毒软件应该对这一病毒传播通道具备有效控制的功能。
伴随数据系统的发展,在下载文件时,被感染病毒的机率正在呈指数级增 长。对这一传播更为广泛的病毒源,需要在下载文件中的病毒感染机器之前,
自动将之检测出来并给予清除,对压缩文件同样有效。
简言之,要综合采用数字免疫系统、监控病毒源技术、主动内核技术、“分 布式处理”技术、安全网管技术等措施,提高系统的抗病毒能力。
3. 安全措施之防火墙及数据加密
所谓防火墙就是一个把互联网与内部网隔开的屏障。防火墙有两类,即标 准防火墙和双家M关。随着防火墙技术的进步,在双家N关的基础上又演化出 两种防火墙配置,一种是隐蔽主机网关,另一种是隐蔽智能网关(隐蔽子网)。 隐蔽主机网关是当前一种常见的防火墙配置。顾名思义,这种配置一方面将路 由器进行隐蔽,另一方面在互联N和内部N之间安装堡垒主机。堡垒主机装在 内部网上,通过路由器的配置,使该堡垒主机成为内部网与互联网进行通信的唯 一系统。U前技术最为复杂而且安全级别最高的防火墙是隐蔽智能网关,它将 H关隐藏在公共系统之后使其免遭直接攻击。隐蔽智能网关提供了对互联网服 务进行几乎透明的访问,同时阻止了外部未授权访问者对专用数据系统的非法 访问。一般来说,这种防火墙是最不容易被破坏的。
与防火墙配合使用的安全技术还有数据加密技术,是为提高信息系统及数 据的安全性和保密性,防止秘密数据被外部破析所采用的主要技术手段之一。 随着信息技术的发展,数据系统安全与信息保密日益引起人们的关注。目前各 国除了从法律上、管理上加强数据的安全保护外,从技术上分别在软件和硬件 两方面采取措施,推动着数据加密技术和物理防范技术的不断发展。按作用不 N,数据加密技术主要分为数据传输、数据存储、数据完整性的鉴别以及密钥 管理技术四种。
4. 智能卡实施
与数据加密技术紧密相关的另一项技术则是智能卡技术。所谓智能卡就是 密钥的一种媒体,一般就像信用卡一样,由授权用户所持有并由该用户赋予它 一个口令或密码字。该密码与内部数据系统服务器上注册的密码一致。当口令 与身份特征共同使用时,智能卡的保密性能还是相当有效的。数据系统安全和 数据保护的这些防范措施都有-定的限度,并不是越安全就越可靠。因而,在 看一个内部网是杏安全时不仅要考察其手段,而更重要的是对该数据系统所采 取的各种措施,其中不光是物理防范,还有人员的素质等其他“软”因素,进 行综合评估,从而得出是否安全的结论。
另外,其他具体安全措施还包括数字认证、严谨有效的管理制度和高度警 惕的安全意识以及多级网管等措施。另外考虑到数据系统的业务连续,也需要 我们设计和部署必要的BCP计划。
三、解决方案
解决终端安全问题的有效方法是结合端点安全状况信息和新型的网络准入 控制技术。
(1) 部署和实施网络准入控制,通过准入控制设备,能够有效地防范来自 非法终端对网络业务资源的访问,有效防范信息泄密。
(2) 通过准入控制设备,实现最小授权的访问控制,使得不同身份和角色 的员工,只能访问特定授权的业务系统,保护如财务系统企业的关键业务资源。
(3) 端点安全状态与网络准入控制技术相结合,阻止不安全的终端以及不 满足企业安全策略的终端接入网络,通过技术的手段强制实施企业的安全策略, 来减少网络安全事件,增强对企业安全制度的遵从。
加强事后审计,记录和控制终端对网络的访问,控制M络应用程序的使用, 敦促员工专注工作,减少企业在互联网访问的法律法规方面的风险,并且提供 责任回溯的手段。
1. 集中式组网方案
终端安全管理(Terminal Security Management, TSM)系统支持集中式组
网,把所有的控制服务器集中在一起,为网络中的终端提供接入控制和安全管 理功能。集中式组网方案如图9-3所示。
2. 分布式组网方案 如果遇到下面的情况,可能需要采用分布式组网方案,如图9-4所示。
(1)终端相对集中在几个区域,而且区域之间的带宽比较小,由于代理与 服务器之间存在一定的流量,如果采用集中式部署,将会占用区域之间的带宽, 影响业务的提供。
(2)终端的规模相当大,可以考虑使用分布式组网,避免大量终端访问TSM 服务器,占用大量的网络带宽。
分布式部署的时候,TSM安全代理选择就近的控制服务器,获得身份认证 和准入控制等各项业务。
3. 分级式组网方案
如果网络规模超大,可以选择采用分级式组网方案,如图9-5所示。
在这种部署方案中,每个TSM结点都是一个独立的管理单元,承担独立的 用户管理、准入控制以及安全策略管理业务。管理中心负责制定总体的安全策 略,下发给各个TSM管理结点,并且对TSM管理结点实施情况进行监控。
TSM系统对于关键的用户认证数据库提供镜像备份机制,当主数据库发生 故障时,镜像数据库提供了备份的认证源,能够保证基本业务的提供,防止因 为单一数据源失效导致接入控制的网络故障。
当TSM系统发生严重故障,或者TSM系统所在的网络发生严重故障时, 用户可以根据业务的情况进行选择:业务优先/安全优先。
如果选择业务优先,准入控制设备(802.1X交换机除外)上设计的逃生通 道能够检测到TSM系统的严重故障,启用逃生通道,防止重要业务中断。
TSM终端安全管理系统提供服务器状态监控工具,通过该工具可以监控服 务器的运行状态,如数据库链接不上、SACG链接故障以及CPU/内存异常等。当 检查到服务器的状态异常时,可以通过邮件、短信等方式通知管理员及时处理。
四、终端虚拟化技术
1.传统的终端数据安全保护技术
1) DLP
(1) 工作方式:DLP (Data Loss Prevention,数据丢失防护)技术侧重于信 息泄密途径的防护,是能够通过深度内容分析对动态数据、静态数据和使用中 的数据进行鉴定、检测和保护的产品。可以在PC终端、网络、邮件服务器等 系统上针对信息内容层面的检测和防护,能够发现你的敏感数据存储的位置, 之后进行一定的处理方式,但也是有些漏洞的。
(2) 使用场景与限制:虽然DLP方案从灵活性、安全性、管理性上都满足 了数据安全的需求,但同样成功部署DLP方案需要有一个前提,就是其数据内 容匹配算法的误报率要足够低。然而,由于数据内容的表达方式千差万别,在 定义数据内容匹配规则的时候漏审率和误判率非常难平衡,无论是哪个厂商的 DLP产品,在实际测试过程中的误报率普遍都偏高,DLP方案的防护效果体验 并不好。
2) DRM
(1) 工作方式:DRM (Digital Right Management,数字权限管理)是加密
及元数据的结合,用于说明获准访问数据的用户,以及他们可以或不可以对数 据运行进行某些操作。DRM可决定数据的访问及使用方式,相当于随数据一 起移动的贴身保镖。权限包括读取、更改、剪切/粘贴、提交电子邮件、复制、 移动、保存到便携式保存设备及打印等操作。虽然DRM的功能非常强大,但 难以大规模实施。
(2) 使用场景与限制:DRM极其依赖手动运行,因此难以大规模实施。用 户必须了解哪些权限适用于哪种内容的用户,这样的复杂程度常使得员工忽略 DRM,并导致未能改善安全性的失败项冃。如同加密一样,企业在应用权限时 必须依赖人为的判断,因为DRM丄具不具备了解内容的功能。成功的DRM 部署通常只限于用户训练有素的小型工作组。由于存在此种复杂性,大型企业 通常并不适合部署DRM。但如同加密一样,可以使用DLP来专注于DRM, 并减少某些阻碍广泛部署的手动进程。
3) 全盘加密
(1) 工作方式:所谓全盘加密技术,一般是采用磁盘级动态加解密技术, 通过拦截操作系统或应用软件对磁盘数据的读/写请求,实现对全盘数据的实时 加解密,从而保护磁盘中所有文件的存储和使用安全,避免因便携终端或移动 设备丢失、存储设备报废和维修所带来的数据泄密风险。
(2) 使用场景与限制:与防水墙技术类似,全盘加密技术还是无法对不同 的涉密系统数据进行区别对待,不管是涉密文件还是普通文件,都进行加密存 储,无法支持正常的内外部文件交流。另外,全盘加密方案虽然能够从数据源 头上保障数据内容的安全性,但无法保障其自身的安全性和可靠性,一旦软件 系统损坏,所有的数据都将无法正常访问,对业务数据的可用性而言反而是一 种潜在的威胁。
上述传统安全技术是目前银行业都会部署的基础安全系统,这些安全系统 能够在某一个点上起到防护作用,然而尽管如此,数据泄密事件依然是屡禁不 止,可见银行业网络整体安全目前最人的威胁来源于终端安全上。而且部署这 么多的系统方案以后,用户体验不佳,不容易推广,因此并未达到预期的效果。 要彻底改变企业内网安全现状,必须部署更为有效的涉密系统数据防泄密方案。
2.数据保护的创新——终端虚拟化技术
为了能够在确保数据安全的前提下,提升用户的易用性和部署快速性,冃 前已经有部分企业开始使用终端虚拟化的技术来实现数据安全的保护。其中, 桌面/应用虚拟化技术以及基于安全沙盒技术的虚拟安全桌面就是两种比较常 见的方式。
1)桌面/应用虚拟化
桌面/应用虚拟化技术是基于服务器的计算模型,它将所有桌面虚拟机在数 据中心进行托管并统一管理。通过采购大量服务器,将CPU、存储器等硬件资 源进行集中建设,构建一个终端服务层,从而将桌面、应用以图像的方式发布 给终端用户。作为云计算的一种方式,由于所有的计算都放在服务器上,对终 端设备的要求将大大降低,不需要传统的台式计算机、笔记本式计算机,用户 可以通过客户端或者远程访问等方式获得与传统PC —致的用户体验,如图9-6 所示。
不过,虽然基于计算集中化模式的桌面虚拟化技术能够大大简化终端的管 理维护工作,能够很好地解决终端数据安全问题,但是也带来了服务端的部署 成本过大和管理成本提高等新问题。
(1) 所有的客户端程序进程都运行在终端服务器上,需要配置高性能的终 端服务器集群来均衡服务器的负载压力。
(2) 由于网络延迟、服务器性能、并发拥塞等客观因素影响,在桌面虚拟 化方案中,终端用户的使用体验大大低于物理计算机本地应用程序的使用体验。
(3) 计算集中化容易带来终端服务器的单点故障问题,需要通过终端服务 器的冗余备份来强化系统的稳定性。
(4) 桌面虚拟化方案中部署的大量终端服务器以及集中化的数据存储之间 的备份、恢复、迁移、维护、隔离等问题。
(5) 由于数据集中化,管理员的权限管理也需要列入考虑,毕竟让网络管 理员能够接触到银行业务部门的业务数据也是违背数据安全需求的。
(6) 桌面集中化方案提高了对网络的稳定性要求,无法满足离线办公的需求。
因此,此种方案在大规模部署使用时会遇到成本高、体验差的问题,如图
9-7所示。
2)防泄密安全桌面
为了解决桌面/应用虚拟化存在的问题,一种新的终端虚拟化技术——基r 沙盒的安全桌面被应用到了防泄密领域,如图9-8所示。
在不改变当前IT架构的情况下,充分利用本地PC的软、硬件资源,在本 地直接通过安全沙盒技术虚拟化了一个安全桌面,这个桌面可以理解为原有默 认桌面的一个备份和镜像,在安全桌面环境下运行的应用、数据、网络权限等 完全与默认桌面隔离,并且安全沙盒可以针对不同桌面之间进行细粒度的安全 控制,比如安全桌面下只能访问敏感业务系统,安全桌面内数据无法外发、复 制、打印、截屏,安全桌面内保存的文件加密存储等等。
这样一来,通过安全桌面+安全控制网关的联通配合,就可以确保用户只有 在防泄密安全桌面内进行了认证后才能访问核心敏感系统,实现了在终端的多 业务风险隔离,确保了终端的安全性。安全桌面虚拟化方案为用户提供了多个 虚拟的安全桌面,通过不同虚拟安全桌面相互隔离文件资源、网络资源、系统 资源等,可以让用户通过不同的桌面访问不同的业务资源。
比如为用户访问涉密业务系统提供了一个具有数据防泄露防护的防泄密安 全桌面,尽可能减少对用户使用习惯的影响,解决了物理隔离方案的易用性问 题,如图9-9所示。
基于沙盒的安全桌面方案的价值在于,在实现终端敏感业务数据防泄密的 前提下,不改变用户使用习惯,增强了易用性,还保护了用户的现有投资。目 前,防泄密安全桌面已经在金融、政府、企业等单位开始了广泛的应用,主要部署在CRM、ERP、设计图样等系统前端,以防止内部销售、供应链、财务等 人员的主动泄密行为。
但是安全桌面技术也有一定的局限性,比如它不适用于Java、C语言的代 码开发环境,存在一定兼容性的问题。
总而言之,两种终端虚拟化技术各有优劣,分别适用于不同的业务场景,具体可以参照图9-10。