2015年6月8日 星期一

如何使用加密磁區當作 EC2 的根磁區

最近剛好在處理公司的機器上 AWS 的事情,當然其中一間就會是對資料的安全有疑慮,查呀查的發現 AWS 有佛心的提供了 KMS (Key Management Service) 這個服務,裡頭是宣稱你的資料很安全,他們不會偷偷幫你解密之類的,不過有沒有其他人會就不知道了 XD

總之,如果你拿來當資料區使用是完全不會有任何問題的,你可以很方便的再加入磁碟或是創建磁碟的時候勾選加密,在擺到你機器上去,他的效能也完全不會有任何影響,但是文件裡面(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)寫到了"
Encrypted boot volumes are not supported at this time."

什麼!!這是晴天霹靂啊,居然都提供了加密的功能,卻又不給根磁區加密,這這這.....不合邏輯啊。

幸好後來有發現,你如果真得想要從根磁區就加密,也不是沒有方法可以做,就是麻煩了一點。我把要做的步驟列在下面:

  1. 先準備好一檯可以用加密磁區的機器,要在 m3.medium 以上
  2. 起一個自己想要用的 AMI 
  3. 在選擇磁區的時候加掛一個加密的磁區
  4. 開心的啟動吧
  5. 假設根磁區掛在 /dev/sda ; 加密磁區掛在 /dev/sdb
  6. 這時候就開始把根磁區複製過去加密磁區,工具看你要用 dd 還是 partclone 都可以,dd比較慢,可是系統內建,partclone會幫忙壓縮還有略過沒資料的地方,應該會比較快。
  7. 結束之後關機,從 AWS 控制台把根磁區跟加密詞曲都卸掉
  8. 這步驟就是重點了,把加密磁區掛載回機器上,路徑記得寫 /dev/xvda
  9. 掛載上去之後就可以開機了,噹噹~~整個系統都加密了
看起來步驟真的是超級麻煩的,不過如果真的有需求要這樣做,我是在想有幾種做法可以因應會需要 auto-scale 之類的需求,如果不靠 AMI 的話,因為現在 AWS 還不支援利用加密的 AMI 起來當作根磁曲,看來要做就都要硬幹。
  1. 起一檯機器當作母機,復製磁區的部分就由它執行。
  2. 有起機器的需求的時候就送訊息給母機,母雞就掛一個加密磁區起來,把自己的資料複製一份
  3. 母機呼叫 API 去起一檯新的子機
  4. 子機起來之後馬上關機,把本來的磁區幹掉,換上母雞做好的加密磁區
  5. 把子機叫起來,噹噹~~,又是一尾活龍
看起來目前要硬幹的話應該只能這樣做了,不過做法真的爆炸麻煩的,還是期待 AWS 什麼時候可以自己偷改我們資料,不是,是自己宣布可以利用加密磁區來當根磁碟。

沒有留言:

張貼留言