I've seen interest in HDFS-like "encryption zones" in Kafka. This has the advantage of magically encrypting data at rest regardless of which client is used as a producer. Adding it on the client side limits the feature to the java client.
Gwen On Fri, Jul 31, 2015 at 1:20 PM, eugene miretsky <eugene.miret...@gmail.com> wrote: > I think that Hadoop and Cassandra do [1] (Transparent Encryption) > > We're doing [2] (on a side note, for [2] you still need authentication on > the producer side - you don't want an unauthorized user writing garbage). > Right now we have the 'user' doing the encryption and submitting raw bytes > to the producer. I was suggesting implementing an encryptor in the > producer itself - I think it's cleaner and can be reused by other users > (instead of having to do their own encryption) > > Cheers, > Eugene > > On Fri, Jul 31, 2015 at 4:04 PM, Jiangjie Qin <j...@linkedin.com.invalid> > wrote: > >> I think the goal here is to make the actual message stored on broker to be >> encrypted, because after we have SSL, the transmission would be encrypted. >> >> In general there might be tow approaches: >> 1. Broker do the encryption/decryption >> 2. Client do the encryption/decryption >> >> From performance point of view, I would prefer [2]. It is just in that >> case, maybe user does not necessarily need to use SSL anymore because the >> data would be encrypted anyway. >> >> If we let client do the encryption, there are also two ways to do so - >> either we let producer take an encryptor or users can do >> serialization/encryption outside the producer and send raw bytes. The only >> difference between the two might be flexibility. For example, if someone >> wants to know the actual bytes of a message that got sent over the wire, >> doing it outside the producer would probably more preferable. >> >> Jiangjie (Becket) Qin >> >> On Thu, Jul 30, 2015 at 12:16 PM, eugene miretsky < >> eugene.miret...@gmail.com >> > wrote: >> >> > Hi, >> > >> > Based on the security wiki page >> > <https://cwiki.apache.org/confluence/display/KAFKA/Security> encryption >> of >> > data at rest is out of scope for the time being. However, we are >> > implementing encryption in Kafka and would like to see if there is >> > interest in submitting a patch got it. >> > >> > I suppose that one way to implement encryption would be to add an >> > 'encrypted key' field to the Message/MessageSet structures in the >> > wire protocole - however, this is a very big and fundamental change. >> > >> > A simpler way to add encryption support would be: >> > 1) Custom Serializer, but it wouldn't be compatible with other custom >> > serializers (Avro, etc. ) >> > 2) Add a step in KafkaProducer after serialization to encrypt the data >> > before it's being submitted to the accumulator (encryption is done in the >> > submitting thread, not in the producer io thread) >> > >> > Is there interest in adding #2 to Kafka? >> > >> > Cheers, >> > Eugene >> > >>