Поделиться через


PowerShell и Azure CLI: включение прозрачного шифрования данных с управляемым пользователем ключом из Azure Key Vault

Область применения:База данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse Analytics

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

Эта статья относится к базе данных Azure SQL, управляемому экземпляру Azure SQL и дедицированным SQL-пулам в Azure Synapse Analytics. Сведения о прозрачном шифровании данных для выделенных пулов SQL в рабочих областях Azure Synapse см. в статье Шифрование в Azure Synapse Analytics.

Примечание.

Azure SQL также поддерживает использование ключа RSA, хранящегося в управляемом HSM в качестве средства защиты TDE. Управляемый модуль HSM Azure — это полностью управляемая, высокодоступная, однотенантная и совместимая со стандартами облачная служба, которая позволяет защитить криптографические ключи для облачных приложений с помощью FIPS 140-2 уровня 3, проверенных HSM. Дополнительные сведения об управляемых HSM-системах.

Примечание.

Microsoft Entra ID ранее назывался Azure Active Directory (Azure AD).

Предварительные требования для PowerShell

  • У вас должна быть подписка на Azure, и вы должны быть администратором этой подписки.
  • [Рекомендуется, но необязательно.] Используйте аппаратный модуль безопасности (HSM) или локальное хранилище ключей для создания локальной копии материалов ключей защитника TDE.
  • У вас должна быть установлена и запущена среда Azure PowerShell.
  • Создайте Azure Key Vault и ключ для TDE.
  • Ключ должен иметь следующие атрибуты, которые должны использоваться для TDE:
    • Дата активации (если задано) должна быть датой и временем в прошлом
    • Дата окончания срока действия (если задано) должна быть будущей датой и временем
    • Ключ должен находиться в состоянии "Включено"
    • возможность выполнять операции получения, упаковки ключа и распаковки ключа.
  • Чтобы использовать ключ управляемого HSM Azure, следуйте инструкциям по созданию и активации управляемого HSM с помощью Azure CLI.

Инструкции по установке модуля Az PowerShell см. в разделе "Установка Azure PowerShell".

Подробные сведения об Azure Key Vault см. в инструкциях PowerShell по Azure Key Vault и использовании функции мягкого удаления Azure Key Vault с помощью PowerShell.

Назначьте удостоверение Microsoft Entra вашему серверу

Если у вас есть существующий сервер, используйте следующее, чтобы добавить удостоверение Microsoft Entra на сервер:

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

При создании сервера используйте командлет New-AzSqlServer с тегом -Identity, чтобы добавить удостоверение Microsoft Entra во время создания сервера:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

Предоставление разрешений Azure Key Vault серверу

Используйте командлет Set-AzKeyVaultAccessPolicy, чтобы предоставить вашему серверу доступ к хранилищу ключей перед использованием ключа из него для TDE (прозрачного шифрования данных).

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

Для добавления разрешений на сервере в управляемом HSM добавьте на сервер локальную роль RBAC "Пользователь шифрования криптографической службы управляемого HSM". Это позволяет серверу выполнять операции получения, упаковки ключей и распаковки ключей на ключах в управляемом HSM. Дополнительные сведения см. в разделе Управление ролями HSM

Добавьте ключ Azure Key Vault на сервер и задайте средство защиты TDE

  • Используйте командлет Get-AzKeyVaultKey , чтобы получить идентификатор ключа из хранилища ключей.
  • Используйте командлет Add-AzSqlServerKeyVaultKey , чтобы добавить ключ из Azure Key Vault на сервер.
  • Используйте командлет Set-AzSqlServerTransparentDataEncryptionProtector, чтобы настроить ключ в качестве предохранителя TDE для всех ресурсов сервера.
  • Используйте командлет Get-AzSqlServerTransparentDataEncryptionProtector, чтобы проверить правильность настройки предохранителя TDE.

Примечание.

Для управляемых ключей HSM используйте Az.Sql 2.11.1 версии PowerShell или более поздней.

Примечание.

Общая длина имени хранилища ключей и имени ключа не может превышать 94 символа.

Совет

Использование версий и безверсийных ключей Azure Key Vault для TDE

При настройке средства защиты TDE можно ссылаться на ключ Azure Key Vault с помощью определенной версии ключа или идентификатора ключа без версии.

В обоих случаях База данных SQL Azure всегда разрешает и использует последнюю включенную версию ключа в Azure Key Vault или Управляемом HSM Azure Key Vault. Используйте идентификаторы ключей без версии, чтобы избежать внедрения определенной версии ключа в конфигурацию предохранителя TDE.

Идентификаторы ключей без версии в настоящее время поддерживаются только для базы данных SQL Azure.

Примеры:

  • Идентификатор ключа, включающий определенную версию

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

  • Идентификатор ключа без версии

    https://<key-vault-name>.vault.azure.net/keys/<key-name>

# add the key from Azure 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>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

Включите TDE

Выполните командлет Set-AzSqlDatabaseTransparentDataEncryption, чтобы включить TDE.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

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

Проверка состояния и активности шифрования

Используйте Get-AzSqlDatabaseTransparentDataEncryption, чтобы получить состояние шифрования для базы данных или хранилища данных.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

Полезные командлеты PowerShell

  • Выполните командлет Set-AzSqlDatabaseTransparentDataEncryption, чтобы выключить TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Используйте командлет Get-AzSqlServerKeyVaultKey , чтобы вернуть список ключей Azure Key Vault, добавленных на сервер.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Используйте Remove-AzSqlServerKeyVaultKey, чтобы удалить ключ Azure Key Vault с сервера.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Устранение неполадок

  • Если не удается найти хранилище ключей, убедитесь, что выбрана правильная подписка.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Если новый ключ не удается добавить на сервер или новый ключ нельзя обновить в качестве предохранителя TDE, проверьте следующее:

    • Ключ не должен иметь дату окончания срока действия.
    • для ключа должны быть включены операции получения, упаковки ключа и распаковки ключа.