Миграция сертификата защищенной TDE базы данных в Управляемый экземпляр SQL Azure
Область применения: Управляемый экземпляр SQL Azure
При миграции базы данных, защищенной с помощью прозрачного шифрования данных (TDE), в Управляемый экземпляр SQL Azure с использованием параметра "Собственное восстановление" необходимо перед восстановлением базы данных перенести соответствующий сертификат из экземпляра SQL Server. В этой статье рассматривается процесс миграции сертификата в Управляемый экземпляр SQL Azure вручную.
- Экспортируйте сертификат в файл обмена личной информацией (.pfx)
- Извлеките сертификат из файла в строку формата base-64
- Загрузите его с помощью командлета PowerShell
Альтернативный вариант — это использование полностью управляемой службы для плавной миграции как защищенной TDE базы данных, так и соответствующего сертификата. Дополнительные сведения см. в разделе Перенос локальной базы данных в Управляемый экземпляр базы данных SQL Azure с помощью Azure Database Migration Service.
Внимание
Перенесенный сертификат используется только для восстановления базы данных, защищенной TDE. Вскоре после восстановления перенесенный сертификат заменяется другим предохранителем, либо управляемым службой сертификатом, либо асимметричным ключом из хранилища ключей в зависимости от типа TDE, установленного в экземпляре.
Необходимые компоненты
Чтобы выполнить действия, описанные в этой статье, необходимо следующее.
- Средство командной строкиPvk2Pfx, установленное на локальном сервере или другом компьютере с доступом к сертификату, экспортированному как файл. Средство Pvk2Pfx является частью набора драйверов Windows Enterprise, изолированной среды командной строки.
- Windows PowerShell версии 5.0 или более поздней.
Вам потребуются:
- Установленный и обновленный модуль Azure PowerShell.
- Модуль Az.Sql.
Примечание.
В этой статье предусмотрено использование модуля Azure Az PowerShell, который является рекомендуемым модулем PowerShell для взаимодействия с Azure. Чтобы начать работу с модулем Az PowerShell, ознакомьтесь со статьей Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Внимание
Модуль PowerShell Azure Resource Manager по-прежнему поддерживается Управляемым экземпляром SQL Azure, но вся будущая разработка сосредоточена на модуле Az.Sql. Сведения об этих командлетах см. в разделе AzureRM.Sql. Аргументы команд в модулях Az и AzureRM практически идентичны.
Выполните следующие команды в PowerShell, чтобы установить или обновить модуль PowerShell.
Install-Module -Name Az.Sql
Update-Module -Name Az.Sql
Экспорт сертификата TDE в PFX-файл
Сертификат можно экспортировать непосредственно из исходного экземпляра SQL Server или из хранилища сертификатов, если он хранится там.
Экспорт сертификата из исходного экземпляра SQL Server
Следуйте инструкциям ниже, чтобы экспортировать сертификат с помощью SQL Server Management Studio и преобразовать его в формат .pfx. В следующих шагах используются универсальные имена TDE_Cert и full_path для имен сертификата и файла и путей. Их должны заменить фактические имена.
В среде SSMS откройте новое окно запроса и подключитесь к исходному экземпляру SQL Server.
Используйте следующий сценарий, чтобы перечислить защищенные TDE базы данных и получите имя сертификата, защищающего шифрование базы данных, которые подлежат миграции.
USE master GO SELECT db.name as [database_name], cer.name as [certificate_name] FROM sys.dm_database_encryption_keys dek LEFT JOIN sys.certificates cer ON dek.encryptor_thumbprint = cer.thumbprint INNER JOIN sys.databases db ON dek.database_id = db.database_id WHERE dek.encryption_state = 3
Выполните следующее действие, чтобы экспортировать сертификат в пару файлов (.cer и .pvk), сохраняя данные открытого и закрытого ключа.
USE master GO BACKUP CERTIFICATE TDE_Cert TO FILE = 'c:\full_path\TDE_Cert.cer' WITH PRIVATE KEY ( FILE = 'c:\full_path\TDE_Cert.pvk', ENCRYPTION BY PASSWORD = '<SomeStrongPassword>' )
Используйте консоль PowerShell для копирования сведений о сертификате из пары недавно созданных файлов в файл обмена личной информацией (PFX) с помощью средства Pvk2Pfx.
.\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
Экспорт сертификата из хранилища сертификатов
Если сертификат хранится в хранилище сертификатов локального компьютера SQL Server, его можно экспортировать, выполнив следующие действия.
Чтобы открыть оснастку диспетчера сертификатов консоли управления Microsoft Management Console, откройте консоль PowerShell и выполните следующую команду.
certlm
В оснастке MMC для сертификатов разверните путь "Личное > Сертификаты", чтобы просмотреть список сертификатов.
Щелкните правой кнопкой мыши сертификат и щелкните команду Экспорт.
Следуйте инструкциям мастера по экспорту сертификата и закрытого ключа в формате .pfx.
Отправьте сертификат в Управляемый экземпляр SQL Azure с помощью командлета Azure PowerShell
Начните с шагов подготовки в PowerShell.
# import the module into the PowerShell session Import-Module Az # connect to Azure with an interactive dialog for sign-in Connect-AzAccount # list subscriptions available and copy id of the subscription target the managed instance belongs to Get-AzSubscription # set subscription for the session Select-AzSubscription <subscriptionId>
После выполнения всех этапов подготовки выполните следующие команды для передачи сертификата с кодировкой base-64 в целевой управляемый экземпляр.
# If you are using PowerShell 6.0 or higher, run this command: $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -AsByteStream # If you are using PowerShell 5.x, uncomment and run this command instead of the one above: # $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -Encoding Byte $base64EncodedCert = [System.Convert]::ToBase64String($fileContentBytes) $securePrivateBlob = $base64EncodedCert | ConvertTo-SecureString -AsPlainText -Force $password = "<password>" $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force Add-AzSqlManagedInstanceTransparentDataEncryptionCertificate -ResourceGroupName "<resourceGroupName>" ` -ManagedInstanceName "<managedInstanceName>" -PrivateBlob $securePrivateBlob -Password $securePassword
Теперь сертификат доступен для указанного управляемого экземпляра, и может быть успешно восстановлена резервная копия соответствующей базы данных, защищенной TDE.
Примечание.
Отправленный сертификат не отображается в представлении каталога sys.certificates. Чтобы подтвердить успешную отправку сертификата, можно выполнить команду RESTORE FILELISTONLY .
Следующие шаги
В этой статье описан перенос сертификата, защищающего ключ шифрования базы данных с помощью прозрачного шифрования данных, из локального или IaaS-экземпляра SQL Server в Управляемый экземпляр SQL Azure.
Узнайте, как восстановить резервную копию базы данных в Управляемый экземпляр SQL Azure, чтобы узнать, как восстановить резервную копию базы данных в Управляемый экземпляр SQL Azure.