یادداشت حقوقی: کاربر حق ترجمه و بازنشر این اثر را برای پروژه تأیید کرده است.PAGE-385فصل ۱۱ — Encryption
Encryption Hierarchy و Symmetric Keys
Encryption داده را با Algorithm و Key به شکلی تبدیل میکند که بدون Key قابل استفاده نباشد. SQL Server چند لایه Key/Certificate دارد. Symmetric Key برای Encrypt/Decrypt از یک Key مشترک استفاده میکند و معمولاً سریعتر از Asymmetric است.
PAGE-386Asymmetric Key، Certificate و Master Key
Asymmetric Encryption از Public/Private Key Pair استفاده میکند و برای حفاظت از Keyهای دیگر مناسب است. Certificate یک Public Key بههمراه Metadata هویت است. Service Master Key در سطح Instance و Database Master Key در سطح Database ریشههای مهم زنجیره حفاظت هستند.
PAGE-387Service Master Key
ALTER SERVICE MASTER KEY REGENERATE;
BACKUP SERVICE MASTER KEY TO FILE = 'C:\Keys\service_master_key'
ENCRYPTION BY PASSWORD = 'Backup-Key-Password';
Regenerate کردن Service Master Key عملیات حساس است، چون Objectهای رمزگذاریشده زیر آن باید دوباره Protect شوند. Backup کلید باید خارج از Server و با کنترل دسترسی قوی نگهداری شود.
PAGE-388Database Master Key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Database-Master-Key-Password';
BACKUP MASTER KEY TO FILE = 'C:\Keys\Chapter11_DMK.key'
ENCRYPTION BY PASSWORD = 'Backup-File-Password';
DMK میتواند توسط SMK خودکار باز شود. Backup/Restore کلید برای Migration و Disaster Recovery حیاتی است.
PAGE-389Hierarchy
زنجیره نمونه از DPAPI/Windows تا Service Master Key، Database Master Key، Certificate/Asymmetric Key و در نهایت Symmetric/Data Encryption Key ادامه دارد. حفاظت لایهای باعث میشود Keyهای Data با Keyهای بالاتر Encrypt شوند.
Figure 11-1 — شکل/تصویر منبع، صفحه PDF 389PAGE-390Extensible Key Management
EKM امکان نگهداری Key در Provider خارجی/HSM را فراهم میکند. Provider ثبت و Credential/Key از ماژول خارجی وارد میشود. این مدل میتواند Separation of Duties و حفاظت Hardware-backed ایجاد کند، اما Deployment و Availability Provider باید طراحی شود.
PAGE-391Transparent Data Encryption — TDE
TDE Data File و Log را در سطح Page/IO Encrypt میکند؛ Application و Query نیاز به تغییر ندارند. Data Encryption Key داخل Database است و معمولاً با Certificate سطح master محافظت میشود. Backup Database TDE نیز Encrypt است و برای Restore به Certificate/Private Key نیاز دارد.
PAGE-392TDE از Data-at-Rest در فایل MDF/NDF/LDF و Backup محافظت میکند، اما داده پس از ورود به Buffer Pool Decrypt میشود و Query مجاز Plaintext میبیند. بنابراین TDE جای Object Permission، TLS یا Always Encrypted برای محافظت در برابر DBA/Server Admin نیست. Replication نیز ممکن است داده را در مسیر/Subscriber به شکل دیگری منتقل کند.
PAGE-393Database Encryption Key میتواند با Certificate یا در برخی پیکربندیها Asymmetric Key محافظت شود. سلسله Keyها باید قبل از Enable TDE ساخته و Backup شوند. بدون Certificate اصلی، Restore Backup روی Instance جدید ممکن نیست.
PAGE-394آمادهسازی Database نمونه
کتاب Database Chapter11Encrypted و Tableهای نمونه ایجاد میکند تا TDE و Cell-Level Encryption در ادامه روی داده واقعی نمایش داده شوند. فایلهای Data و Log طبق محیط باید مسیر صحیح داشته باشند.
PAGE-395دادههای نمونه شامل نامها و رکوردهای مرتبط است. هدف ایجاد Payload کافی برای مشاهده Encryption State و Backup/Restore است. داده مثال Production محسوب نمیشود.
PAGE-396درج داده با CTE و مجموعه اعداد تکمیل میشود. پس از آمادهشدن Database، Certificate و DEK ایجاد و Encryption فعال میشود.
PAGE-397Algorithm و Wizard
انتخاب Algorithm تعادل Security و CPU است. TDE در SQL Server از AES با اندازه کلیدهای مختلف پشتیبانی میکند. SSMS Manage Database Encryption Wizard مراحل Certificate/DEK و Enable را نمایش میدهد، اما برای Automation معمولاً T-SQL ترجیح داده میشود.
Figure 11-2 — شکل/تصویر منبع، صفحه PDF 397PAGE-398USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Master-Key-Password';
CREATE CERTIFICATE Chapter11TDECert WITH SUBJECT = 'TDE certificate';
GO
USE Chapter11Encrypted;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE Chapter11TDECert;
ALTER DATABASE Chapter11Encrypted SET ENCRYPTION ON;
بلافاصله Certificate و Private Key باید Backup شوند.
PAGE-399BACKUP CERTIFICATE Chapter11TDECert
TO FILE = 'C:\Keys\Chapter11TDECert.cer'
WITH PRIVATE KEY
(
FILE = 'C:\Keys\Chapter11TDECert.pvk',
ENCRYPTION BY PASSWORD = 'Private-Key-Backup-Password'
);
برای Restore روی Instance جدید ابتدا Master Key و Certificate با Private Key Restore میشوند، سپس Database Restore میشود. نبود Certificate باعث خطای Restore Backup رمزگذاریشده خواهد شد.
Figure 11-3 — شکل/تصویر منبع، صفحه PDF 399