3

We have one main production MySQL database with a read replica. This database has some sensitive data from clients that we need to protect.

My goal is to provide access to an external Business Intelligence reporting tool. As with all tools like this, they all say "we have great security, and we never store anything that we don't need, etc." I am still paranoid.

So what I am considering creating a bunch of views on the replica database (read-only) which leave out sensitive data and provide the minimum information that they need. After that, I will provision a new user on the database that only has access to those views. This way they only see the data that I want to give them and it's already read-only so nothing can be modified.

My question is, is this a good way to go about this considering my database has sensitive client information? In general, is this a relatively secure approach?

3

Your approach seems to be sound. However, I am unsure of what real business intelligence can be gleaned if the reporting is made off of incomplete data. Create a dedicated user with limited privileges (IE No writing/dropping allowed). There is always a tradeoff of information security and information quality.

Perhaps it would be best to understand what you're hoping to accomplish with this reporting and identify what sensitive info can be removed.

  • 1
    Thanks. I want to remove access to personal client information and only give the BI tool access to anonymous data which can not be tied back to a specific person. – Alex Markov Feb 10 '17 at 6:38
  • Approach sounds sound (!) – joanolo Feb 10 '17 at 8:02
1

Another technique is to GRANT no access to the sensitive columns. (A GRANT can apply to "all" (*.*), one database (db.*), one table (db.tbl), or one column.) It might take a lot of GRANT statements to set it all up, but you might feel more secure.

And, of course, limit access to the physical server.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.