一、Saas的安全性設(shè)計(jì)
一般常見的安全性設(shè)計(jì)分為兩類:系統(tǒng)級(jí)和程序級(jí)。
系統(tǒng)級(jí):
1、使用HTTPS協(xié)議以SSL(Security Socket Layer)交換數(shù)據(jù),增強(qiáng)通信安全;
2、 通過數(shù)字簽名防止傳輸過程篡改;
3、 對(duì)用戶身份識(shí)別的UserToken使用DES算法數(shù)據(jù)加密;
4、業(yè)務(wù)數(shù)據(jù)定時(shí)自動(dòng)備份;
程序集:
1、 完整的權(quán)限配置,包括功能權(quán)限和數(shù)據(jù)權(quán)限;
2、 客戶端輸入校驗(yàn),防止JS攻擊、XSS攻擊、SQL注入等;
3、 輔助安全設(shè)計(jì),比如密碼控件、圖片驗(yàn)證碼、手機(jī)確認(rèn)碼等;
安全性
安全壓倒一切。大多數(shù)用戶只是問問SaaS廠商是不是采用了安全套接層(SSL)技術(shù),而安全性涵蓋的不僅僅只有這個(gè)方面。要向潛在的SaaS廠商詢問下列問題:
●放置服務(wù)器的數(shù)據(jù)中心有沒有24×7全天候的物理安全措施?
●數(shù)據(jù)中心有沒有得到保護(hù)(保安是不是24小時(shí)在周圍至少巡視一次)?
●誰有權(quán)訪問這些服務(wù)器(只有內(nèi)部員工可以訪問,還是承包商也可以訪問?)
●有沒有日志記錄誰何時(shí)進(jìn)入、何時(shí)離開?如果有日志,那么隔多長(zhǎng)時(shí)間審計(jì)這些日志? ●應(yīng)用程序有沒有使用基于行業(yè)標(biāo)準(zhǔn)的128位加密技術(shù)?
●如果多個(gè)客戶使用的應(yīng)用程序放在同一臺(tái)服務(wù)器上,那么它們有沒有采用邏輯或物理分隔,從而確保你的數(shù)據(jù)不被未授權(quán)的人所看到?
●SaaS廠商中可以訪問你企業(yè)數(shù)據(jù)的工作人員有沒有經(jīng)過犯罪背景調(diào)查?知道被定罪的重罪犯是不能訪問你企業(yè)那些敏感的個(gè)人數(shù)據(jù),這很重要。
●廠商有沒有正規(guī)的業(yè)務(wù)連續(xù)性方案(BCP)?對(duì)方愿不愿意與你共享該方案、它能消除你的擔(dān)憂嗎?
二、SaaS Multi-Tenant在數(shù)據(jù)存儲(chǔ)上存在三種主要的方案
(1) 方案一:獨(dú)立數(shù)據(jù)庫(kù)
這是第一種方案,即一個(gè)Tenant一個(gè)Database(見圖3-14),這種方案的用戶數(shù)據(jù)隔離級(jí)別最高,安全性最好,但成本也高。
優(yōu)點(diǎn):
為不同的租戶提供獨(dú)立的數(shù)據(jù)庫(kù),有助于簡(jiǎn)化數(shù)據(jù)模型的擴(kuò)展設(shè)計(jì),滿足不同租戶的獨(dú)特需求; 如果出現(xiàn)故障,恢復(fù)數(shù)據(jù)比較簡(jiǎn)單。 缺點(diǎn):
增大了數(shù)據(jù)庫(kù)的安裝數(shù)量,隨之帶來維護(hù)成本和購(gòu)置成本的增加。
這種方案與傳統(tǒng)的一個(gè)客戶、一套數(shù)據(jù)、一套部署類似,差別只在于軟件統(tǒng)一部署在運(yùn)營(yíng)商那里。如果面對(duì)的是銀行、醫(yī)院等需要非常高數(shù)據(jù)隔離級(jí)別的租戶,可以選擇這種模式,提高租用的定價(jià)。如果定價(jià)較低,產(chǎn)品走低價(jià)路線,這種方案一般對(duì)運(yùn)營(yíng)商來說是無法承受的。
(2) 方案二:共享數(shù)據(jù)庫(kù),隔離數(shù)據(jù)架構(gòu)
這是第二種方案,即多個(gè)或所有租戶共享Database,但一個(gè)Tenant一個(gè)Schema。 優(yōu)點(diǎn):
為安全性要求較高的租戶提供了一定程度的邏輯數(shù)據(jù)隔離,并不是完全隔離; 每個(gè)數(shù)據(jù)庫(kù)可以支持更多的租戶數(shù)量。 缺點(diǎn):
如果出現(xiàn)故障,數(shù)據(jù)恢復(fù)比較困難,因?yàn)榛謴?fù)數(shù)據(jù)庫(kù)將牽扯到其他租戶的數(shù)據(jù); 如果需要跨租戶統(tǒng)計(jì)數(shù)據(jù),存在一定困難。
(3) 方案三:共享數(shù)據(jù)庫(kù),共享數(shù)據(jù)架構(gòu)
這是第三種方案,即租戶共享同一個(gè)Database、同一個(gè)Schema,但在表中通過TenantID區(qū)分租戶的數(shù)據(jù)。這是共享程度最高、隔離級(jí)別最低的模式。
優(yōu)點(diǎn):
三種方案比較,第三種方案的維護(hù)和購(gòu)置成本最低,允許每個(gè)數(shù)據(jù)庫(kù)支持的租戶數(shù)量最多。
缺點(diǎn):
隔離級(jí)別最低,安全性最低,需要在設(shè)計(jì)開發(fā)時(shí)加大對(duì)安全的開發(fā)量; 數(shù)據(jù)備份和恢復(fù)最困難,需要逐表逐條備份和還原。
如果希望以最少的服務(wù)器為最多的租戶提供服務(wù),并且租戶接受以犧牲隔離級(jí)別換取降低成本,這種方案最適合。
三、數(shù)據(jù)庫(kù)層性能優(yōu)化 建立合適的索引
1、索引應(yīng)該創(chuàng)建在條件(where)、排序(order by)、分組(group by)等操作所涉及的列上;
2、 索引應(yīng)該有較強(qiáng)的選擇性,即應(yīng)盡可能建立在重復(fù)數(shù)據(jù)少的數(shù)據(jù)列中;
3、 如果多個(gè)條件經(jīng)常需要組合起來查詢,應(yīng)合理使用聯(lián)合索引;
4、一次查詢中只能使用一個(gè)索引,可使用相應(yīng)的分析工具分析索引效果;
5、 索引不是越多越好(一個(gè)表最好在5個(gè)索引以內(nèi)),過多的索引可能導(dǎo)致CUD(新增、修改、刪除)的性能降低,并且占用更多的空間。
四、應(yīng)用層性能優(yōu)化:Cache
其實(shí)很難說Cache就是應(yīng)用層性能的優(yōu)化策略。因?yàn)榇蟛糠智闆r下,Cache所緩存的內(nèi)容就是數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容。采用Cache策略其實(shí)也是對(duì)數(shù)據(jù)庫(kù)層的一種優(yōu)化,因?yàn)槠浔苊饬藢?duì)于數(shù)據(jù)庫(kù)的頻繁訪問。 MemCached和JBoss Cache應(yīng)該是兩類比較典型的Cache。
五、日志記錄
日志記錄就是要對(duì)用戶在系統(tǒng)中的操作行為和操作的數(shù)據(jù)等進(jìn)行記錄,以便對(duì)用戶在系統(tǒng)中的操作進(jìn)行查證,以保證用戶行為是不可偽造的、不可銷毀的、不可否認(rèn)的。也就是說,用戶在系統(tǒng)中的行為是有據(jù)可查的,不能在系統(tǒng)中偽造自己的行為,或者偽造其他用戶的行為;同時(shí),用戶是不能銷毀這些證據(jù)的,不能否認(rèn)自己的行為。 日志記錄具體包括兩部分:行為日志記錄和數(shù)據(jù)日志記錄。
(1) 行為日志記錄
行為日志記錄就是要對(duì)用戶在系統(tǒng)中所訪問的每一個(gè)頁(yè)面,在各頁(yè)面中所做的每一個(gè)行為都記錄下來,記錄用戶的身份和行為的時(shí)刻。
例如,租戶A的用戶A1在2011年7月13日 17:07:50訪問了XXX系統(tǒng)的重要客戶列表頁(yè)面,做了刪除客戶信息的操作。
行為日志記錄的實(shí)現(xiàn),可以采用面向方法的方案來實(shí)現(xiàn),例如,通過過濾器或攔截器的方式(Spring前置裝備),來對(duì)所有的頁(yè)面請(qǐng)求行為及頁(yè)面里的提交行為多進(jìn)行攔截,然后將其記錄在日志文件里或數(shù)據(jù)庫(kù)里。行為日志記錄是辨別用戶在系統(tǒng)中行為的一個(gè)重要依據(jù),對(duì)于系統(tǒng)使用與系統(tǒng)運(yùn)營(yíng)分開的SaaS系統(tǒng)就顯得尤為重要。
(2) 數(shù)據(jù)日志記錄
數(shù)據(jù)日志記錄,就是要對(duì)用戶在系統(tǒng)中所操作的數(shù)據(jù)進(jìn)行記錄,記錄數(shù)據(jù)的變更過程及變更的歷史。這在多人操作同一個(gè)數(shù)據(jù)的系統(tǒng)中顯得尤為重要??梢酝ㄟ^流程引擎記錄流程日志。
例如,用戶A在財(cái)務(wù)系統(tǒng)中提交了一張財(cái)務(wù)報(bào)銷單,報(bào)銷金額是1000元,在經(jīng)過了用戶B、C、D等一系列人的修改和審批后,用戶A看到的報(bào)銷金額變成了500元,如果沒有報(bào)銷金額的變更日志記錄,用戶A一定會(huì)很疑惑,是誰因?yàn)槭裁丛蛐薷牧诉@個(gè)報(bào)銷金額。
那么,系統(tǒng)就很有必要對(duì)報(bào)銷金額的變更進(jìn)行日志記錄。
(3) 日志記錄的安全
日志記錄是對(duì)用戶在系統(tǒng)中行為進(jìn)行查證的依據(jù),是用來跟蹤和保障系統(tǒng)安全的,那么,日志記錄本身的安全性也是需要重點(diǎn)考慮的。
首先,日志記錄應(yīng)該是只讀的,最好能加上時(shí)間戳,不應(yīng)該被認(rèn)為修改或者偽造;其次,日志記錄涉及用戶的隱私,應(yīng)該是保密的,要防止被非法使用。
租戶的日志只向Tenant管理員開發(fā),并且Tenant管理員也只能查詢租戶自己的日志。
六、數(shù)據(jù)加密算法(會(huì)犧牲一定性能)
1、 使用AES對(duì)稱加密算法;
2、 每個(gè)企業(yè)生成一個(gè)數(shù)據(jù)密鑰(生成后不能改變,否則先前加密過的數(shù)據(jù)無法進(jìn)行解密);
3、 企業(yè)key是利用企業(yè)管理員的密碼明文去加密存儲(chǔ)的,這就要求每個(gè)企業(yè)在建立時(shí),必須先建立一個(gè)管理
員;
4、 該企業(yè)下的每個(gè)用戶使用其自身的登錄密碼原文對(duì)數(shù)據(jù)密碼進(jìn)行AES加密,并存儲(chǔ)到用戶表中。(密鑰加
密);
5、 用戶保存敏感數(shù)據(jù)時(shí),使用以準(zhǔn)備好的密鑰對(duì)數(shù)據(jù)進(jìn)行AES加密;
加/解密過程:
1、 企業(yè)注冊(cè)時(shí),為企業(yè)生成一個(gè)唯一的key,存放于企業(yè)表中;
2、 用戶注冊(cè)后,用戶表中存放一個(gè)利用用戶密碼明文加密過的企業(yè)key;
3、 用戶登錄后,通過密碼明文,解密出企業(yè)key,并存放到相應(yīng)位置,待加/解密時(shí)使用;
4、 用戶修改密碼時(shí),要使用原密碼將企業(yè)key解密,并用新密碼重新加密保存;
七、基于SaaS云計(jì)算網(wǎng)絡(luò)性能測(cè)試指標(biāo)
衡量云計(jì)算的網(wǎng)絡(luò)性能根據(jù)使用的網(wǎng)絡(luò)設(shè)備不同擁有很多指標(biāo)。最常見最關(guān)鍵的性能指標(biāo)包括以下幾項(xiàng):新建速率(CPS)、并發(fā)數(shù)(CC)吞吐量(GoodPut)、響應(yīng)時(shí)間(Response Time)。
(1) 新建速率
新建速率指通過數(shù)據(jù)中心中間網(wǎng)絡(luò)每秒可以處理的TCP Session速率,單位為CPS(Connections Per Second)。 新建速率中的“新建”是指一個(gè)TCP Session成功建立并關(guān)閉的整個(gè)過程,將TCP關(guān)閉方式選擇使用TCP FIN報(bào)文觸發(fā)的4次握手關(guān)閉方式。此種方式最符合當(dāng)前普遍的網(wǎng)絡(luò)協(xié)議應(yīng)用模型。在部分特殊業(yè)務(wù)需求的測(cè)試場(chǎng)景下,還可以采用TCP RESET方式進(jìn)行快速會(huì)話關(guān)閉,以檢驗(yàn)網(wǎng)絡(luò)系統(tǒng)能夠支持的極限性能。
新建速率指標(biāo)將主要體現(xiàn)數(shù)據(jù)中心網(wǎng)絡(luò)設(shè)備的CPU運(yùn)算處理能力。對(duì)新建速率測(cè)試開始前,應(yīng)記錄網(wǎng)絡(luò)處理設(shè)備的CPU/Memory等關(guān)鍵性能指標(biāo),測(cè)試過程中和結(jié)束后對(duì)這些指標(biāo)進(jìn)行監(jiān)控,實(shí)時(shí)了解整個(gè)網(wǎng)絡(luò)的運(yùn)行情況。
(2) 并發(fā)數(shù)
并發(fā)數(shù)指通過數(shù)據(jù)中心中間網(wǎng)絡(luò)可以同時(shí)并發(fā)存在的最大TCP Session數(shù)量,單位為CC(Current Connections)。 并發(fā)數(shù)指標(biāo)體現(xiàn)了整網(wǎng)會(huì)話保持與表項(xiàng)存儲(chǔ)的能力,與網(wǎng)絡(luò)處理設(shè)備的內(nèi)存大小有直接關(guān)系。
對(duì)于并發(fā)數(shù)指標(biāo)測(cè)試來說,尤其需要關(guān)注其上層協(xié)議的具體應(yīng)用,一個(gè)Telnet連接保持1小時(shí)與一個(gè)http連接保持1小時(shí)在協(xié)議處理流程上是有很大不同的,應(yīng)盡量根據(jù)實(shí)際網(wǎng)絡(luò)中的業(yè)務(wù)流量設(shè)計(jì)測(cè)試模型。
(3) 吞吐量
吞吐量指當(dāng)前網(wǎng)絡(luò)可以有效傳輸?shù)淖畲骽ttp數(shù)據(jù)量,也被稱為有效吞吐GoodPut,區(qū)別于傳統(tǒng)意義上的測(cè)試指標(biāo)吞吐量ThroughPut,結(jié)果單位為BPS(Byte Per Second)。
吞吐量指標(biāo)除了受新建速率的直接影響外,還會(huì)受到網(wǎng)絡(luò)中各設(shè)備的交換架構(gòu)、接口總線等元件單位間處理能力的限制,也直接體現(xiàn)了整個(gè)網(wǎng)絡(luò)的應(yīng)用數(shù)據(jù)吞吐轉(zhuǎn)發(fā)能力。
吞吐量測(cè)試結(jié)果很大程度上依賴于新建速率能力,其間關(guān)系類似于傳統(tǒng)吞吐量BPS(Bit Per Second)與網(wǎng)絡(luò)設(shè)備包轉(zhuǎn)發(fā)能力PPS(Packets Per Second)之間的關(guān)系。在測(cè)試吞吐量的過程中,首先測(cè)得網(wǎng)絡(luò)的新建速率,然后將新建速率測(cè)試結(jié)果乘以一定比率系數(shù),作為吞吐量測(cè)試中使用的的穩(wěn)定新建速率參數(shù)始終不變,測(cè)試時(shí)逐步提高HTTP有效載荷大小,通過觀察出現(xiàn)HTTP連接出現(xiàn)失敗前的有效載荷最大傳輸速率,得到其吞吐量測(cè)試結(jié)果。
(4) 響應(yīng)時(shí)間
響應(yīng)時(shí)間指從客戶端發(fā)起http請(qǐng)求,到得到正確數(shù)據(jù)響應(yīng)所經(jīng)歷的時(shí)間,一般用來衡量中間網(wǎng)絡(luò)的綜合處理能力,單位為毫秒。
響應(yīng)時(shí)間指標(biāo)測(cè)試方法主要有兩種:一種是基于真實(shí)服務(wù)器的業(yè)務(wù)響應(yīng)時(shí)間測(cè)試,此測(cè)試結(jié)果包含了中間網(wǎng)絡(luò)設(shè)備與服務(wù)器兩部分處理延遲時(shí)間;另一種是通過測(cè)試儀模擬服務(wù)器快速響應(yīng)請(qǐng)求的測(cè)試,這種測(cè)試方法可以盡量減少服務(wù)器端處理延遲的影響,得到近乎純粹的網(wǎng)絡(luò)處理延遲時(shí)間。
響應(yīng)時(shí)間測(cè)試要在一定的新建速率下進(jìn)行,這樣做也是為了盡量貼近實(shí)際網(wǎng)絡(luò)情況。但此測(cè)試中的新建速率需要維持在一個(gè)較低的水平線上,最好是根據(jù)真實(shí)環(huán)境平均值設(shè)定,這是因?yàn)樾陆ㄋ俾瘦^高時(shí)會(huì)導(dǎo)致CPU資源占用較高,影響設(shè)備對(duì)連接的處理能力。
評(píng)論
查看更多