این ویژگی که در آخرین نسخه SQL Server 2016 پیاده سازی شده است، کمک می کند تا اطلاعات به صورت رمز شده در پایگاه داده قرار بگیرند. در نتیجه مثلا در سازمان ها بین کسانی که مالک داده هستند و کسانی که داده ها را مدیریت (dba ها) می کنند می توانیم تفاوت قائل شویم و مطمئن باشیم اطلاعات حساس مالی، شخضی، هویتی، تجاری و اسناد ... توسط افرادی که به پایگاه داده دسترسی دارند خوانده نخواهد شد.
در این روش شما مشخص می کنید که چه ستون هایی از چه جداولی لازم است رمزنگاری شوند. پس از انجام رمزنگاری، داده ها به صورت رمز شده در دیتابیس قرار خواهند گرفت و خواندن شان غیر ممکن خواهد بود. در این روش، داده ها به صورت رمز شده به اپلیکیشن فرستاده می شوند و این مسئولیت درایورِ ارتباطیِ کلاینت می باشد که داده ها را به محض دریافت رمزگشایی کرده و به اپلیکیشن تحویل دهد. در واقع تنها سیستمی که کلاینت در آن مستقر هست می تواند داده ها را باز کند و نه دیتابیس.
این روش رمزنگاری مستقل از لایه نرم افزار خواهد بود و نیازی به پیاده سازی روش های پیچیده و من درآوردی و ... در کد نخواهیم داشت.
این روش علی رغم مزیت هایش دارای محدودیت هایی هم می باشد که مهم ترین شان به نظر من موارد زیر می باشند:
1. در حال حاضر قابلیت Replication را بر روی ستون های رمز شده نخواهیم داشت.
2. در مورد Index گذاری، Join و عملگرهای مقایسه ای دارای محدودیت هایی هستیم.
در این روش دو نوع کلید به منظور انجام رمزنگاری ساخته خواهد شد، قطعا فهم مکانیزم کارکرد این کلید ها، مراقبت و نگهداری از آن ها برای حفظ امنیت داده ها ضروری است. در غیر این صورت هر کس با داشتن کلید ها می تواند داده ها را بخواند. این کلید ها باید بر روی هر سرور یا کامپیوتری که قرار هست نرم افزار بر روی آن ها قرار داده باشد، موجود باشد. نرم افزار با داشتن این کلید ها می تواند داده ها را رمز گشایی کند.
1. معرفی ویژگی Always Encrypted:
https://msdn.microsoft.com/en-us/library/mt163865.aspx
2. تشریح کلید ها و نکاتی جهت نگهداری آن ها:
https://msdn.microsoft.com/en-us/library/mt708953.aspx
3. مثالی عملی و ساده از کانفیگ دیتابیس، کلید ها و برنامه:
http://www.databasejournal.com/features/mssql/exploration-of-sql-server-2016-always-encrypted-part-1.html
4. توضیح محدودیت ها:
https://www.infoq.com/news/2015/06/SQL-Server-Always-Encrypted
http://www.sqlchamp.com/2016/07/limitations-always-encrypted/337