Transparent Data Encryption (TDE) (Production Mapping)

Вы можете принять некоторые меры предосторожности для защиты базы данных, такие как проектирование безопасной системы, шифрование конфиденциальных активов, а также создание сетевого экрана (firewall) вокруг серверов баз данных. Однако в случае, когда физические носители (такие как диски и ленты с резервными копиями) украдены, злоумышленник может восстановить или подключиться к базе данных и просматривать эти данные. Одним из решений является шифрование конфиденциальных данных в базе данных и защита ключей, используемых для шифрования данных с помощью сертификатов. Это предотвращает использования данных лицами без ключей, но этот вид защиты должен быть спланирован заранее.

TDE выполняет в режиме реального времени I/O шифрование и дешифрование файлов данных и журналов. Шифрование использует ключ шифрования (DEK) базы данных, который хранится в базе данных загрузочной записи для доступа во время восстановления. DEK является симметричным ключом, закрепленным с помощью сертификата, хранящегося в базе данных главного сервера, или асимметричным ключом, защищенным модулем Encryption Key Manager (EKM). TDE защищает данные в состоянии покоя, подразумевается файлов данных и журналов. Он предоставляет возможность соответствовать множеству законов, нормативных актов и руководящих принципов, разработанных в различных отраслях промышленности. Это позволяет разработчикам программного обеспечения шифровать данные с использованием AES, 3DES алгоритмов шифрования без изменения существующих приложений.

Шифрование файла базы данных выполняется на уровне страницы. Страницы в зашифрованной базе данных шифруются перед тем, как они записываются на диск, и расшифровываются при считывании в память. TDE не увеличивает размер зашифрованной базы данных.

Более подробно см. в Прозрачное шифрование данных (TDE) в библиотеке MSDN.

Чтобы использовать TDE, выполните следующие действия в SQL Server Management Studio.

Шаги:
  1. Создайте мастер-ключ.
  2. Создайте или получите сертификат, защищенный мастер-ключом.
  3. Создайте ключ шифрования базы данных и защитите его сертификатом.
  4. Установите базу данных, чтобы использовать шифрование.

Example of TDE

You can use the SQL commands below to configure TDE. You can choose the password for the master key, and when backing up the master key, you can choose the folder and file name.

ПримечаниеПримечание:

При копировании и вставке примера могут возникнуть синтаксические ошибки.

USE master
GO
/* Verify master key */
SELECT * FROM sys.symmetric_keys WHERE name LIKE '%MS_DatabaseMasterKey%'
GO

/* if there are no records found, then it means there was no predefined Master Key. 
 To create a Master Key, you can execute the below mentioned TSQL code. */
 
/* Create master key */
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'prodlibadmin';
GO
/* Backup master key */
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'prodlibadmin';
GO
BACKUP MASTER KEY TO FILE = 'D:\mssqlbackup\master\masterkey.mk' 
    ENCRYPTION BY PASSWORD = 'prodlibadmin';
GO

/* Create Certificate */
CREATE CERTIFICATE prodlib_cert WITH SUBJECT = 'PRODLIB Server Certificate';
GO

/* Verify Certificate */
SELECT * FROM sys.certificates where [name] = 'prodlib_cert'
GO

/* Backup certificate */
BACKUP CERTIFICATE prodlib_cert TO FILE = 'D:\mssqlbackup\master\prodlib.cer'
   WITH PRIVATE KEY (
         FILE = 'D:\mssqlbackup\master\prodlib.pvk',
         ENCRYPTION BY PASSWORD = 'prodlibadmin');
GO

--use prodlibdb database
USE prodlibdb
GO
/* Create Encryption key */
CREATE DATABASE ENCRYPTION KEY
   WITH ALGORITHM = AES_256
   ENCRYPTION BY SERVER CERTIFICATE prodlib_cert;
GO

/* Encrypt database */
ALTER DATABASE prodlibdb SET ENCRYPTION ON;
GO

/* Verify Encryption */
SELECT 
DB_NAME(database_id) AS DatabaseName
,Encryption_State AS EncryptionState
,key_algorithm AS Algorithm
,key_length AS KeyLength
FROM sys.dm_database_encryption_keys
GO
SELECT 
NAME AS DatabaseName
,IS_ENCRYPTED AS IsEncrypted 
FROM sys.databases where name ='prodlibdb'
GO
4/27/2014