Transparent Data Encryption for the BIS workspace in SQL Server (Bathymetry Solution)
Вы можете принять некоторые меры предосторожности для защиты базы данных, такие как проектирование безопасной системы, шифрование конфиденциальных активов, а также создание сетевого экрана (firewall) вокруг серверов баз данных. Однако в случае, когда физические носители (такие как диски и ленты с резервными копиями) украдены, злоумышленник может восстановить или подключиться к базе данных и просматривать эти данные. Одним из решений является шифрование конфиденциальных данных в базе данных и защита ключей, используемых для шифрования данных с помощью сертификатов. Это предотвращает использования данных лицами без ключей, но этот вид защиты должен быть спланирован заранее.
TDE выполняет в режиме реального времени I/O шифрование и дешифрование файлов данных и журналов. Шифрование использует ключ шифрования (DEK) базы данных, который хранится в базе данных загрузочной записи для доступа во время восстановления. DEK является симметричным ключом, закрепленным с помощью сертификата, хранящегося в базе данных главного сервера, или асимметричным ключом, защищенным модулем Encryption Key Manager (EKM). TDE защищает данные в состоянии покоя, подразумевается файлов данных и журналов. Он предоставляет возможность соответствовать множеству законов, нормативных актов и руководящих принципов, разработанных в различных отраслях промышленности. Это позволяет разработчикам программного обеспечения шифровать данные с использованием AES, 3DES алгоритмов шифрования без изменения существующих приложений.
Шифрование файла базы данных выполняется на уровне страницы. Страницы в зашифрованной базе данных шифруются перед тем, как они записываются на диск, и расшифровываются при считывании в память. TDE не увеличивает размер зашифрованной базы данных.
The benefits of using TDE are the following:
- As a security administrator, you can be sure that sensitive data is safe in case the storage media or data file gets stolen.
- Implementing TDE helps you address security-related regulatory compliance issues.
- You do not need to create triggers or views to decrypt data for the authorized user or application. Data from tables is transparently decrypted for the database user and application.
- Database users and applications need not be aware that the data they are accessing is stored in encrypted form. Data is transparently decrypted for the database users and applications.
- Applications need not be modified to handle encrypted data. Data encryption and decryption is managed by the database.
- Key management operations are automated. The user or application does not need to manage encryption keys.
Более подробно см. в Прозрачное шифрование данных (TDE) в библиотеке MSDN.
Чтобы использовать TDE, выполните следующие действия в SQL Server Management Studio.
- Создайте мастер-ключ.
- Создайте или получите сертификат, защищенный мастер-ключом.
- Создайте ключ шифрования базы данных и защитите его сертификатом.
- Установите базу данных, чтобы использовать шифрование.
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 = 'bis$$@admin';
GO
/* Backup master key */
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'bis$$@admin';
GO
BACKUP MASTER KEY TO FILE = 'D:\mssqlbackup\master\masterkey.mk'
ENCRYPTION BY PASSWORD = 'bis$$@admin';
GO
/* Create Certificate */
CREATE CERTIFICATE bis_cert WITH SUBJECT = 'BIS Server Certificate';
GO
/* Verify Certificate */
SELECT * FROM sys.certificates where [name] = 'bis_cert'
GO
/* Backup certificate */
BACKUP CERTIFICATE bis_cert TO FILE = 'D:\mssqlbackup\master\bis.cer'
WITH PRIVATE KEY (
FILE = 'D:\mssqlbackup\master\bis.pvk',
ENCRYPTION BY PASSWORD = 'bis$$@admin');
GO
--use bis database
USE bisdb
GO
/* Create Encryption key */
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE bis_cert;
GO
/* Encrypt database */
ALTER DATABASE bisdb 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 ='bisdb'
GO