Hi Preetam,

A group of us at Trend Micro have been working on adding some security
features to HBase.  We've been focused on authentication and access control
though, as opposed to data encryption.

HBase sits on top of HDFS and relies on it as the underlying filesystem.
HBase implements it's own file format (HFile) for its data files, but just
writes them out to a directory tree in HDFS.

So one approach would be to encrypt the underlying data files at the HDFS
layer.  I believe you could do this by implementing a CompressionCodec that
does the encryption, and found this mailing list thread discussing the same
topic:
http://www.mail-archive.com/common-u...@hadoop.apache.org/msg06222.html

Alternately, if you wanted to encrypt individual values as they're stored,
you may be able to use the coprocessor framework that we've been building.
This would essentially allow you to have a listener on the server side and
encrypt values for new writes, and decrypt values for reads.  The problem
with this is that you can't easily encrypt the row and column keys used by
HBase while still preserving the data ordering characteristics that are
central to the bigtable architecture.  Since row keys and column qualifiers
often represent "data" in HBase usage, you'd potentially be leaking
sensitive information.

As Ryan mentions, a big thing to consider is key management.  The RS needs
to be able to decrypt the data, without random users being able to.

For more info on the coprocessor framework, see:
https://issues.apache.org/jira/browse/HBASE-2000
https://issues.apache.org/jira/browse/HBASE-2001

For more info on the current security work, see:
https://issues.apache.org/jira/browse/HBASE-1697
https://issues.apache.org/jira/browse/HBASE-3025
http://hbaseblog.com/2010/10/11/secure-hbase-access-controls/

Hope this helps.  I'm interested to hear more about what you're planning.


Gary


On Tue, Nov 16, 2010 at 3:16 PM, Preetam Joshi <joshipree...@ymail.com>wrote:

> Hi,
>
> I am a graduate student and I am working on implementing a few security
> features for HBase, one of which is described as follows:
>
> => Before the data is stored into the actual physical disk, I would want to
> encrypt the data before storing it. I would like to do it on the server
> side.
>
> Could anyone tell me which particular module I should look at to achieve
> this?
>
> Thanks in advance.
>
> Regards,
> Preetam
>
>
>
>

Reply via email to