[infinispan-dev] Infinispan security?

Joni Hahkala joni.hahkala at cern.ch
Fri Sep 2 06:01:44 EDT 2011


Hi,

Just a couple of ideas fron the top of my head. Sorry for the long mail, 
your mail covers a lot of things. :)

the easiest off the shelf solution of course is SSL everything. But this 
would probably have some significant performance hit, even with mostly 
keep-alive connections. Also there would be the overhead of getting a 
certificate from some certificate authority whenever a new service 
instance (VM) is created.

In this system the parts you mention would be covered by:
1) wire encrytion - SSL does this
2) inter-node comm authn - could use the host cert to authenticate to 
other services. Somebody would need to add the nodes to the ACL and 
distribute it or distribute the addition message.
3) remote client authn - the remote clients are usually services too, 
right? then they would probably also have a host certificate available 
and could use that for authentication. Somebody would need to add the 
clients to the ACLs.
4) in-VM authentication - would this be really necessary? Separating the 
services into different user accounts and then using authentication when 
they talk to eachother would add security, and in principle is a good 
thing, but careful cost-benefit analysis should be done. Probably 
something to keep in mind, plan and implement later?
5) ACLs for data - entire named cache level, yes definitely should do. 
Individual entries or key patterns: this is a bit tricky, the 
performance hit and need should be evaluated. Could be easier to just 
deploy another pool of infinispan servers than partition the keys by 
ACLs. The fine grained access to the data is also often pretty 
application specific, for example in facebook the privacy controls etc 
seem to change every other month. So, the fine grained access could be 
better left to the applications? Do you have some use case in mind?

I would also add:
6) authorization in general - ACLs probably, but who manages these? For 
example automatic provisioning of additional servers when load increases 
could be a bit complicated. (obtain certificate, put into the server, 
add to the ACLs - by gossip?)


Another, probably more performant, flexible and interesting way would be 
to just use encryption keys and just send encrypted messages allowing 
more asynchronous kind of communication, more flexible node provisioning 
etc.

In this system the points would be as follows:
1) wire encrytion - each message is encrypted.
2) inter-node comm authn - each host would have a key for encryption and 
authentication to other services (created during creation of the 
service). Somebody would need to add the keys to the ACL and distribute 
it or distribute the addition message.
3) remote client authn - remote clients would have keys too (generated 
like ssh keys at server creation). Somebody would need to add the client 
keys to the ACLs.
4) in-VM authentication - same as above.
5) ACLs for data - same as above
6) authorization - same as above, but no need to obtain certificates, 
just generate a key and add it to the ACLs.


Then there is the question whether the data stored in the infinispan 
even needs to be cleartext. AFAIK it's just a data blob and thus could 
be encrypted data. This way only the clients with proper encryption keys 
could see the actual data and in case of break-in in the infinispan the 
loss would be less.

Cheers,
Joni

On 31/08/11 10:57, Manik Surtani wrote:
> Hi Joni
>
> There are no plans as such at this stage, however we realise this is an area we'd like to address.  Specifically, what is interesting to me is:
>
> * Encrypting wire protocols: both inter-node communication (JGroups) as well as client/server comms (mainly Hot Rod)
> * Authentication for inter-node comms (JGroups)
> * Authentication for remote client connections (mainly Hot Rod again)
> * Authentication for in-VM connections (via embedded API)
> * ACLs for actual data.  Perhaps read/write/update/delete permissions.  Haven't thought too hard about granularity here (individual entries, entire named caches, or even a pattern of keys).
>
> So fairly hazy at this stage, perhaps with your background in grid security you could propose something?  :-)
>
> Cheers
> Manik
>
> PS: cc'ing Darran Lofthouse who may have an opinion here to share as well.  :)
>
>
> On 22 Aug 2011, at 15:33, Joni Hahkala wrote:
>
>> Hi,
>>
>> I was reading and watching presentations of Infinispan and it seems that
>> currently it is intended for use in secure environment, like data center
>> behind a firewall with other datacenters connected through secure links,
>> if I understood correctly. But deploying it in more open environment,
>> e.g. public cloud, could pose security risks. Manik said in a
>> presentation that the underlying Jgroups uses certificates (or can be
>> configured to use), and I would assume SSL. So, there is at least some
>> security in the Infinispan joins, leaves etc. Manik also told that there
>> has been some talk/plans already about the security in general.
>>
>> I would be interested in hearing about these plans for security and to
>> see if there is possibilities for cooperation. I'm currently searching
>> for a PhD subject, I have background in grid security, and this work
>> sounds like it could be useful and interesting.
>>
>> Cheers,
>> Joni
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> --
> Manik Surtani
> manik at jboss.org
> twitter.com/maniksurtani
>
> Lead, Infinispan
> http://www.infinispan.org
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev



More information about the infinispan-dev mailing list