How do startups which hold private user data deal with restricting access to that data to employees?
I'm not talking about data that's sensitive enough that it falls under a specific jurisdiction (credit cards, SSNs, etc.) - more data like private messages between friends, photos, and so on, which users consider to be private.
In the very early days of a startup, you don't really worry about this because you don't have the time, and you trust your cofounders enough to not snoop around on messages/documents/etc. that the few users you have consider to be private.
But as the employee count hits the double digits and keeps going up, you probably shouldn't trust everyone to that level? Yet in most early stage startups, all employees have command line access to production application, admin panels, databases, etc.
How do you solve this problem? Do you add restrictions to which trusted employees can access production services? Do you encrypt the user data you store?
If there are any insights about how larger companies have handled this, I'd love to hear it. Surely at Instagram, OkCupid, Facebook, etc. the average employee can't read the private messages of their ex-partner?
This comes down partly to policy and partly to tech. The policy, disclosed early and often, is that misuse of customer data is an instant firing offense. Google, Facebook, etc have indeed terminated people over this, often literally count-the-minutes after the fact of the misuse became known to other people at the company.
Tech-wise, it's spiritually similar to other security measures. You lock down access on a need-to-have basis, you log the heck out of extraordinary requests for access, and you audit those requests.
e.g. Many companies will eventually develop a Use The Software As User X feature. At some, this requires you to a) be logged in as a privileged employee, then b) click to activate the feature, c) write an explanation why you need access to User #12345's account, and d) checkbox that you have receive #12345's consent for this. (I know some companies that skip D, largely in B2C.) When you hit submit, that logs it to the DB and fires an email to the audits@ email address, which goes out to 5 different people, or pipes "Patrick just logged in as #12345 because [chasing down display bug -- customer reports unescaped HTML in the message window, can't reproduce on staging or with own account]" into your team's HipChat/etc channel.