Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server
В этом разделе описаны действия по защите базы данных SQL Server с применением прозрачного шифрования данных и перемещению базы данных в другой экземпляр SQL Server.
В этом разделе
Перед началом работы выполните следующие действия.
Пояснения
Безопасность
Пример:
Создание базы данных, защищаемой с применением прозрачного шифрования данных
Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server
Дополнительная работа. Действия, выполняемые после перемещения базы данных, защищаемой прозрачным шифрованием, в новый экземпляр SQL Server
Пояснения
Функция прозрачного шифрования данных выполняет шифрование и дешифрование ввода-вывода в реальном времени для файлов данных и журналов. При шифровании используется ключ шифрования базы данных (DEK), который хранится в загрузочной записи базы данных для доступности при восстановлении. Ключ шифрования базы данных является симметричным ключом, защищенным сертификатом, который хранится в базе данных master на сервере, или асимметричным ключом, защищенным модулем расширенного управления ключами. В случае перемещения базы данных, защищаемой прозрачным шифрованием, также необходимо переместить сертификат или асимметричный ключ, который служит для открытия ключа шифрования базы данных. Сертификат или асимметричный ключ должен быть установлен в базе данных master целевого сервера, чтобы SQL Server имел доступ к файлам базы данных. Дополнительные сведения см. в разделе Основные сведения о прозрачном шифровании данных (TDE).
Безопасность
Разрешения
Требуется разрешение CONTROL DATABASE в базе данных master для создания главного ключа базы данных.
Требуется разрешение CREATE CERTIFICATE в базе данных master для создания сертификата, защищающего ключ шифрования базы данных.
Требуется разрешение CONTROL DATABASE в зашифрованной базе данных и разрешение VIEW DEFINITION на сертификат или асимметричный ключ, используемый для шифрования ключа шифрования базы данных.
[В начало]
Создание базы данных, защищаемой прозрачным шифрованием
Чтобы создать базу данных, защищаемую прозрачным шифрованием, используется ключ шифрования базы данных, который защищается сертификатом в базе данных master.
Создание базы данных, защищаемой с применением прозрачного шифрования данных
В редакторе запросов введите следующие команды Transact-SQL, чтобы создать главный ключ базы данных и сертификат в базе данных master.
Примечание по безопасности Звездочки замените паролем. Не используйте пустые пароли. Выбирайте надежные пароли.
USE master ; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************'; GO CREATE CERTIFICATE TestSQLServerCert WITH SUBJECT = 'Certificate to protect TDE key' GO
Создайте резервную копию сертификата сервера в базе данных master. Если сертификат, который используется для защиты ключа шифрования базы данных, будет утерян, то доступ к данным, хранящимся в базе данных, защищаемой прозрачным шифрованием, будет невозможен. В следующем примере резервная копия сертификата и файла закрытого ключа сохраняется в расположении данных по умолчанию для этого экземпляра SQL Server (C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA).
Примечание по безопасности Для восстановления сертификата необходимо хранить копии файла сертификата и файла закрытого ключа. Пароль для закрытого ключа не обязательно должен совпадать с паролем главного ключа базы данных.
BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', ENCRYPTION BY PASSWORD = '**************' ); GO
Создайте базу данных, защищаемую прозрачным шифрованием.
CREATE DATABASE CustRecords ; GO
Выполните переключение на новую базу данных. Создайте ключ шифрования базы данных, который защищается сертификатом сервера в базе данных master. Затем измените новую базу данных для шифрования с применением прозрачного шифрования данных.
USE CustRecords; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert; GO ALTER DATABASE CustRecords SET ENCRYPTION ON; GO
Примечание Чтобы выполнить это действие в среде Среда SQL Server Management Studio, щелкните базу данных правой кнопкой мыши в обозревателе объектов, укажите пункт «Задачи» и выберите пункт Управление шифрованием базы данных. В диалоговом окне Управление шифрованием базы данных выберите ключ шифрования базы данных и включите шифрование.
Создайте простую таблицу. Введите данные в таблицу, а затем выполните выборку из таблицы, чтобы проверить базу данных.
CREATE TABLE CustomerRecord (CustomerID int PRIMARY KEY, SecretData nvarchar(100) NOT NULL) ; GO INSERT CustomerRecord (CustomerID,SecretData) VALUES (23997, 'Plain text data') ; GO SELECT CustomerID, SecretData FROM CustomerRecord ; GO
[В начало]
Перемещение базы данных, защищаемой прозрачным шифрованием
Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server
Отсоедините базу данных, защищаемую прозрачным шифрованием, от исходного сервера.
USE master ; GO EXEC master.dbo.sp_detach_db @dbname = N'CustRecords'; GO
Примечание Чтобы выполнить это действие в среде Management Studio, щелкните базу данных правой кнопкой мыши в обозревателе объектов, укажите пункт «Задачи» и выберите пункт Отсоединить. Нажмите кнопку ОК.
В проводнике Windows переместите или скопируйте файлы базы данных с исходного сервера в то же расположение на целевом сервере.
Примечание Два файла базы данных (CustomerRecords.mdf и CustomerRecords_log.LDF) обычно располагаются в каталоге по умолчанию C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. В других системах имена и расположения файлов могут быть иными.
В проводнике Windows переместите или скопируйте резервную копию сертификата сервера и файла закрытого ключа с исходного сервера в то же расположение на целевом сервере. В данном примере эти файлы хранятся в каталоге данных по умолчанию: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.
Создайте главный ключ базы данных в целевом экземпляре SQL Server. Пароль необязательно должен совпадать с паролем на исходном сервере.
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************'; GO
Повторно создайте сертификат сервера с помощью файла резервной копии исходного сертификата сервера. Пароль должен совпадать с паролем, использованным при создании резервной копии.
CREATE CERTIFICATE TestSQLServerCert FROM FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', DECRYPTION BY PASSWORD = '**************' ); GO
Присоедините перемещаемую базу данных. Путем к файлам базы данных должно быть расположение, где сохранены файлы базы данных.
CREATE DATABASE [CustRecords] ON ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ), ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' ) FOR ATTACH ; GO
Примечание Чтобы выполнить это действие в среде Management Studio, щелкните узел Базы данных правой кнопкой мыши в обозревателе объектов и выберите команду Присоединить. Нажмите кнопку Добавить, чтобы найти файл CustRecords.mdf, а затем нажмите кнопку ОК.
Проверьте доступ к базе данных, выполнив выборку данных из таблицы.
USE CustRecords ; GO SELECT CustomerID, SecretData FROM CustomerRecord ; GO
[В начало]
Дополнительная работа. Действия, выполняемые после перемещения базы данных, защищаемой прозрачным шифрованием, в новый экземпляр SQL Server
Создание резервной копии базы данных master
- В результате установки сертификата и присоединения базы данных изменились сведения в базе данных master. Следует создать новую резервную копию базы данных master.
[В начало]
См. также