Удаление предохранителя TDE с помощью PowerShell

Применимо к:База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics (только выделенные пулы SQL)

В этой статье описывается, как реагировать на потенциально скомпрометированную защиту TDE для База данных SQL Azure или Azure Synapse Analytics, которая использует TDE с ключами, управляемыми клиентом, в Azure Key Vault — поддержка создания собственного ключа (BYOK). См. дополнительные сведения о поддержке BYOK для TDE.

Внимание

Процедуры, описанные в этой статье, следует выполнять только в критических случаях или в тестовых средах. Внимательно изучите шаги, так как удаление предохранителей TDE из Azure Key Vault приведет к тому, что база данных станет недоступна.

Если возникнут любые подозрения о компрометации ключа, например путем несанкционированного доступа пользователей и (или) служб к этому ключу, его следует удалить.

Помните, что после удаления предохранителя TDE в Key Vault в течение 10 минут все зашифрованные базы данных начинают отклонять все подключения с соответствующим сообщением об ошибке и меняют состояние на недоступное.

В этом руководство рассматривается подход к тому, как сделать базу данных недоступной после реагирования на инцидент, связанный с компрометацией.

Примечание.

Информация в статье применима к Базе данных SQL Azure, Управляемому экземпляру SQL Azure и Azure Synapse Analytics (выделенные пулы SQL, ранее — хранилище данных SQL). Сведения о прозрачном шифровании данных для выделенных пулов SQL в рабочих областях Azure Synapse см. в статье Шифрование в Azure Synapse Analytics.

Необходимые компоненты

Инструкции по установке модуля Az см. в статье об установке Azure PowerShell. Сведения об определенных командлетах см. в AzureRM.Sql. Используйте новый модуль Azure PowerShell Az.

Проверка отпечатков предохранителя TDE

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

SELECT [database_id],
       [encryption_state],
       [encryptor_type], /*asymmetric key means AKV, certificate means service-managed keys*/
       [encryptor_thumbprint]
 FROM [sys].[dm_database_encryption_keys]

Следующий запрос возвращает VLF и предохранители TDE, соответствующие используемым отпечаткам. Каждый отпечаток относится к разным ключам в Azure Key Vault (AKV):

SELECT * FROM sys.dm_db_log_info (database_id)

Кроме того, можно использовать PowerShell или Azure CLI.

Команда Get-AzureRmSqlServerKeyVaultKey PowerShell предоставляет отпечаток средства защиты TDE, используемого в запросе, чтобы увидеть, какие ключи следует хранить и какие ключи удалять в AKV. Из Azure Key Vault можно безопасно удалить только те ключи, которые больше не используются базой данных.

Сохранение доступности зашифрованных ресурсов

  1. Создайте ключ в Key Vault. Убедитесь, что новый ключ успешно создан в другом хранилище. Нельзя использовать то же хранилище, где размещен скомпрометированный предохранитель TDE, так как управление доступом предоставляется на уровне хранилища.

  2. Добавьте на сервер новый ключ с помощью командлетов Add-AzSqlServerKeyVaultKey и Set-AzSqlServerTransparentDataEncryptionProtector, а затем настройте его в качестве нового предохранителя TDE для этого сервера.

    # add the key from Key Vault to the server  
    Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>
    
    # set the key as the TDE protector for all resources under the server
    Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -ServerName <LogicalServerName> -Type AzureKeyVault -KeyId <KeyVaultKeyId>
    
  3. Убедитесь, что сервер и все реплики обновлены для использования нового предохранителя TDE с помощью командлета Get-AzSqlServerTransparentDataEncryptionProtector.

    Примечание.

    Для распространения нового предохранителя TDE на все базы данных и базы данных-получатели на сервере может потребоваться несколько минут.

    Get-AzSqlServerTransparentDataEncryptionProtector -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  4. Создайте резервную копию нового ключа в Key Vault.

    # -OutputFile parameter is optional; if removed, a file name is automatically generated.
    Backup-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName> -OutputFile <DesiredBackupFilePath>
    
  5. Удалите скомпрометированный ключ из Key Vault с помощью командлета Remove-AzKeyVaultKey.

    Remove-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName>
    
  6. Чтобы восстановить ключ в Key Vault в будущем с помощью командлета Restore-AzKeyVaultKey .

    Restore-AzKeyVaultKey -VaultName <KeyVaultName> -InputFile <BackupFilePath>
    

Как сделать зашифрованные ресурсы доступными

  1. Удалите все базы данных, которые зашифрованы с помощью потенциально скомпрометированного ключа.

    Для файлов базы данных и журналов резервные копии создаются автоматически, поэтому вы всегда сможете восстановить базу данных на определенный момент времени, предоставив нужный ключ. Удаление баз данных перед удалением действующего предохранителя TDE нужно для того, чтобы предотвратить потерю данных из последних транзакций (до 10 минут).

  2. Создайте в Key Vault резервную копию материала ключа для предохранителя TDE.

  3. Удалите потенциально скомпрометированный ключ из Key Vault.

Примечание.

Чтобы изменения разрешений вступили в силу для хранилища ключей, может потребоваться около 10 минут. Сюда входит Отмена разрешений на доступ к предохранителю TDE в AKV, а пользователи в течение этого времени могут по-прежнему иметь права доступа.