I was spending some time recently looking over Transparent Data Encryption (TDE). TDE is a fairly straightforward concept: the data on disk is encrypted (data files, log files, backup files), but to the end user no special decryption method is necessary to query the data. If you have permissions to read the data (say, as a member of the db_datareader database role), you can do so easily through whatever means you want. If the actual physical data files fall into the “wrong” hands, they cannot be unencrypted without the associated and necessary certificates.
As great as this may sound, there are two things that immediately come to my mind that makes me hesitant to implement TDE on a shared instance of SQL Server.
TDE encrypts your tempdb
You have to dig deep into your books online in order to find this nugget of information:
“The tempdb system database will be encrypted if any other database on the instance of SQL Server is encrypted by using TDE. This might have a performance effect for unencrypted databases on the same instance of SQL Server. For more information about the tempdb system database, see tempdb Database.”
Yeah, that’s right, if you enable TDE for just one, teeny, tiny database, then your one and only tempdb database will be encrypted as a result. And yes, this could be a performance issue, especially for a shared instance that has some moderate level of tempdb activity. By the way, wouldn’t it be nice if SQL Server came with a tempdb for each database? Up until now I may have said “no”, but with TDE my opinion changes.
TDE does not encrypt FILESTREAM data
Dig a little deeper in the BOL entry and you will also find this:
“FILESTREAM data is not encrypted even when TDE is enabled.”
Just to be clear, you could have a situation where you have a database that uses FILESTREAM to store data, you decide to enable TDE in order to protect your sensitive data inside that database, you degrade tempdb performance after enabling TDE, and your data is still not protected. In other words, you aren’t protecting what you think you are protecting but in order to make up for it you are killing performance for everyone else.
Bottom line: if you plan on using TDE, make sure you understand what you are doing. And practice your restores often, it takes a while to get used to carrying those certificates with you everywhere.




