The other issue with this model is that you're Kafka servers are available on the internet ... so anyone else can push data into them. At least, if you are running in a cross-cloud/cross-datacenter environment. We're struggling with the same design issues right now.
What we've hoped for is that in 0.8.x, Kafka would allow our producers to connect to ANY Kafka server and submit data, and have that data dynamically routed to the right servers. This way we could put the Kafka servers behind an ELB, throw up Stunnel clients on our producers and Stunnel servers on the Kafka machines. This would offload the SSL encryption and authentication to Stunnel, and allow Kafka to concentrate on what its good at.
For now though, that doesn't seem possible. It looks like we may end up going down the Flume route, because its easier to encrypt and authenticate the data streams through Flume. :/
On Apr 23, 2013, at 11:02 AM, Jason Rosenberg <[EMAIL PROTECTED]> wrote:
> I think encryption at the message level is a workable solution, as long as
> you don't care about exposing the meta data that goes with it (e.g. topic
> names, kafka broker/zk server locations, etc.).
> On Tue, Apr 23, 2013 at 10:02 AM, Fergal Somers
> <[EMAIL PROTECTED]>wrote:
>> We are planning to use Kafka, but like others on this list we have a need
>> to be able to secure communication. The approaches people have suggested on
>> this list are:
>> - Encrypt the messages at the producer (e.g
>> - Add SSL to Kafka protocol -
>> Adding SSL support to Kafka, probably means adding SSLEngine support the
>> the nio socket handling (
>> I don't think there are any immediate plans to provide this, but it's
>> potentially something that Kafka would support in the future?
>> In theory this is something we could look at, but we would need to go
>> further. We also need to separate producers from consumers. The aim would
>> be to ensure that a Kafka producer couldn't also act as a consumer.
>> Essentially producers can write to Kafka, but not read.
>> From looking at the Kafka source, achieving producer/consumer separation
>> looks to me like it would be quite a change to the Kafka server (0.7). So
>> are there any plans in the (near) future in this area (producer / consumer
>> separation) ?
>> Message encryption (at the application layer) would allow us to achieve
>> both aims of securing communication and separating consumers from
>> producers. Producers get the public cert (so they can encrypt messages as
>> they place them on the bus). Only consumers get the private cert - so only
>> they can decrypt messages consumed. This seems like something we can do
>> ourselves - I just wanted to sanity check the approach with this group.