While I think that the one click database encryption that Microsoft has built into SQL Server 2008 is a good idea, but I’m not sure how useful it actually is. It’s touted as giving you data encryption of the entire database without any code change.
What this actually means is that if someone stops the SQL Server and copies the data files to another server and attaches the files to that SQL Server the files won’t be of any use. This however isn’t the common way that data is stolen from a SQL Server. A much more common method is someone logs into the database using a perfectly legit account and exports the table or tables which contain the useful information to Excel, Access, csv, etc. This method of database encryption does nothing to protect against this as if you query the table directly you are displayed the data in clear text.
All this database encryption does (as it appears to me) is that it protects the data at rest (ie. when the SQL Server service is stopped) and does nothing else to protect the data. If all you are looking for is a compliance check off saying that you data is encrypted for SOX, HIPAA, the California Online Privacy Protection Act of 2003, etc then this will probably do the trick. If you want actual data encryption where the data is not viewable when you query the table unless you know the key to unlock the data this isn’t it.
If you do want that quick and easy encryption for a compliance check off be sure to check your data storage requirements and IO requirements. Encrypted data is typically larger than unencrypted data and you may need to increase your allocated storage or IO requirements in order to have the encryption completed. Also remember that the higher level of encryption you use the more CPU time is required to decrypt the data.
Feel free to share your opinions below. I’m interested to here what others have to say on the topic.