Windows Azure安全概述
公告 :本博客為微軟云計算中文博客 的鏡像博客。 部分文章因為博客兼容性問題 ,會影響閱讀體驗 。如遇此情況,請訪問 原博客 。
摘要
Windows Azure ,作為一個應用程序宿主平臺必須提供私密性,完整性和用戶數據的可用性。它也必須提供透明的可靠性來允許用戶和他們的代理商通過自己和Microsoft追蹤服務管理。
本文檔描述了大量在Windows Azure中實現的控制器,用戶可以決定是否這些能力和控制器適合他們的唯一需求。該概述以從用戶和微軟業務觀點對安全功能的技術測試開始 - 包括以Windows Live ID驅動并使用雙向SSL認證進行擴展的身份和訪問管理;分層環境和組件的隔離,虛擬機的狀態維護和配置完整性,為盡量減少硬件故障的影響而提供的三重冗余存儲。 在技術討論的額外部分還提到了在用戶的云環境中,通過Windows Azure的支持的可靠性如何監視,記錄和報告。
緊接著技術的討論,本文也提到了人員和流程來幫助使Windows Azure更安全。其中包括微軟被全球公認的在Windows Azure的開發過程中的SDL原則,控制操作人員和管理機制,物理安全特性,例如用戶選擇地域,資料設備 訪問,電力冗余。
本文以簡短的對規范的討論作為結束。規范在IT企業中始終有著持續影響力。 雖然對法律,法規和行業需求遵守的責任在Windows Azure的用戶身上,微軟對于提供基礎安全設施的承諾,以及為適應用戶特殊挑戰而提供的不斷擴大的工具選擇范圍對微軟自身的成功是極其重要的。并且這些也是我們用戶使用Windows Azure平臺獲得成功的關鍵所在。
目錄
1.引言
1.讀者和范圍
1. 引言
Windows Azure是云端服務操作系統,包括了Windows Azure平臺上的開發,服務寄宿和服務管理。Windows Azure通過微軟數據中心提供開發人員按需計算和存儲,讓他們能夠寄宿,拓展,管理互聯網上的Web應用程序。通過使用Windows Azure,微軟寄宿屬于用戶的數據和程序。也正因為這樣,Windows Azure必須解決超出傳統IT方案意義上的信息安全挑戰。本文檔介紹了Windows Azure的用戶可以使用的控制器,以實現其所需的安全級別,并確定是否這些能力和控制器能夠適應他們的獨特需求。
讀者和范圍
這本白皮書的目標讀者包括:
- 對創建在Windows Azure 上的運行的應用程序感興趣的開發者。
- 正在考慮用Windows Azure 支持新的或者現存服務的技術決策者。
這份白皮書中的的重點是作為在線服務平臺組件的Windows Azure 操作系統,并未涉及任何關于Windows Azure 平臺組件的詳細說明,如Microsoft SQL Azure , AppFabric,或Microsoft Codename "Dallas"。討論集中在Windows Azure的安全特性和功能性上。
盡管本文提供了最低限度的一般性介紹信息,讀者依然需要熟悉Windows Azure的基本概念(參考Microsoft提供的其他參考資料)。 在文檔的最后,你能發現更多其他參考資料的鏈接來做進一步閱讀。
文檔的最后也包含了術語表,專業詞匯在本文中用粗體加下劃線標注。
安全模式基礎
在專研更深的Windows Azure 安全特性技術之前,這一部分為它的安全模式提供了一個簡單的概述,之后,這個概述假設了讀者熟悉Windows Azure 基礎概念,主要集中討論安全相關的特性。
<!-- -->
用戶視野:計算,存儲,和服務管理
Windows Azure 被設計成對典型基礎運用下的大量基礎設施的抽象(服務器,操作系統,Web數據庫軟件等)因此開發者可以集中精力創建應用程序,本節對一個典型用戶訪問Windows Azure時看到的東西進行了簡要概述。
圖1:Windows Azure關鍵組件的簡要概述。
如圖1所示,Windows Azure 提供了兩個主要的功能:基于云的計算和存儲。在這上面,用戶可以建立和管理應用程序和關聯配置。用戶通過訂閱來管理應用程序和存儲。典型訂閱可以通過用信用卡在訂閱網頁上關聯新的或者現存的身份憑證來創建。隨后對訂閱系統的訪問可以通過一個Windows Live ID(https://login.live.com)來進行控制。Windows Live ID 是現存的運行時間最長的互聯網身份驗證服務之一,為Windows Azure提供了一個已被嚴格測試的門衛系統。
訂閱可以包括零個或多個托管服務和零個活多個存儲賬戶。一個 托管服務包含了一個或多個的部署。一個調度包含了一個或多個角色。一個角色包含了一個或多個實例。存儲帳號包含二進制數據塊,表格,和隊列。Windows Azure 驅動是一個特殊的二進制數據塊類型。 托管服務的訪問控制和存儲賬戶由訂閱管理。對關聯到訂閱的Windows Live ID 進行身份驗證的功能提供了對在該訂閱下的所有托管服務和存儲賬戶的完全控制權。
用戶上傳開發完成了的應用程序并通過Windows Azure Portal 網站,或編程通過服務管理API(SMAPI) 來管理他們的主機服務和存儲帳號。用戶通過瀏覽器進入Windows Azure Portal 或通過命令行工具(可編程或用Visual Studio)訪問SMAPI,
SMAPI的身份驗證是基于用戶創建的共有/私有密鑰對和通過Windows Azure Portal 注冊的自簽名證書的。這個證書會在后續的SMAPI訪問中用到。SMAPI在Windows Azure Fabric中將請求進行排隊,然后Windows Azure Fabric接管請求,初始化,管理所需要的應用。用戶可以通過Portal或者使用相同認證機制的可編程SMAPI監視和管理他們的應用程序。
對Windows Azure 存儲的訪問時由存儲賬戶密鑰來管理的。該密鑰關聯到了每個存儲賬戶上。存儲賬戶密鑰可以被Windows Azure Portal或者SMAPI所重置。
計算和存儲能力進一步組成了Windows Azure的基礎功能單元。圖2 提供了更顆?;囊晥D,暴露出了這些基礎單元并說明了它們與之前描述的組件之間的聯系。所有到目前為止討論過的組件的描述歸納如下:
- 主機服務包含部署,角色和角色實例。
- 存儲賬戶包含二進制數據塊,表格,隊列和驅動。
這些在術語表里定義都有定義,關于它們的詳細說明在Windows Azure 的一般資料中就可以找到。在這里簡單介紹來對本文余下部分的對Windows Azure 的安全功能更深入的討論做準備。
主要的Windows Azure 主題,對象,和身份驗證機制在表1中歸納如下:
表1Windows Azure 授權機制的總結:
| 主題 | 對象 | 身份驗證機制 |
| 用戶 | 訂閱 | Windows Live ID |
| 開發者操作者 | Windows Azure Portal/API | Live ID (Windows Azure Portal) 或者自簽名證書 (SMAPI) |
| 角色實例 | 存儲 | 存儲賬戶密鑰 |
| 擴展應用程序 | 存儲 | 存儲賬戶密鑰 |
| 擴展應用程序 | 應用程序 | 用戶定義 |
圖2:Windows Azure 組件和關系的顆?;f明。
Windows Azure 的視角 :Fabric
我們已經從一個上層的角度描述了可以被用戶管理的Windows Azure組件,接下來我們將進一步探究在Windows Azure 基礎計算和存儲底下的Fabric。盡管我們已經說過用戶可以通過定義的管理接口控制Fabric,Windows Azure主要目的依然是抽象虛擬基礎設施的管理,使得它能為用戶簡單的呈現一致性的,可擴展性的資源集。簡而言之,開發者不需要管理這些虛擬的基礎設施,這些都是微軟代做了。這一節將介紹由微軟直接管理的Windows Azure Fabric中的一些基礎組件。
基于被用戶指定的角色實例的數目,Windows Azure 為每個角色實例提供了一個虛擬機(VM),然后在這些虛擬機上運行這些角色。這些虛擬機運行在為使用云技術特別設計的 管理程序上(Windows Azure 管理程序)。一個虛擬機是一個專門應用:它運行在一個托管了Fabric Agent(FA)的被叫做Root OS 的操作系統上。FAs管理guest agents (GA),(托管在用戶虛擬機上的guest OSes中) 。FAs也管理存儲節點。Windows Azure 管理程序,Root OS/FA,和用戶VMs/GAs組成了一個計算節點。
FAs被Fabric Controller (FC)管理,FC存在于計算和存儲節點的外邊(計算和存儲集群通過獨立的FCs管理)。如果有用戶在系統運行時更新了他的應用程序的配置文件,FC會與 FA通信,FA然后聯系GA,GA通知應用程序來報告配置的改變。在硬件故障的情況下,FC將自動找到可用硬件然后在新硬件上重啟虛擬機。
2. 云安全設計
從根本上說/基本上,正如其它任何應用托管平臺,Windows Azure 必須提供私密性、完整性和用戶數據可用性。它也必須提供透明的可靠性來允許用戶和他們的代理商通過自己和Microsoft追蹤服務管理。在描述了基礎組件和相互關系之后,這一節會說明Windows Azure是怎樣提供這些信息安全的經典特征。
私密性
- 私密性確保用戶的數據只能被授權實體訪問。Windows Azure 通過以下機制提供私密性:
- 身份和訪問控制 - 確保只有適當的被驗證過的實體可以被允許訪問。
- 隔離 - 通過保證適當的容器在邏輯上和物理上的分離來實現最小化數據交互
- 加密 - 在Windows Azure內部使用,來保護控制渠道并且可提供給需要嚴格數據保護機制的用戶
更多的關于這些數據保護機制在Windows Azure中試如何實現的內容如下:
身份和訪問管理
現有的最健壯的安全控制機制也不能防止那些獲得未經授權的身份信息和密鑰的攻擊者。因此,身份信息和密鑰管理在安全設計和Windows Azure的實現中都是關鍵的組件。
所有的主要身份和驗證機制已經在之前介紹過了,它們歸納在表1中,這部分提供了更為深層的描述,包括APIs,應用程序優先級,密鑰分配和對可信子系統(如Fabric 控制器)的身份驗證。
SMAPI身份驗證
SMAPI通過REST協議提供Web服務,它是通過Windows Azure 工具提供給用戶開發者使用的。這個協議運行在SSL上 ,通過一個證書和用戶創建的私鑰來進行身份驗證。這個證書不需要一個可信任的檢查證書頒發者(CA)。只需要一個自簽名證書并且將該證書的指紋通過Windows Azure Portal關聯到訂閱即可。只要用戶擁有對密鑰以及用來創建賬戶的Live ID的控制,這個方法提供了高度安全保證,確保只有用戶授權的實體才能訪問服務的特定部分。
最少特權用戶軟件
用最少的特權運行應用程序被廣泛當作信息安全的最佳實踐。為了與最少特權原理保持一致,用戶沒有被授予對虛擬機的管理員權限。默認情況下,用戶軟件在Windows Azure中使用低特權賬戶運行(將來版本中,用戶可以根據需要選擇不同特權模型)。這減少了潛在的影響,增加了任何除了獲得漏洞外還需要提升特權才實施攻擊的攻擊復雜性。這也保護用戶的服務不受自己終端用戶的攻擊。
內部控制通信量的SSL雙向認證
所有Windows Azure內部組件的通信被SSL保護。在大多數情況下,SSL證書是自簽名的。例外是可能被Windows Azure網絡外部訪問的連接所使用的證書(包括存儲服務)以及FC。
FC擁有微軟CA頒發的證書,是擁有可信任根CA的。FC的公鑰可以被微軟開發工具使用。這樣當開發人員遞交了新的應用程序印象后,它們可以被FC公鑰加密來保護任何里面的秘密資料。
證書和私有密鑰管理
為了降低暴露證書和私鑰給開發者和管理者的風險,它們是通過一個不同于使用它們的代碼的獨立機制安裝的。證書和私鑰是通過SMAPI或者Windows Azure Portal以PKCS12 (PFX)文件格式上傳的。上傳過程受到SSL的保護。這些PKCS12文件可以被密碼保護,但是如果這樣,密碼必須在同一個消息中包含。SMAPI提供了密碼保護機制(如果需要的話),使用了SMAPI的公鑰加密了整個PKCS12數據塊,在一個私密的FC上的數據存儲點進行存儲,并附帶存儲了簡短的證書名和公鑰來作為元數據。
在同一訂閱中的角色所關聯的配置數據指定了角色所需的證書。當一個角色在一臺虛擬機上初始化時,FC得到了相應的證書,解密PKCS12數據塊,重新使用FA的公共傳輸密鑰對其加密,并且把它發送到節點上的FA處。節點上的FA把它發送到初始化角色的虛擬機上的GA處,然后GA解密它并且在操作系統的數據存儲點上進行安裝,并標記私鑰可以被使用但是沒有被導出。在安裝后,所有臨時證書拷貝和密鑰被銷毀。如果需要重新安裝,證書必須被FC重新打包。
FC使用的硬件證書
除了應用程序密鑰,FC必須維護一組證書(密鑰和/或密碼)在向不同在它控制下的硬件設備驗證自身時使用。傳輸,維持,使用這些證書的系統使得Windows Azure開發人員,管理者,服務備份員不必需要了解秘密信息。對FC的主身份公鑰的加密在FC安裝和重配置時使用,來傳輸訪問網絡硬件設備,遠程電力轉換器和其他系統所需的身份信息。FC在它的內部被復制的數據存儲點(同樣被FC的主身份證書加密)中維護這些秘密信息。
Windows Azure Storage的訪問控制
前面已經討論過,Windows Azure Storage擁有一個簡單的訪問控制模型。每個Windows Azure 訂閱可以被創建一個或多個存儲賬戶。每個存儲賬戶有一個密鑰用于在存儲賬戶中控制訪問所有數據。這支持這樣的一個場景,存儲關聯應用程序并且這些應用程序完全控制他們的關聯數據。通過在存儲前端創建用戶應用程序,給予應用程序存儲密鑰,讓用戶程序驗證遠程用戶,甚至對單個的請求進行授權我們可以獲得一個更為成熟的訪問控制模型。
兩種機制支持了一般性的訪問控制場景。部分在數據存儲的賬戶中的數據可以被標記為公開可讀的,在這種情況下,讀數據可以不需要共享密鑰簽名。這主要用于訪問非敏感數據,例如網頁圖片。
另一種機制被叫做共享訪問簽名(SAS)。一個進程,知道給定存儲賬戶密鑰(SAK),可以創建一個請求模板并且用SAK來簽名。這個簽完名后的URL可以給另一個進程,另一個進程之后可以用它來填充請求細節并向存儲服務發送該請求。身份驗證依然是基于一個用SAK創建的簽名。但是該簽名是由第三方發送給存儲服務的。這樣的代理機制可以對有效時間,許可集和存儲賬戶中哪一部分可以被訪問進行限制。
一個共享訪問簽名也被稱為一個容器級別的訪問策略,該策略代替了用一定數量參數(例如有效時間或者許可集)在URL中直接表示的方法。這些參數實際上由存儲在Windows Azure存儲服務中的訪問策略指定。因為一個容器級別的訪問策略可以在任何時候被修改或者撤銷,它提供了更大的靈活性和對所授權限的控制力。
為了支持周期性的SAK的變化而不造成服務的中斷,同一時間一個存儲賬戶可以有兩個關聯到自身的密鑰(任一密鑰均有對數據的完全訪問權)。改變密鑰的順序是先添加新的密鑰到存儲服務,然后改變所有訪問該服務的應用程序使用的密鑰。最后移除舊的密鑰。改變被授權的存儲密鑰是通過SMAPI或者Windows Azure Portal來完成的。
隔離
除了對數據訪問進行身份驗證,簡單地把不同的數據適當地進行隔離也是一種被廣泛認同的保護方式。Windows Azure 提供了不同級別的隔離,如下討論:
管理程序,Root OS 和Guest VMs的隔離
一個關鍵的邊界是Root虛擬機與guest虛擬機的隔離,guest虛擬機與另一個guest虛擬機的隔離,這是通過管理程序和Root OS來管理的。管理程序/Root OS利用微軟的數十年的操作系統安全的經驗,以及最新微軟Hyper-V經驗,提供了一個健壯的guest VMs隔離。
Fabric Controllers的隔離
作為Windows Azure Fabric的核心部分,許多重要的控制器被應用以減少對Fabric控制器的可能危害,特別是防止哪些來自潛在的被在用戶程序中所攻破的FAs的威脅。從FC到FA的通信是單向的 - FA實現了一個被SSL保護的服務,該服務被FC訪問并只對請求作出反應。它不能發起與FC或者其他高特權內部節點的連接
FC以返回消息來自不受信任節點的標磚嚴格分析所有收到的返回消息。
此外,FCs和無法實現SSL的設備在獨立的VLANs上,這限制了他們的身份驗證接口暴露在被攻破的虛擬機的主機節點的可能性。
包過濾
管理程序和Root OS提供網絡數據包過濾器保證不受信任的虛擬機不能產生偽造流量,不能接收非以它們為接受對象的數據,不能指揮數據流向以保障基礎設施端點,此外,它們不能發送或接收不適當的廣播數據。
存儲節點只運行Windows Azure的提供的代碼和配置,因此訪問和控制的范圍僅允許合法用戶,應用程序及管理者。
用戶訪問VM(虛擬機)被包過濾限制在邊緣有限的負載平衡器及Root OS。特別是遠程調試,遠程終端服務或遠程訪問虛擬機文件在默認情況下是不準許的;微軟正計劃允許用戶能夠明確選擇這些協議。微軟允許用戶指定在上述情況下是否允許互聯網及遠程鏈接。
不同的應用程序之間的連接作用都被認為是互聯網的連接。連接規則是累積的,例如,如果任務實例A和B屬于不同的應用程序,A只有在A本身可以打開與互聯網的連接且B可接受來自互聯網的連接的情況下才可以打開與B的連接。
fabric控制器將目錄上的角色轉換為一個任務實例列表,并得到一個IP地址的列表清單。這個IP地址列表被FA用于數據包過濾器,只允許內部應用程序間的通信訪問這些IP地址。角色被允許啟動與互聯網的連接。這使得他們能夠通過網絡連接并將信息通過他們的VIP送至任何網絡可見任務中。
VLAN隔離
VLANs在隔離FCs和其他設備時被使用。 VLANs對網絡進行隔離,這樣VLANs之間的通信不可能不經過路由器,這防止了一個被攻破的節點偽造來自它自身VLAN外部的數據通信(除了對自身VLANs其他節點的通信外),并且它也不能非來自或發到自身VLANs的通信。
每個群集中有三個VLANs:
?主VLAN - 連接不受信任的用戶節點
?FC VLAN - 包括受信任的FCs和支持系統
?設備VLAN - 包括受信任網絡和其他基礎設施設備
從FC到主VLAN的通信是允許的,但通信不能從主VLAN到FC VLAN。從主VLAN到設備VLAN的鏈接也是被封鎖的。這保證了即使一個運行用戶代碼的節點被攻破,也它不能攻擊FC或設備VLAN的節點。)。
用戶訪問的隔離
管理用戶環境訪問的系統(即Windows Azure Portal,SMAPI,等等)是在一個由微軟運作的Windows Azure應用程序中被隔離的。這在邏輯上將用戶訪問基礎設施與用戶應用程序和儲存隔離。
加密
在存儲和傳輸中的數據加密可令用戶在Windows Azure使用中,確保數據的保密性和完整性。如前所述,關鍵的內部通信使用SSL加密進行保護。作為用戶的選擇之一,Windows Azure SDK擴展了核心.NET類庫以允許開發人員在Windows Azure中整合.NET加密服務提供商(CSPs)。熟悉.NET CSPs的開發人員可以容易地實現加密,哈希以及密鑰管理功能來存儲和傳輸數據。舉例來說,使用.NET CSPs,Windows Azure開發人員可以容易地訪問:
?如ASE之類有多年現實世界測試使用經驗的加密算法,從而避免 "roll your own crypto"的錯誤
?包括MD5和SHA - 2在內的一系列哈希功能來驗證數據的正確性,創建和驗證數字簽名,以及創建非可辨認憑證來替代敏感數據。
?RNGCryptoServiceProvider類產生足以為強壯的密碼系統所需的高級熵提供種子的隨機數。
?簡單易懂的密鑰管理方法,使Windows Azure存儲中自定義的加密密鑰能夠簡單地被管理。
有關如何利用Windows Azure提供的加密功能,請參考本文件結尾處的參考資料。
數據刪除
在適當情況下,私密性應當超出數據的生命周期。Windows Azure的存儲子系統使用戶數據在一次刪除操作被調用后無法再被得到。所有的存儲操作,包括刪除操作被設計成即時一致的。一個成功執行的刪除操作將刪除所有相關數據項的引用使得它無法再通過存儲API訪問。所有被刪除的數據項在之后被垃圾回收。正如一般的計算機物理設備一樣,物理二進制數據當相應的存儲數據塊為了存儲其他數據而被重用的時候會被覆蓋掉。4.4.3節描述了物理媒介的清除。
完整性
希望把自己的數據計算和存儲工作放到Windows Azure上的用戶顯然希望數據被保護起來不被未經授權地改變。微軟的云操作系統以多種方式來提供這一保證。
對客戶數據的完整性保護的首要機制是通過Fabric VM設計本身提供的。每個VM被連接到三個本地虛擬硬盤驅動(VHDs):
?D:驅動器包含了多個版本的Guest OS中的一個,保證了最新的相關補丁,并能由用戶自己選擇。
?E:驅動器包含了一個被FC創建的映像,該映像是基于用戶提供的程序包的。
?C:驅動器包含了配置信息,paging文件和其他存儲。
D:和E:虛擬驅動器是只讀的,因為它們的ACLs被設置為禁止來自用戶進程的寫操作。因為操作系統可能需要更新這些只讀卷,它們用支持增量文件的VHD來實現。最初在一個應用程序內所有角色實例的VHDs完全相同地啟動。D:驅動器的增量驅動器當Windows Azure要給含有操作系統的VHD打補丁時被移除掉。E:驅動器的增量驅動器當一個新應用程序映像被上傳的時候被移除掉。這個設計嚴格保證了在下方的操作系統的用戶應用程序的完整性。
另一個主要的完整性控制器當然是存儲在讀/寫C:驅動中的配置文件。用戶提供了一個單個的配置文件來指定在應用程序中所有角色的連接需求。FC為每個角色接管了該配置文件的子集,對每個角色都把它放在C:驅動器中。如果用戶在角色實例正在運行時更新了配置文件,FC-通過FA-聯系在虛擬機的Guest OS中運行的GA并通知它更新在C:驅動器中的配置文件。之后它通知用戶應用程序來重讀配置文件。C:驅動器的內容在此時未被移除,也就是說C:驅動器對于用戶的應用程序來說是穩定的存儲器。只有被授權的用戶,通過Windows Azure Portal或者SMAPI來訪問他們托管的服務才能夠更改配置文件。因此,通過Windows Azure的固有設計,用戶配置的完整性在應用程序的生命周期內得以保障。
至于Windows Azure存儲,完整性是通過使用簡單的訪問控制模型(如前所述)來實現的。每個存儲賬戶有兩個存儲賬戶密鑰來控制所有對在存儲賬戶中數據的訪問,因此對存儲密鑰的訪問提供了完全的對相應數據的控制。
最后,Fabric自身的完整性在從引導程序到操作中都被精心管理。正如之前說過的,在VM上運行的并托管Fabric內部節點的Root OS是一個非常富有經驗的操作系統。在一些節點啟動后,它啟動FA并等待連接以及來自FC的命令。FC使用雙向SSL驗證連接到新啟動的節點。FC向FAs的通信是通過單向推送的,這樣攻擊在命令鏈中的高層組件就很困難,因為底層組件不可能直接發送命令給高層組件。與上面提到的許多機制組合在一起,這些特征幫助用戶讓Fabric處在不受損的狀態。
可用性
云計算平臺的主要優勢之一是基于通過虛擬化技術來實現的大規模冗余的強健的可用性。Windows Azure提供了大量的冗余級別來提東最大化的用戶數據可用性。
數據在Windows Azure中被復制備份到Fabric中的三個不同的節點來最小化硬件故障帶來的影響。
用戶可以通過創建第二個存儲賬戶來利用Windows Azure基礎設施的地理分布特性達到熱失效備援功能。這種情況下,用戶可以創建自定義角色從而在微軟設施內復制備份和同步數據。用戶也可以寫自定義角色來為離線私有備份而從存儲中拿出數據。
在每個虛擬機上的GAs監視虛擬機的狀態。如果GA響應失敗,FC會重啟虛擬機。將來,用戶可以選擇適應更為自定義化的持續/恢復策略的更為老道的檢測流程。當硬件遇到問題時,FC會將角色實例移動到一個新的硬件節點并為這些服務角色實例重啟網絡配置來恢復服務的功能性。
如前所述,每個虛擬機有一個D:驅動器,包含了可供用戶選擇的Guest OS版本。用戶可以手動從一個Guest OS移動到另一個,也可以選擇讓微軟在有新的版本發布后幫助移動他們的應用程序。這個系統使得用戶可以用最少的交互最大化定期維護的工作。
FCs為用戶服務使用類似的高可用性原理和自動失效備援,從而讓FC的管理功能始終可得。在Windows Azure平臺或者用戶服務軟件更新時,FCs利用一個稱為更新域的邏輯部分在給定時間中改變一個服務角色的實例中的一部分而讓剩余的實例繼續對請求進行服務。FCs也能夠通過故障域知道潛在的硬件和網絡點的故障。對任何擁有大于一個角色實例的服務來說,Windows Azure保證這些實例在多個更新和故障域中被部署(除非由用戶特別指定)來保證在更新和獨立網絡硬件故障時服務的可用性。
可靠性
因為云計算平臺實際上是外包計算環境,它們必須能夠經常向用戶和其指定的代理商證明其運行的安全性。 Windows Azure的實現了多層次的監測,記錄和報告來讓用戶了解這一點。最主要的,監視代理(MA)從包括FC和Root OS在內的許多地方獲取監視和診斷日志信息并寫到日志文件中。它最終將這些信息的子集推送到一個預先配置好的Windows Azure存儲賬戶中。此外,監視數據分析服務(MDS)是一個獨立的服務,能夠讀取多種監視和診斷日志數據并總結信息,將其寫到集成化日志中。
3.開發生命周期安全
微軟采用廣泛公認的技術和工具在Windows Azure的開發過程,自身服務的設計和實現方面提供安全保證。
Windows Azure完全集成了微軟安全開發生命周期(SDL)的方針,這個方針在軟件安全保證程序方面是世界公認的模型(關于更多的信息可以再進一步閱讀參考資料中找到)。
特別地,微軟會仔細審查哪些低信任度組件被高信任度組件分析的地方,例如:
-
當Windows Azure管理程序和Root OS進程處理來自用戶控制的虛擬機的硬盤讀寫和網絡讀寫請求時。
-
當Windows Azure portal和SMAPI處理來自被用戶控制的網絡來源的請求時。
-
當FC分析通過SMAPI傳輸過來的額用戶配置數據時。
除了仔細設計和實現外,這些組件使用托管程序(如C#)來開發以減少著名的內存處理漏洞的可能性,并在Fabric在進入生產模式前進行大規模的接口測試。微軟在升級或者修改處理外部請求的代碼前都會繼續使用這些方式。
微軟的SDL方針也廣泛地被推薦給Windows Azure的用戶,因為托管在Windows Azure上應用程序的安全很大程度上依賴于用戶的開發過程。 作為本文的指南手冊,開發Windows Azure應用程序的安全最佳實踐,也能夠在microsoft.com上找到(參考進一步閱讀參考資料)。
即便微軟和用戶都按照SDL來做,在開發和部署到Windows Azure中間過程中依然會有極小的可能性遭受攻擊。正如之前所述,用戶是通過SMAPI來提供自己的應用程序的,SMAPI使用了證書身份驗證和被HTTPS保護的信道以及其他控制器來傳輸代碼。
服務的運營方式
操作Windows Azure的人員和流程大概是這個平臺最重要的安全特性了。這一節描述了微軟數據中心基礎設施的特性。這些特性幫助提高和維護安全性,持續性和私密性。
微軟操作人員
Windows Azure的開發人員和管理人員,按照我們的設計,被給予足夠的權限來操作和提升服務以完成他們各自的職責。正如在本文中所述,微軟實現了預防,檢測和反應控制器,包括如下機制來幫助防止未經授權的開發者和/或管理活動:
-
對敏感數據的嚴格訪問控制
-
控制器組合以極大提升對惡意行為的非依賴性檢測
-
多級監視,記錄和報告
除此之外,微軟還對相關操作人員進行背景認證,并根據背景認證級別對生產環境中的應用程序,系統和網絡基礎設施實行有限訪問。
微軟的操作人員只有在顧客要求下才能進入顧客的賬戶或者查看相關信息。這一切必須遵守相關程序并且只能在顧客需要的情況下完成。
安全響應
關于微軟安全的漏洞可以通過向微軟安全響應中心(http://www.microsoft.com/security/msrc/default.aspx)報告,或者通過郵件(secure@microsoft.com)。微軟始終堅持對通過正規渠道反映的漏洞進行評估和回復。
網絡管理
連接Windows Azure 用戶的網絡硬件是這一平臺的關鍵部分。以下這一部分將介紹一些服務在這一層上提供的安全措施。
正如前面所提到的,Windows Azure 的內部網絡被強大的過濾系統從其他網絡系統中隔離開。在通常情況下能夠為內部網絡的高速度和低風險提供堅實的基礎。
諸如交換器,路由器,負載均衡器等網絡配置和管理工具只能由微軟運營部進行操作,而且通常只有在重大變化的情況下才能進行操作(比如數據中心自己重置了)。這些由Windows Azuret提供的虛擬技術使得這些變化對于顧客來說幾乎是看不見的。
此外,任何不能提供充分通信安全特性的硬件(比如SSL)都由一個獨立的LAN管理,該LAN與其他暴露給互聯網或者客戶訪問的節點是隔離的。
FC遠程管理
Fabric控制器擁有一個可以接收來自SMAPI和Windows Azure 管理者的命令的應用程序接口。策略級別的決定是由SMAPI在應用程序級別上實施的,只會基于用戶已經被驗證的身份來生成關于用戶自身資源的請求。作為低級別的,核心的供給和管理設施,FCs提供了細顆粒度的訪問控制決策來適應他們的角色。
物理安全
一個系統不可能比它自身運行的物理平臺更安全。Windows Azure在世界各地的微軟設施中運行,并與其他微軟在線服務分享空間和功用。每個設施被設計成24*7運行并且提供了多種方法來幫助免受停電,物理干擾,網絡故障帶來的影響。這些數據中心符合物理安全和可靠性的行業標準,并且他們是由微軟操作人員管理,監視和維護的。進行一步關于Windows Azure物理安全的詳細信息如下所述。
設施訪問
微軟使用行業標準訪問機制,以保護Windows Azure的物理基礎設施和數據中心設施。僅限于一小部分必須定期改變自己管理訪問憑證的操作人員訪問。數據中心的訪問,以及審批數據中心的訪問的機構,是被微軟操作人員按照本地數據中心安全實踐來控制的。
電力冗余和故障
每個數據中心設施至少含有兩個電力的來源,包括一個泳衣保證離網操作的發電裝置。環境控制器是自包含的并且當設備及其包含的系統重新在線時依然正常工作。
物理安全控制器被設計成在停電或其他環境事故中不會被關閉的。至于火災或者可能威脅到生命安全的情形,這些設施被設計成允許被搬出以免遭威脅。
媒介清除
當系統生命結束時,微軟操作人員會按照嚴格的數據處理步驟和硬件清除流程來處理。
5. 合規
隨著全球標準包括ISO 27001、Safe Harbor和其他標準的擴散,使得商業和管理規范的重要性增長的很快。在很多的情況下,不遵從這些標準會對組織機構有明顯的影響,包括災難性的經濟懲罰和聲譽的損壞。任何一個之前討論過的威脅都會對規范產生影響,但是也存在著其他一些威脅直接關系到未能按照廣泛認同的實踐來操作,提供規范的表現形式給獨立的審計師,支持電子搜索,并且在其他方面促進用戶的合理努力去核實校準是否符合規律法規和合同的需要。微軟為用戶提供了他們需要的信息去決定是否可能服從他們在Windows Azure下需要服從的法律和規范,并在可能的情況下提供示范該規范的工具。Windows Azure 中的一些幫助用戶的方法討論如下。
用戶可選擇的地理位置
Windows Azure 的一個內在的重要挑戰是平衡服從規范需求和重要的在云服務后的經濟驅動因子之一:分段用戶數據和跨系統、地理和行政管理的多系統處理。Windows Azure用了一個很簡單的方法 處理這個挑戰:用戶去選擇他們的數據存儲地。Windows Azure 中的數據被存儲在微軟的世界各地的數據中心,基于用戶的地理位置的屬性規定來決定用Windows Azure的 哪個入口。通過用戶主動的選擇數據存儲的地理位置這樣就提供了一個方便的方法去最小化服從規范的風險。
合規控制
在不同的控制器級別,本文從多維度說明了Windows Azure符合的已被認同的合規實踐。下面是一些啟用合規的關鍵安全特性:
表2:啟用合規的特性
| 域名 | 相關章節 | 概述 |
| 訪問控制 | 1.2 | Windows Azure提供了多種訪問控制功能 來保護不被未授權的管理或終端用戶訪問。 |
| 加密 | 2.1.3 | 對存儲和傳送的數據加密可以被用戶在Windows Azure中定義,與最好的實踐一起保證數據的保密性和完整性。 |
| 可用性 | 2.3, 4.4 | 用戶可以寫自定義的角色去提供備份,Windows Azure的物理基礎設施坐落在地理冗余的設施上。 |
| 隱私 | 2.1.4 | WWindows Azure的存儲被設計用來確保用戶數據刪除的如實性和一致性。 |
ISO 27001 證書
可信任的第三方證書已經提供了一個不用通過提供由獨立審計員組成的小組(他們可能損害整個平臺的完整性)過多的訪問權限來保護用戶數據的機制。Windows Azure
在 Microsoft Global Foundation Services (GFS)的基礎設施上運作,部分GFS由ISO27001認證。ISO27001是世界范圍內公認的首要國際性信息安全管理標準之一。Windows Azure正在獲得更多行業認證評估的過程中。
除了國際認證標準 ISO27001,微軟公司是Safe Harbor的簽署者并許諾完成所有在Safe Harbor框架下自身的義務。
盡管符合法律,規范,行業需求的責任在Windows Azure用戶身上,微軟依然保證幫助用戶通過上面所述的特性完成合規。
6.進一步閱讀 參考文獻
- 以下資源提供更多的關于Windows Azure 以及相關微軟服務的信息,以及在本文中引用到的關鍵項:
- Windows Azure Home 常規信息和進一步關于Windows Azure資源的鏈接:http://www.microsoft.com/windowsazure/
- Windows Azure開發中心主要知識庫,用于開發指導和參考:http://msdn.microsoft.com/en-us/windowsazure/default.asp
- 開發Windows Azure應用程序的安全最佳實踐: http://download.microsoft.com/download/7/3/E/73E4EE93-559F-4D0F-A6FC-7FEC5F1542D1/SecurityBestPracticesWindowsAzureApps.docx
- Windows Azure中的加密服務和數據安全:http://msdn.microsoft.com/en-us/magazine/ee291586.aspx
- 微軟的安全開發生命周期--SDL 是微軟在Windows Azure開發期間的安全保障: www.microsoft.com/security/sdl/
- 微軟的全球基礎服務安全:http://www.globalfoundationservices.com/security/
- 微軟GFS' ISO 27001證書-http://www.bsigroup.com/en/Assessment-and-certification-services/Client-directory/CertificateClient-Directory-Search-Results/?pg=1&licencenumber=IS+533913&searchkey=companyXeqXMicrosoft
- 微軟安全響應中心--微軟安全漏洞,包括Windows Azure問題,可以報告給http://www.microsoft.com/security/msrc/default.aspx 或通過郵件發送給secure@microsoft.com.。
免責聲明
這個文件是根據目前狀況提供的。本文的信息和觀點表述包括URL和其他互聯網站參考可能會沒有提示而產生變動,您使用時可能有風險。其中的一些例子描述只是為了描述而提供,且都是虛構的。沒有現實的聯系或者推斷。本文不提供你任何的微軟產品過渡屬性的法律權限,你可以復制使用本文作為內部參考目的。
<!-- -->7. 術語
術語 | 定義 |
| 應用程序 | 是一個角色的集合,當在VMs上啟動時,提供一個托管服務。 |
| 集群 | 是硬件模塊的集合被單個FC控制。 |
| 計算節點 | 管理程序的集合,Root OS/FA和用戶VMs/GAs組成一個計算節點。 |
| 配置文件 | 用戶提供了一個單個的配置文件來指定所有在應用程序中角色的連接需求。FC接收部分配置并放到每個角色實例的C:驅動器中。如果用戶在橘色實例正在運行時更新了配置文件,Fabric通知所有虛擬機更新它們的配置文件,并之后通知用戶應用程序重新讀取配置文件。 |
| 用戶 | 本文中,用戶是為了運行應用程序從微軟購買Windows Azure資源的當事人。這個術語“用戶”包括內在Windows Azure上部署的微軟內部小組。 |
| 終端用戶 | 最終用戶是訪問在Windows Azure Fabric部署的服務的人。他們可以是雇員或用戶的用戶(定義見上文)。 他們一般通過互聯網訪問這些服務(除非終端用戶是另一個Windows Azure用戶,這種情況下請求可能來自Windows Azure Fabric內部但是依然被當做來自互聯網對待)。終端用戶是不被Windows Azure基礎設施或者我們默認的用戶配置信任的,也因為如此基礎設施提供對于終端用戶的保護機制。 |
| FA (fabric agent) | Root OS的一個組件,打開了一個SSL端口,這個端口用來接受外來的連接和請求,這些連接和請求來自控制器和執行本地配置行為,這些行為包括VMS的新建和刪除,以及本地存儲系統的更新。 |
| FC (fabric controller) | 軟件,執行算法來管理和提供物理硬件,分配磁盤資源,CPU資源,內存和虛擬機給用戶,部署應用程序和操作系統映像的節點和程序包過濾器來控制在Fabric中的連接。它還參與通過英特爾的預啟動執行環境(PXE)的框架進行遠程網絡啟動操作系統映像節點的初始化過程。 |
| 托管服務 | 一個用戶定義的,基于云的服務,Windows Azure 為微軟用戶托管這些服務。 |
| GA (guest agent) | Windows Azure提供的運行在用戶虛擬機上的代理器,提供角色健康檢測,證書以及密鑰的安裝之類的服務。這個代理在根分區通過私有的與FA的鏈接去與外界通信。當Windows Azure提供GAs時,它們運行在一個應用程序的安全上下文中,因此它們被認為是Windows Azure安全模式下的程序代碼。 |
| guest OS | 一個經過測試的在虛擬機上運行的操作系統來為用戶提供Windows Azure的兼容性。每個Guest OS被設計成與特定的Windows Server版本兼容。 |
| 管理程序 | 該軟件組件用于隔離所有用戶的代碼,在Windows Azure上運行。它直接運行在硬件并劃分成一個虛擬機的可變數目的節點。連同Root OS,它強制對外部約束和分配資源的通信。 |
| load balancer | 一種硬件網絡設備,接受進入Windows Azure的互聯網流量,并將其轉發到一個適當的IP地址和端口。 在一般情況下那里有幾個不同的機器或虛擬機,可處理給定的請求,負載均衡器用在它們中平衡負載的方式分配連接。負載平衡器的路由表必須在虛擬機的創建,刪除,從一個移動到另一個硬件時更新。 |
| MA (monitoring agent) | 一個運行在多個地方的代理,包括了FC和一些根系統以及一些監視器和診斷程序日志信息,這個代理將它們寫進日志文件。它最終將這些信息的一個轉換過的后繼文件放進一個預先配置的Windows Azure的存儲賬戶里。 |
| MDS (monitoring data analysis service) | 一個自由存在的服務,它讀取多種監視器和診斷日志數據和總結/消化這些信息,并將信息寫進一個集成日志。 |
| 包過濾器 | 由節點的跟分區實現的一個網絡策略強制機制,在Windows Azure fabric中強制IP連接限制。 |
| PKCS12 | 一個被RSA實驗室發布的PKCS,它使用對應的公鑰定義一個用來存儲X.509密鑰的文件普通格式,它被一個基于密碼的鍵值所保護。 |
| REST (representational state transfer) | 一個運行在SOAP上的協議,被應用在許多Windows Azure fabric交互中以及Windows Azure用戶開發環境中。 |
| 角色 | 一個程序的進程,它由二個或者更多的相同的交錯分布在多節點中的角色實例組成,提供可升級性和容錯性。每一個主機服務有至少一個角色,大多數都有兩個或三個。每著服務器可能有很多角色?!敖巧边@個術語有時也被用于描述定義角色行為的代碼和配置的集合,并被用于實例化單結點角色實例。 |
| 角色實例 | 一個運行在虛擬機上的進程,執行了一個角色的部分托管服務的一個單一實例,對可擴展性和可用性而言,對于給定的一個角色幾個實例只運行一次,如果一個特殊的托管服務在一定時間內沒有運行,那么它的任何角色將不會再有任何角色實例。 術語“角色實例” 有時候也被用來表示托管單個角色實例的整個虛擬機。角色實例通常跟內部/NAT的Windows Azure IP地址是一一對應的。 |
| Root OS | 一個運行在電腦結點上的第一個虛擬機上的老練的操作系統,并且掌控組織代理。這個精簡版操作系統僅僅包括了那些必須的運行虛擬機的組件。這是為了提高運行效率并且減少攻擊接口。 |
| SMAPI (service management API) 服務管理API | 托管服務。為Windows Azure用戶開發者實現了程序化的可訪問的API。Windows Azure開發人員使用Windows Azure Portal提供的證書來進行SSL身份驗證,繼而通過REST協議調用SMAPI。 |
| 訂閱 | 被一個用戶設置的Windows Azure賬戶。可以用來統計托管服務和存儲賬戶的收費信息。 |
| VHD (virtual hard disk) | 存儲的映像文件格式,反映一臺計算機的硬盤系統,用戶軟件以及用單一格式反應單個計算機硬盤的鏡像的臨時狀態。 |
| VIP (virtual IP address) | 一個外部可見的IP地址,用戶端通過該通信服務托管在Windows Azure。虛擬地址由負載平衡器實現,負載平衡器分配通信給具體的端點(主要為角色)。 |
| VM (virtual machine) | 一個純軟件的在虛擬內存管理器(VMM,或者hypervisor)中運行的計算機模擬器。模擬一個物理計算機。 |
| Windows Azure管理程序 | (見管理程序 ) |
| Windows Azure Portal | 用戶管理通過Windows Azure門戶網站托管服務和存儲帳戶。 |
| Windows Azure驅動 | Windows Azure驅動提供了一個可持久的NTFS卷,提供給Windows Azure虛擬機實例去安裝和使用。 Windows Azure驅動實際上是一個數據塊,所有在驅動器上的寫操作都能在存儲賬戶的數據塊中持久化。如果安裝驅動的虛擬機失效,驅動仍然以數據塊形式存在,而且它可以在不丟失數據的情況下重新安裝在其它地方。在一個Windows Azure驅動中的字節被典型性的格式化,像一個在物理磁盤上的NTFS映像一樣。而且Windows Azure 虛擬機可以像光盤一樣的安裝,并且像訪問文件系統一樣訪問它們。Windows Azure代碼將來自于Windows Azure 驅動的數據在本地光盤上進行緩存,用來避免大量的讀操作帶來的性能損失。盡管存儲數據塊、表和隊列被設計成可以被多個獨立的虛擬機打開和更新,一個Windows Azure驅動只能夠被一個虛擬機進行讀寫裝載。但是驅動器的快照可以被任何數量的虛擬機以只讀方式裝載,這樣在分布的相同的進程中更新數據就很困難了。Windows Azure驅動主要是為了那些已經設計為支持NTFS卷的應用程序的兼容性以及簡化單-主角色的持久的狀態遷移而存在的。 |
本文翻譯自:http://www.microsoft.com/windowsazure/whitepapers/papers/default.aspx
總結
以上是生活随笔為你收集整理的Windows Azure安全概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html怎么从左到右设置颜色,使用CSS
- 下一篇: Archlinux 命令行模式-安装 B