Использование Azure Key Vault для хранения данных в Microsoft Azure
Azure Key Vault — это ключевой компонент безопасности Azure, который помогает разработчикам, а также администраторам безопасности и облачных вычислений безопасно управлять ключами.
Цель этой статьи — воспользоваться преимуществом Azure Key Vault для шифрования дисков на виртуальных машинах, работающих в Microsoft Azure. Процесс шифрования на виртуальных машинах Windows использует функцию BitLocker. Виртуальные машины Linux используют DM-Crypt.
Хотя мы можем использовать одно хранилище ключей для всех ваших потребностей, некоторые компании предпочитают использовать одно хранилище ключей для каждой рабочей нагрузки. В этой статье мы зарезервируем Key Vault только для шифрования диска.
Мы рассмотрим необходимые шаги для получения данных в состоянии покоя с помощью Microsoft Azure Key Vault. Чтобы завершить шифрование диска любой виртуальной машины, необходимо выполнить следующие шаги. Имейте в виду, что первые три требуются только один раз, а после этого нужно просто зашифровать виртуальные машины во время подготовки (с использованием шаблонов ARM) или PowerShell.
Общие сведения о шифровании службы хранилища Azure
Прежде чем перейти к шифрованию дисков для ОС и дисков данных на виртуальной машине, важно отметить, что для всех , созданных с июня 2017 г., включено шифрование службы хранилища Azure.
По умолчанию все данные, записываемые в службу хранилища Azure, используют 256-разрядное шифрование AES для всех данных на платформе. Процесс шифрования происходит для записи новых данных и расшифровки для извлечения данных. Учетная запись хранения зашифрована по умолчанию, и клиент не может ее отключить. Единственный вариант — использовать собственный ключ шифрования вместо ключей шифрования, управляемых корпорацией Майкрософт.
Эта служба предлагается бесплатно и доступна во всех регионах Azure. Если вы хотите увидеть, включено ли оно на уровне хранилища, щелкните нужную учетную запись хранения и щелкните элемент «Шифрование» с правой стороны. Будет отображено краткое описание функции, и у нас есть единственный вариант настройки (определить источник ключей шифрования).
Достаточно ли безопасности? Определенно, это защитит ваши данные в состоянии покоя, но в некоторых организациях могут быть более строгие требования к безопасности, и может потребоваться шифрование самой виртуальной машины, и это то, что мы собираемся рассмотреть в следующем разделе.
Мы можем комбинировать обе защиты данных в состоянии покоя для любой виртуальной машины. Мы точно знаем, что SSE включен и работает в ваших текущих учетных записях хранения, и мы сделаем еще один шаг и зашифруем операционную систему и диски данных с помощью Azure Key Vault и функции BitLocker на виртуальной машине Windows.
Создание хранилища ключей Azure
Первым шагом является создание хранилища ключей Azure, которое можно создать с помощью интерфейса командной строки, PowerShell или портала Azure. Мы собираемся использовать самый ортодоксальный способ — портал Azure. Нажмите «Создать ресурс», введите и выберите первый вариант из списка.
В новой колонке будет отображаться краткий обзор службы. Нажмите «Создать». В новом блейде определите имя Key Vault (мы назовем его kv-test06) — любое имя, которое вы используете, должно быть уникальным, поскольку оно будет генерировать URL-адрес для доступа к информации. Текущее хранилище ключей будет использовать URL-адрес https://kv-test05.vault.azure.net. Выберите подписку, группу ресурсов, расположение и ценовой уровень (стандартный или премиум, разница заключается в поддержке HSM) и политики доступа, где текущему пользователю будут назначены некоторые разрешения на уровне , и .
После создания хранилища ключей мы можем управлять политиками доступа к хранилищу ключей, и, поскольку в дальнейшем мы коснемся шаблонов ARM, неплохо включить все три расширенные политики, которые позволяют использовать Azure Key Vault во время подготовки виртуальной машины. шифрование дисков для томов и ARM для развертывания шаблонов.
Проверка шифрования диска ВМ перед запуском процесса
Пришло время проверить текущее шифрование в виртуальной машине, которую мы собираемся использовать в этой статье. Войдите на портал Azure, выберите нужную виртуальную машину и щелкните элемент «Диски», расположенный в левом меню. Будет показан список всех дисков, связанных с данной виртуальной машиной, и на изображении ниже мы видим, что шифрование не включено на уровне виртуальной машины.
Чтобы запустить шифрование с помощью BitLocker, мы должны убедиться, что виртуальная машина не относится к базовому уровню. Всегда проверяйте портал Azure, чтобы убедиться, что текущий уровень поддерживает шифрование, прежде чем создавать виртуальную машину. (Во время создания этой статьи поддерживались следующие стандартные уровни: A, D, DS, G, GS и F.)
Создание ключа для хранения шифрования диска
При шифровании дисков администратор должен знать два термина: ключ шифрования данных (DEK) и ключ шифрования ключа (KEK). Асимметричный DEK (AES 256) используется для шифрования самого диска, а KEK — это асимметричный ключ шифрования, используемый для шифрования DEK, что создает еще один уровень безопасности.
В этом разделе мы собираемся создать KEK (ключ шифрования ключа) с помощью командлета PowerShell, указанного ниже. Помимо добавления ключа в хранилище ключей Azure, мы назначим субъекту-службе разрешение на перенос ключей (вставка данных в хранилище во время процесса создания нового ключа) в и зададим для .
Add-AzureKeyVaultKey -VaultName «kv-test06» -Имя «mykey» -Назначение «Программное обеспечение»
Set-AzureRMKeyVaultAccessPolicy -VaultName «kv-test06» -ServicePrincipalName <идентификатор приложения> -PermissionsToKeys «wrapKey» -PermissionsToSecrets «Set»
Создание субъекта-службы Azure Active Directory
Чтобы зашифровать виртуальные машины, мы должны настроить учетную запись субъекта-службы и связать разрешения с этой учетной записью для взаимодействия с Key Vault. Эта учетная запись будет отвечать за обмен криптографическими ключами от имени виртуальной машины. Результат работы скрипта можно увидеть на изображении ниже.
$AppName = «sp.diskencryption»
$SecurePassword = ConvertTo-SecureString -String «[электронная почта защищена]» -AsPlainText -Force
$App = New-AzureRMADApplication -DisplayName $AppName -HomePage «https://localhost» -IdentifierUris «https://localhost/diskencryption666» -Password $SecurePassword
New-AzureRMADServicePrincipal -ApplicationID $App.ApplicationID
Шифрование существующей виртуальной машины
Теперь, когда у нас настроено и готово к работе Azure Key Vault, последний шаг — запустить следующий командлет, чтобы запустить процесс шифрования, который может занять некоторое время (плюс-минус 10-15 минут).
Set-AzureRMVMDiskEncryptionExtension -ResourceGroupName <RGName> -VMName «VMTEst01» -AADClientID <App-ID> -AADClientSecret (New-Object PSCredential «пользователь», $securepassword).GetNetworkCredential().Password –DiskEncryptionKeyVaultURL <Disk-URL> -DiskEncryptionVaultID < Key-Vault-ResourceID> -KeyEncryptionKeyURL <KEK-URL> -KeyEncryptionKeyVaultID <Key-Vault-ResourceID>
Мы можем вернуться к опции машины, на которой мы только что запустили командлет шифрования. Значение в столбце Encryption должно быть Enabled.
Зайдя на сервер, мы видим значок BitLocker на диске C:, что означает, что на сервере включена защита.
Важное примечание: Том Bek является заполнителем для ключей шифрования — не изменяйте файлы и не играйте с этим диском.
Подведение итогов
Это процесс шифрования существующей виртуальной машины Windows с помощью PowerShell. Помните, что шаблоны Azure ARM также можно использовать для шифрования новых подготовленных и существующих виртуальных машин.
Как вы, возможно, заметили, при запуске командлета Set-AzureRMVMDiskEncryptionExtension необходимо указать множество параметров, и чтобы упростить задачу, я создал простой сценарий, который генерирует значение, необходимое для командлета. Должны быть переданы только два параметра: имя хранилища ключей и субъект службы AD.
Скрипт можно найти на GitHub, нажав здесь.