SQL Server 2016 Encryption – Clarification on Always Encrypted

always-encryptedencryptionsql serversql-server-2016

We are planning out a move from SQL Server 2008 to SQL Server 2016. One of the key requirements for us is to have encryption at rest at a minimum. We have been considering SQL Server Enterprise as it includes TDE though now with SQL Server 2016 Standard including the "Always Encrypted" feature set we are looking into this as an alternative to Enterprise (saves us some money). Though we are having a very difficult time locating a source which clarifies what exactly AE encompasses in SQL Server. Thus far in our research it appears that AE is specific to column level encryption from the client to the DB utilizing certs though we've found nothing that mentions AE can be used in a similar fashion to TDE and encrypt the entire DB.

Can someone please shed some light on this for us?

Best Answer

AE is intended to protect sensitive data end-to-end. That's why keys are held by the client, not server. In SQL Server 2016 granularity is at the column level.

If you want to AE the entire database, you'd have to do it one column at a time. That doesn't really make sense and doesn't fit the AE scenario unless all data in your database is sensitive. Theoretically possible but pretty rare in reality. You've also made your database extremely limited in query capabilities and perf is pretty much out the window.