PowerShell и Azure CLI: включение прозрачного шифрования данных с управляемым пользователем ключом из Azure Key Vault
Область применения: База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics
В этой статье описывается, как использовать ключ из Azure Key Vault для прозрачного шифрования данных (TDE) в База данных SQL Azure или Azure Synapse Analytics. Чтобы получить дополнительные сведения об интеграции Azure Key Vault и поддержке при создании собственных ключей для TDE, см. статью Прозрачное шифрование данных в Azure SQL. Поддержка создания собственных ключей. Если вы ищете портал Azure инструкции по включению TDE с управляемым клиентом ключом из Azure Key Vault, см. статью "Создание сервера, настроенного с помощью управляемого пользователем удостоверения и управляемого клиентом TDE".
Информация в статье применима к Базе данных SQL Azure, Управляемому экземпляру SQL Azure и Azure Synapse Analytics (выделенные пулы SQL, ранее — хранилище данных SQL). Сведения о прозрачном шифровании данных для выделенных пулов SQL в рабочих областях Azure Synapse см. в статье Шифрование в Azure Synapse Analytics.
Примечание.
Теперь SQL Azure поддерживает использование в качестве предохранителя TDE ключа RSA, хранящегося в управляемом HSM. Управляемое устройство HSM в Azure Key Vault — это соответствующая стандартам и полностью управляемая высокодоступная облачная служба для одного клиента. С ее помощью можно защищать криптографические ключи для облачных приложений, используя устройства HSM, отвечающие стандартам FIPS 140-2 уровня 3. Дополнительные сведения об управляемых HSM.
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Предварительные требования для PowerShell
- Подписка Azure и права администратора для нее.
- [Рекомендуется, но необязательно.] Аппаратный модуль безопасности (HSM) или локальное хранилище ключей для создания локальной копии материала ключа для предохранителя TDE.
- У вас должна быть установлена и запущена среда Azure PowerShell.
- Создайте Azure Key Vault и ключи для TDE.
- Инструкции по использованию аппаратного модуля безопасности (HSM) и Key Vault
- Чтобы использовать хранилище ключей для TDE, обязательно настройте для него следующее свойство:
- обратимое удаление и защита от очистки
- Инструкции по использованию аппаратного модуля безопасности (HSM) и Key Vault
- Ключ должен иметь следующие атрибуты, которые должны использоваться для TDE:
- Дата активации (если задано) должна быть датой и временем в прошлом
- Дата окончания срока действия (если задано) должна быть будущей датой и временем
- Ключ должен находиться в состоянии "Включено"
- возможность выполнять операции получения, упаковки ключа и распаковки ключа.
- Чтобы использовать управляемый ключ HSM, следуйте инструкциям по созданию и активации управляемого модуля HSM с помощью Azure CLI.
Инструкции по установке модуля Az см. в статье об установке Azure PowerShell. Сведения об определенных командлетах см. в AzureRM.Sql.
Дополнительные сведения о Key Vault см. в Инструкции PowerShell в Key Vault и Как использовать обратимое удаление Key Vault в PowerShell.
Внимание
Модуль PowerShell Azure Resource Manager по-прежнему поддерживается, но вся будущая разработка сосредоточена на модуле Az.Sql. Исправления ошибок для модуля AzureRM будут продолжать выпускаться как минимум до декабря 2020 г. Аргументы команд в модулях Az и AzureRm практически идентичны. Дополнительные сведения о совместимости см. в статье Знакомство с новым модулем Az для Azure 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
Предоставление серверу разрешений на доступ к Key Vault
Используйте командлет Set-AzKeyVaultAccessPolicy, чтобы предоставить серверу доступ к хранилищу ключей, прежде чем назначать ключ из этого хранилища для прозрачного шифрования данных.
Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
-ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey
Чтобы добавить разрешения для сервера на управляемый модуль HSM, добавьте на сервер локальную роль пользователя RBAC "Шифрование криптографической службы управляемого HSM". Это позволит серверу получать, переносить и распаковывать ключи в управляемых HSM. Инструкции по подготовке доступа сервера к управляемому HSM
Добавление на сервер ключа из Key Vault и настройка предохранителя TDE
- Используйте командлет Get-AzKeyVaultKey, чтобы получить идентификатор ключа из хранилища ключей.
- Используйте командлет Add-AzSqlServerKeyVaultKey, чтобы добавить на сервер ключ из Key Vault.
- Используйте командлет Set-AzSqlServerTransparentDataEncryptionProtector, чтобы настроить ключ в качестве предохранителя TDE для всех ресурсов сервера.
- Используйте командлет Get-AzSqlServerTransparentDataEncryptionProtector, чтобы проверить правильность настройки предохранителя TDE.
Примечание.
Для управляемых ключей HSM используйте версию PowerShell Az.Sql 2.11.1.
Примечание.
Общая длина имени хранилища ключей и имени ключа не может превышать 94 символа.
Совет
Пример идентификатора KeyId из Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h
Пример KeyId из управляемого модуля HSM:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey
# 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>
# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>
Включение прозрачного шифрования данных
Выполните командлет Set-AzSqlDatabaseTransparentDataEncryption, чтобы включить TDE.
Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"
Теперь для базы данных или хранилища данных включено прозрачное шифрование данных с ключом шифрования из 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 возвращает список ключей из Key Vault, добавленных на указанный сервер.
# KeyId is an optional parameter, to return a specific key version Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
Командлет Remove-AzSqlServerKeyVaultKey удаляет с сервера ключ 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, проверьте следующее:
- ключ не должен иметь дату окончания срока действия;
- для ключа должны быть включены операции получения, упаковки ключа и распаковки ключа.
Следующие шаги
- Сведения о том, как заменить предохранитель TDE для сервера в соответствии с требованиями безопасности, приводятся в этой статье.
- Сведения о том, как удалить потенциально скомпрометированный предохранитель TDE в случае угрозы безопасности, вы найдете в этой статье.