2013年9月24日 星期二

Security for Hadoop - Data Encryption



工商服務時間:想要更深入了解HadoopSecurity 議題的人,可參加HadoopTaiwan 2013 ,在"Hadoop Security: Now and future" 這個Session會有TCloud的大大給更詳細的解說唷~~


Security 在資料儲存與資料庫這個領域,主要探討防護措施有分三種層級:

1. Authentication (你是誰?這個資料是你的嗎?)

2. Authorization (你對這個資料有怎樣的權限?對這個資料你可以做怎樣的動作?)

3. Encryption (如果這個資料不是你的/你沒有權限,就算是Admin 我也不給看!)


但是對Hadoop 界來說, Security 這個議題似乎相對冷門,為什麼呢?可能是:
  • 運算都來不及了還加密勒~
  • 系統維運已經夠複雜了,再加入Security 不是更麻煩!!
  • 反正資料那麼多~~那麼雜~~我也不怕你偷看,找的到再說(誤) 

其實也不盡然,只是相對起來急迫性較低,所以直到Hadoop 1.0.0 才正式加入Kerberos 的安全機制(解決了 1 的問題,2 目前還是靠Linux 的檔案管理機制 )。

在InfoQ的訪問中可以看到社群對於Hadoop Security 的看法:

InfoQ: What type of security features does this release support, in terms of authentication, access control and data encryption?
Arun: 1.0.0 supports strong, end-to-end Kerberos based authentication for both HDFS (filesystem for storage) and MapReduce (data processing). Kerberos is by far the most popular network authentication protocol used in the enterprise.
It also provides strong access control at all levels for applications and data. For example, one can ensure that only a certain individual (or set of users) can view running applications, see application logs etc.

而目前剩下還沒解決的問題就是Encryption的問題,雖然社群已經有人開始在著手設計與開發 (主要負責人是Andrew Purtell ),但是由於比較沒有急迫性,而且社群對於這個Feature興趣似乎比較不大,所以目前還沒有明確的Roadmap 顯示何時會Release ,有興趣的朋友可以追蹤以下幾個JIRA issue:

Hadoop-9331
Hadoop-9332
Hadoop-9333
Mapreduce-5025
Hbase-7544

另外Intel 也有提出了project-rhino 專案,也是想要解決Security 的問題

雖然Hadoop官方版本沒有提供,但是我想要保護我的資料該怎麼辦?我該怎麼實現Encryption 的功能!?
最快的方法就是Hack Compression 的機制

為什麼呢?仔細思考一下,Encryption跟 Compression 其實是非常類似的,都是過某種演算法把資料編碼,所以理論上只要在 Hadoop 所提供的這個參數io.compression.codecs 增加一個我們自己的 compression codec (其實就是加密codec),就應該可以達到Encryption的效過,而在網路上也真的有人做了一個這樣的plugin,也到Hadoop 提案 HADOOP-7857 (不過同樣的乏人問津~XD)


有興趣的可以到GitHub下載這個專案來玩玩看 HadoopCryptoCompressor ,不過要注意的是他的教學文件有些錯誤,更正的設定如下:

<property>  
 <name>io.compression.codecs</name>   
 <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec, 
 org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.CyptoCodec</value>
</property>


只要安裝這個jar 檔和在/etc/hadoop/conf/core-site.xml加入以上的設定,你就可以使用Encryption啦~

什麼講太少了?在這邊先賣個關子....

再度工商服務時間:想要更深入了解HadoopSecurity 議題的人,可參加HadoopTaiwan 2013 ,在"Hadoop Security: Now and future" 這個Session會有TCloud的大大給更詳細的解說唷~~XDDDD

此外 TCloud 在現場也有擺位唷~


(如果沒報到名的,那只好等會不會有投影片放出來摟~~:P)


張貼留言