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。