Storing sensitive data in Keen IO

158 views
Skip to first unread message

Ian Fisher

unread,
Feb 21, 2014, 3:47:18 PM2/21/14
to keen-i...@googlegroups.com
Hey all,

We're looking to store some sensitive information in our analytics (user names, file names, etc.) and at this point are thinking we will simply store encrypted values. Has anyone else gone down this route or have additional tips when it comes to storing sensitive data in Keen IO?

Thanks!

Daniel Kador

unread,
Feb 21, 2014, 5:18:47 PM2/21/14
to Ian Fisher, keen-i...@googlegroups.com
Hi Ian!

This is a great question.  I think it makes perfect sense to store the values as encrypted strings.  It should be relatively simple to run your data through an encryption process (make sure it's with a reversible encryption process like AES-256-CBC) and store a base64 string version of that in Keen.  That data won't be readable without the private key used for the encryption.

One trick will be that our aggregations won't work very well anymore, but I'm assuming the properties you wish to encrypt would be used more when looking at the raw data and not during aggregations?

Thanks,
Dan

Ian Fisher

unread,
Feb 21, 2014, 7:13:02 PM2/21/14
to keen-i...@googlegroups.com, Ian Fisher
Thanks Dan, it's good to get some confirmation that we're on the right track :) We are going to be using user id and file id for aggregation, we just need the names for display purposes on some dashboards we are going to build. I'll update here if we run into any weird issues, but I think it will be pretty straightforward.

Thanks again!

Kyle Wild

unread,
Feb 24, 2014, 3:22:50 AM2/24/14
to Ian Fisher, keen-i...@googlegroups.com, Ian Fisher
  

Kyle Wild
CEO // Keen IO

Typed on a telephone
217.621.2298

Kyle Wild

unread,
Feb 24, 2014, 3:24:51 AM2/24/14
to Ian Fisher, keen-i...@googlegroups.com, Ian Fisher
(Oops pocket emailed, my bad!)

Kyle Wild
CEO // Keen IO

Typed on a telephone
217.621.2298


Lukas Weber

unread,
Jul 30, 2014, 2:48:04 PM7/30/14
to keen-i...@googlegroups.com, i...@taptera.com
In the case where I want to use some of the sensitive data to filter by, how could that be accomplished?
Let's assume I want to send along some user-related data like an internal classification of that customer or other things that are not meant to be accessible to the user himself. We would want to have this data consistently available (and not only for backend logged events for instance) so that we can filter by these criteria (e.g. only analyse customers of internal class A). I don't see how this could be achieved as I guess it would have to be exposed to the javascript in the frontend.

Are there any clever ways to address this?

many thanks
Lukas

Josh Dzielak

unread,
Jul 30, 2014, 6:25:57 PM7/30/14
to keen-i...@googlegroups.com, i...@taptera.com
Hi Lukas - for that use case you'll likely need to proxy queries through a server. The server would contain the sensitive property names and formulate queries using those. You'd also keep the API key there and not on the client.

You could also set up a separate server-side environment for proxying using a project like keen-cache.

Alternatively you could use encoded property names and values that didn't indicate what their meaning was back to the user.

Lukas Weber

unread,
Aug 4, 2014, 11:45:53 AM8/4/14
to keen-i...@googlegroups.com, i...@taptera.com
Hi Josh, many thanks for your very helpful reply.
Reply all
Reply to author
Forward
0 new messages