天天看點

上雲安全話題:資料加密全攻略雲上資料安全的挑戰解決方案:資料加密1. 加密入門:可見的“預設加密”2. 加密進階:可見可控的全托管加密3. 加密高階:可見可控的半托管加密 - Bring Your Own Key中途小結:雲産品服務端加密技術架構4. 加密更高階:自己寫代碼調用KMS5. 加密最高階:自己管理HSM叢集和寫代碼6. 配合使用加密服務和KMS參考文檔

雲上資料安全的挑戰

資料是企業的生命,對資料提供必備的保護,就是保護企業的生命,是以資料安全是企業上雲的剛需。

在原來傳統的IT系統中,企業是将應用系統跟資料放在自己的IDC裡,認為在這樣的環境下其系統和硬體、資料安全是可控的。企業會花更多的成本去打造防火牆,保證邏輯上的城牆牢不可破。這就是傳統的雞蛋殼模型——在這種模型下,企業對防火牆内的資料保護是有限度和有選擇的。

而如今企業上雲,底層的基礎設施是共享的,企業不再實體上擁有對計算設施和存儲設施的全盤掌控,一切都隻能交給雲服務提供商。分布式多租戶的架構導緻雞蛋殼模型被打破。企業雖然通過在虛拟網絡中建構雲防火牆來防止一些外部威脅,但是雲服務的本質是多租戶、大規模分布式系統,企業托管在雲上的資料分布于各個雲産品的分布式系統中,無論是企業自身還是雲服務提供商,均不能建立一個租戶級别的“防火牆”把這些資料隔離起來。

是以企業要上雲,對資料安全的需求會非常迫切。歸根到底是環境的變化而導緻了需求的優先級不一樣。傳統IT設施的資料安全,着重解決内部威脅(insider threat)和外部威脅(outsider threat),雲上IT設施則還要解決資料托管在雲廠商帶來的安全與合規挑戰,這并不是傳統意義上的内外部威脅 - 從另一個角度看,可以被認為是雲服務提供商如何提供一個可信、可控制的計算和存儲托管環境。

解決方案:資料加密

那如何解決這個難題?

資料加密。

加密是一個古老的技術,有個叫潛伏的電視劇中,特務們發出的電報,在公共空間傳播,誰都可以去把電波截獲下來,但是他們有一個密碼本,拿不到密碼本,即便電波被截獲下來也是枉然。

阿裡雲的大資料計算平台、雲原生資料庫、雲伺服器等,都支援雲原生的資料加密能力,且阿裡雲給使用者提供了密鑰管理服務,通過密鑰管理和雲産品的資料加密功能,保證使用者在雲上使用這些産品時,資料都是可加密的。密鑰管理服務的設計,正是為了保護好使用者的“密碼本”,并且安全的授權雲服務或者企業自己的使用者使用它來達成資料的加密保護。

1. 加密入門:可見的“預設加密”

為了更友善的讓使用者對低安全級别的資料進行加密保護,阿裡雲KMS提供了服務密鑰,友善使用者以最低成本實作可見的資料加密。

服務密鑰

由雲服務(雲産品)托管在KMS的,歸屬于使用者的密鑰,這類密鑰使用者可見,但是其生命周期由使用者授權的雲産品托管。雲産品使用服務密鑰對資料進行加解密的過程,KMS記錄在使用者的ActionTrail中,使用者可以對其使用進行審計。

打開“預設加密”

在已經支援的雲産品中,使用者可以選擇對應的加密功能,如果使用者不進一步指定加密密鑰,那麼雲産品就會為使用者建立一個服務密鑰(一個雲産品為一個使用者僅建立一個服務密鑰),并使用此服務密鑰對使用者資料進行加密保護。

舉個栗子:使用者建立ECS雲盤時,可以打開加密功能,随後并不指定具體的加密密鑰。此時ECS則會使用服務密鑰。

檢視服務密鑰

使用者可以在KMS控制台,或者通過CLI、SDK、OpenAPI Explorer等等等等方式去檢視服務密鑰。服務密鑰特征明顯:其别名為

acs/${雲産品代碼}

如下圖中的别名為

acs/oss

的服務密鑰,為OSS服務為使用者建立的預設加密密鑰。其生命周期由OSS服務為使用者托管(例如使用者不能禁用)

上雲安全話題:資料加密全攻略雲上資料安全的挑戰解決方案:資料加密1. 加密入門:可見的“預設加密”2. 加密進階:可見可控的全托管加密3. 加密高階:可見可控的半托管加密 - Bring Your Own Key中途小結:雲産品服務端加密技術架構4. 加密更高階:自己寫代碼調用KMS5. 加密最高階:自己管理HSM叢集和寫代碼6. 配合使用加密服務和KMS參考文檔

2. 加密進階:可見可控的全托管加密

使用服務密鑰,使用者實際上是通過犧牲一定的自主性,換取更低的加密成本。

如果需要有更大的可控能力,則需要在雲産品服務端加密時,選擇由使用者自己托管在KMS中的密鑰。由于雲産品并不是密鑰托管者,對密鑰的使用需要獲得使用者的顯式授權。RAM服務是雲産品和KMS之間的權限鑒别仲裁者,使用者通過RAM服務配置權限政策,允許或者拒絕雲産品使用特定的主密鑰,雲産品通路KMS時,KMS向RAM服務驗證雲産品是否具備使用特定主密鑰的權限。

