We're developing an application for a reselling customer.
He has requested the database to be fully encrypted so no other applications can access the data.
Is there a way to encrypt an entire database in MySQL?
But encrypting a database is almost certainly a very bad idea. It adds complexity to an already complex system, it can lead to your losing all access to your own data, and it really doesn't accomplish much.
If your application can get to the data, so can anyone who gets your application's user credentials.
I think you might be more interested in locking down the database with user credentials stored in your application. You're not going to keep anything away from the DBA's, but no other application will be able to access the data.
That and make sure that no one but MySQL and your superuser have access to the database store on the filesystem.
You'd want to lock down the filesystem anyway -- the last thing anyone needs is for someone to be tinkering with the database store while MySQL is trying to use it.
We are developing an application that is sold by our client.
The customers of our client are the organisations that will be using the application. And we want to prevent those customers from tinkering with the data outside the application. Or using the data with some sort of reporting tool without our knowledge (we'd like the hours to make those reports ourselves!!)
Honestly, unless you forbid them the ability to manage their own MySQL installations, this is probably impossible.
You can protect the user credentials your application uses to access the data. But if the client has root access to the server, there is nothing stopping him from creating another user which can also access the data.
From an ethical standpoint, locking a user out of his own data is questionable at best.
Studying the docus on MySQL and searching the net, i'v come to the conclusion that you're probably right about the fact that if a client has root access to his server, he can access his data. Although there are databases (i.e. Advantage Database Server) that do have the possibility to encrypt the database and therefore only make the data readable if provided with a decrypt key (password).
The ethical standpoint you take i dont agree with. What we are trying to prevent is giving a client access to the application data outside of the application (and the businessrules it enforces) and outside of our knowledge. Giving the degree of IT-education from the client that will be using this software they would do more harm then good. our experiences shows that users like this don't easily confess they have been tampering with the data, and blame the application for any inconsistencies that arise.
That's not what you said. You said that you were doing it to make sure you would get the hours to create the reports.
Locking a client out of data he owns is ethically questionable in general. It's his data -- if he wants to trash it, he's legally allowed to.
Locking a client out of his own data to protect him from his own ignorance is one thing. However, locking a client out of his own data to protect your business model is completely another thing. And that was your original reason for doing it, and the one which I must weigh more heavily.
You're right -- closed databases are nothing new. However, the reaction of so many entities around the world to those closed databases is. Just look at government reactions to closed data models in Munich, Peru, New Zealand, Australia, Scotland, China, Japan, and South Korea over the last 5 years.
Ok, i'm guilty of having multiple reasons for wanting a closed database ... some of them for the protection of the client, some of them for the benefit of ourselves.
I'm not very up to speed about all the gouverment reactions you're refering to. From our side its just a mostly very pratical reason for closing it.
By the way if the client would ask us to make it possible to export the data on a regular basis to some known format (XLS, CSV, XLM) we wouldnt hesitate to do so.
Let's say that I need a product that provides the functionality that yours does, and I am looking at your product and a couple of your competitors'.
I need it to run on my own machines. If I have a choice between your product, where you want to lock me out of my own data, or another product which would allow me to gain access to my data, your company just missed a sale. My server, my data, my rules. I may never directly access the data and always use your reports. But I'll have those passwords available in the case that I need them, thank you.
If your product runs on your servers and you sell access to my data to me as a service, it would be different. It would be unreasonable of me to expect to access my data in any way other than the interfaces you provide. You would likely be selling your service to other clients, too, and you can't allow any client to jeopardize your operation, which could jeopardize all clients' operations.
You're right about the possible loss of sale ... if there were any competitors, but at this moment there arent any. And it is not expected for at least a year.
Besides, like i said the degree of IT-knowledge with the potential users-organisations is very low. 99% of them doesnt know or care what a closed database is.
Anyway, it is not really my own choice but the choice of our client (the one selling the product). With that I must admit to you that you have made some strong points.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.