English 中文(简体)
How should I secure a SOA with inter-service communication between data centers?
原标题:

For my pet project I ve decided on a services based architecture (yeah the buzzword SOA) because I can scale each service independent of others, distribute them geographically where they will be used more than other services, etc.

The trick is that some of the services need to communicate privately with each other (and publicly with end-users). These services will be located in distinct data centers without any built-in private pipe between them (I think SoftLayer has such).

I care little if the communication is a little slow due to encryption. I mostly care about MITM attacks and eavesdropping. That is, I want the services to be confident that they are talking with a friend service and not some impostor.

The options for such inter-service communication as I see them are:

  • HTTP with TLS
  • TCP/IP (some custom protocol) with TLS
  • Spread Toolkit (not sure about encryption here)
  • HTTP or custom TCP/IP over SSH tunnel
  • create a VPN between the data centers
  • client certificates? mutual verification of certificates?

Clearly I ve a lot of mumbo jumbo in my head. Help!

What do you think? Have you done this previously? What are your experiences? What "works well"?

If you choose VPN, which VPN system do you recommend? OpenVPN? How are temporary network partitions handled with such VPN systems? Do they auto-heal/reconnect?

I suppose the VPN solution will encrypt all connections but I just want some connections to be encrypted. Perhaps a SSH tunnel is in order then.

Thanks for your advice.

最佳回答

Unless you have a lot more traffic going between your data centers other than just your services talking to each-other then really no need to setup and maintain secure transport infrastructures like VPNs or SSH tunnels which may cost more and actually cause more headache.

I d recommend using SSL sockets so that you don t have to worry about the lower layer secure tunnels being active, if you communicate with your other data center through your service, it will be through the secure connection. It may be worth-while to also add a VPN between the data-centers using something like IPsec tunnel mode between the internet gateways (routers) at each data center to add extra security as well as more control over your traffic and addressing.

问题回答

暂无回答




相关问题
Extend Contacts application on Android to provide encryption

I want to encrypt individual contacts stored by the Contacts application on Android based on user s preference. So, I am thinking I ll have to hook/extend the Contacts application before the it stores ...

Make md5 strong

Im making a website that will intergrate with game that only support md5 hashing metod (atm). Which ofc is not especially safe anymore. But how could i make it stronger? Should I just generate long ...

How to Pack/Encrypt/Unpack/Decrypt a bunch of files in Java?

I m essentially trying to do the following on a Java/JSP-driven web site: User supplies a password Password is used to build a strongly-encrypted archive file (zip, or anything else) containing a ...

Thread & Queue vs Serial performance

I though it ll be interesting to look at threads and queues, so I ve written 2 scripts, one will break a file up and encrypt each chunk in a thread, the other will do it serially. I m still very new ...

Convert PHP encryption code to C#

I m trying to convert this piece of code from PHP to C#. It s part of a Captive Portal. Could somebody explain what it does? $hexchal = pack ("H32", $challenge); if ($uamsecret) { $newchal = ...

Encryption: how to have 1 iv despite multiple fields

I ve been stuck trying to arrive at a best solution for this for a while. I know that an initialization vector has to be unique for each item being encrypted. So if I m encrypting an address and I ...

热门标签