使用者可以參考各個雲産品的相關文檔,擷取進一步資訊了解如何使用自選密鑰加密的功能。官網文檔連結:

服務端內建KMS加密的雲産品

3. 加密高階:可見可控的半托管加密 - Bring Your Own Key

更進階的安全能力來自于業界普遍認可的一項技術:BYOK。簡而言之,BYOK是指,通過安全的方式,将使用者線下生成的密鑰導入到雲上的KMS托管的加密機中,并且保證加密機不能導出此密鑰。而使用者可以随時删掉雲上的密鑰,保留下一次導入同一個密鑰的能力。

幾乎所有的加密機生産商都會提供導入密鑰,且設定密鑰不可被導出的能力,KMS的BYOK功能提供了使用者一項可信度非常高的保證,讓使用者幾乎可以100%控制住雲上的加密密鑰,用于服務端的原生資料加密。參考官網文檔連結:

導入密鑰材料

中途小結:雲産品服務端加密技術架構

不同産品基于業務形态和客戶需求,其加密的具體設計略有不同。通常,存儲加密中密鑰層次結構會至少分為兩層,并通過信封加密的機制實作對資料的加密。

第一層為KMS中的使用者主密鑰(CMK),第二層為資料密鑰(DK)。CMK對DK進行加解密操作和保護,DK對業務資料進行加解密操作和保護。在業務資料落盤存儲時,雲産品會将DK的密文(由KMS使用CMK加密)與業務資料的密文(由雲産品使用DK加密)一同寫入持久化存儲媒體中。信封加密中的“信封”是指在概念上DK的密文和業務資料的密文被打包在一個“信封”(Envelope)中。在讀取加密資料時,DK的密文也會一同被讀取,并先于業務資料進行解密。隻有在DK被解密後,密文的業務資料才能夠被正常解密讀取。

上雲安全話題:資料加密全攻略雲上資料安全的挑戰解決方案:資料加密1. 加密入門:可見的“預設加密”2. 加密進階:可見可控的全托管加密3. 加密高階:可見可控的半托管加密 - Bring Your Own Key中途小結:雲産品服務端加密技術架構4. 加密更高階:自己寫代碼調用KMS5. 加密最高階:自己管理HSM叢集和寫代碼6. 配合使用加密服務和KMS參考文檔

在信封加密機制中,CMK受KMS提供的密鑰管理基礎設施的保護。雲産品必須通過恰當的使用者授權,才可以使用對應的主密鑰來産生DK,用于業務資料的加密,也隻有通過使用者授權,才可以使用對應的主密鑰來解密DK的密文,用于業務資料的解密。DK的明文僅會在您使用的雲産品服務執行個體所在的主控端的記憶體中使用,不會以明文形式存儲在永久媒體上。

4. 加密更高階:自己寫代碼調用KMS

如果使用者有更敏感的資料需要保護,或者為了滿足GPDR或者其他法律法規要求,必須針對特定的資料實作主動加密保護,也可以直接調用KMS的API。KMS的API使用方式的常見實踐有以下兩種

當然使用者也可以設計更複雜的密鑰層次結構和密鑰分區方式,完成複雜系統的資料加密。

5. 加密最高階:自己管理HSM叢集和寫代碼

最有可控力的方式,是使用

阿裡雲加密服務

的加密機(也叫HSM)。使用加密服務的HSM,使用者可以有獨享的HSM執行個體。相對而言,雖然KMS也支援使用HSM來托管使用者的密鑰,但是KMS的HSM設施是由多租戶共享的。除此之外,加密服務的HSM是由使用者自主管理和控制,而KMS的HSM則是由KMS托管。

由于加密服務提供的是HSM執行個體,使用者需要考慮以下運維能力

  • HSM的可用區分布:可用性
  • HSM中密鑰持久化的存儲系統:可靠性
  • HSM初始化安全參數的持久化:可靠性和安全性
  • HSM叢集搭建提供負載均衡的能力:可擴充性

除此之外,由于HSM的特殊性,一些HSM廠商并不提供服務端LB的能力,需要配套的用戶端LB子產品。當然,可以實作LB之前,使用者需要将密鑰從一個HSM執行個體上,同步到另一個HSM執行個體上,否則即便是基于用戶端的LB也無法工作。

如果使用者需要一些進階功能,則需要自建一些額外的管理能力,例如網絡鑒權規則;資源管理,标簽;密鑰版本管理,自動輪轉等。這實際上就是要自建一套KMI了。當然,換來的是最高的雲上資料的安全和隐私。

6. 配合使用加密服務和KMS

如果有必要,使用者也可以配合使用加密服務和KMS:使用者可以在加密服務中自主管理HSM,并且管理密鑰的産生;通過安全導入密鑰到

KMS的托管密碼機

中,使用者可以獲得以下好處

  • 使得加密服務可以間接被用于雲産品的服務端加密。
  • 可以通過KMS的密鑰别名功能,實作自主加密業務的同時支援 人工輪轉加密密鑰

參考文檔

方式1:點一點按鈕就加密

服務端內建KMS加密概述

方式2:寫代碼加密

繼續閱讀