Настройка управляемых клиентом ключей для учетной записи пакетной службы Azure с помощью Azure Key Vault и управляемого удостоверения
По умолчанию пакетная служба Azure шифрует все хранящиеся в пакетной службе Azure данные клиента, такие как сертификаты и метаданные заданий и задач, с использованием ключей, управляемых платформой. При необходимости можно использовать собственные ключи, то есть ключи, управляемые клиентом, для шифрования данных, хранящихся в пакетная служба Azure.
Предоставленные ключи должны быть созданы в Azure Key Vault, и доступ к ним должен производиться с использованием управляемых удостоверений для ресурсов Azure.
Существует два типа управляемых удостоверений: назначаемые системой и назначаемые пользователем.
Вы можете создать учетную запись пакетной службы с управляемым удостоверением, назначаемого системой, или создать отдельное управляемое удостоверение, назначаемое пользователем, которое имеет доступ к ключам, управляемым клиентом. Просмотрите сравнительную таблицу, чтобы уяснить отличия и определить, какой вариант лучше подходит для вашего решения. Например, если вы хотите использовать одно управляемое удостоверение для доступа к нескольким ресурсам Azure, необходимо назначаемое пользователем управляемое удостоверение. В противном случае может быть достаточно назначаемого системой управляемого удостоверения, которое связано с вашей учетной записью пакетной службы. Использование управляемого удостоверения, назначаемого пользователем, также позволяет применить ключи, управляемые клиентом, при создании учетной записи пакетной службы, как показано далее.
Создание учетной записи пакетной службы с управляемым удостоверением, назначаемым системой
Если вам не требуется отдельное управляемое удостоверение, назначаемое пользователем, можно при создании учетной записи пакетной службы выбрать управляемое удостоверение, назначаемое системой.
Внимание
Управляемое удостоверение, назначаемое системой, созданное для учетной записи пакетной службы для шифрования данных клиентов, как описано в этом документе, нельзя использовать в качестве управляемого удостоверения, назначаемого пользователем, в пуле пакетной службы. Если вы хотите использовать одно управляемое удостоверение как в учетной записи пакетной службы, так и в пуле пакетной службы, вместо этого используйте общее управляемое удостоверение, назначаемое пользователем.
Портал Azure
На портале Azure при создании учетных записей пакетной службы выберите вариант Назначаемое системой в поле "Тип удостоверения" на вкладке Дополнительно.
После создания учетной записи вы найдете уникальный идентификатор GUID в поле Идентификатор субъекта удостоверения раздела Свойства. В поле Тип удостоверения будет отображаться System assigned
.
Это значение необходимо для предоставления этому учетной записи пакетной службы доступа к Key Vault.
Azure CLI
При создании учетной записи пакетной службы укажите значение SystemAssigned
для параметра --identity
.
resourceGroupName='myResourceGroup'
accountName='mybatchaccount'
az batch account create \
--name $accountName \
--resource-group $resourceGroupName \
--locations regionName='West US 2' \
--identity 'SystemAssigned'
После создания учетной записи можно проверить, что для этой учетной записи выбрано назначаемое системой удостоверение. Обязательно обратите внимание PrincipalId
на то, что это значение необходимо для предоставления этому пакетной учетной записи доступа к Key Vault.
az batch account show \
--name $accountName \
--resource-group $resourceGroupName \
--query identity
Примечание.
Управляемое системой удостоверение, созданное в учетной записи пакетной службы, используется только для получения из Key Vault ключей, управляемых клиентом. Для пулов пакетной службы оно недоступно. О том, как использовать назначаемое пользователем управляемое удостоверение в пуле, см. в статье "Настройка управляемых удостоверений в пулах пакетной службы".
Создание управляемого удостоверения, назначаемого пользователем
Если вы предпочитаете, можно создать назначаемое пользователем управляемое удостоверение , которое можно использовать для доступа к ключам, управляемым клиентом.
Для доступа к Key Vault необходимо значение идентификатора клиента для этого удостоверения.
Настройка экземпляра Azure Key Vault
Azure Key Vault, в котором создаются ключи, должны быть созданы в том же клиенте, что и учетная запись пакетной службы. Он не должен находиться в одной группе ресурсов или даже в той же подписке.
создать Azure Key Vault;
При создании экземпляра Azure Key Vault с управляемыми клиентом ключами для пакетной службы Azure убедитесь, что включены функции Обратимое удаление и Защита от очистки.
Добавление политики доступа в экземпляр Azure Key Vault
На портале Azure после создания хранилища ключей Key Vault в подразделе Политика доступа раздела Параметры добавьте доступ для учетной записи пакетной службы с использованием управляемого удостоверения. В списке Разрешения ключей установите флажки Получение, Упаковка ключа и Распаковка ключа.
В поле Выбор раздела Субъект введите один из следующих вариантов:
- В случае управляемого удостоверения, назначаемого системой: введите полученное ранее значение
principalId
или имя учетной записи пакетной службы. - В случае управляемого удостоверения, назначаемого пользователем: введите полученное ранее значение идентификатора клиента или имя управляемого удостоверения, назначаемого пользователем.
Создание нового ключа в Azure Key Vault
На портале Azure перейдите к экземпляру Key Vault в разделе ключ и выберите Cоздать/Импортировать. Выберите для параметра Тип ключа значение RSA
, а для параметра Размер ключа RSA — не менее 2048
бит. Ключи типа EC
в настоящее время не поддерживаются в качестве ключей, управляемых клиентом, в учетных записях пакетной службы.
После создания ключа щелкните только что созданный ключ и его текущую версию и скопируйте содержимое поля Идентификатор ключа в разделе Свойства. Убедитесь, что в разделе "Разрешенные операции", "Ключ оболочки" и "Распаковка ключа" проверяются.
Включение управляемых клиентом ключей в учетной записи пакетной службы
Теперь, когда необходимые компоненты установлены, вы можете включить ключи, управляемые клиентом, в учетной записи пакетной службы.
Портал Azure
На портале Azure перейдите на страницу учетной записи пакетной службы. В разделе Шифрование выберите Ключ, управляемый клиентом. Можно использовать непосредственно идентификатор ключа или выбрать хранилище ключей, а затем щелкнуть ссылку Выберите хранилище ключей и ключ.
Azure CLI
Создав учетную запись пакетной службы с управляемым удостоверением, назначаемым системой, и получив доступ к Key Vault, обновите учетную запись пакетной службы, указав URL-адрес {Key Identifier}
в параметре keyVaultProperties
. Также задано --encryption-key-source
значение Microsoft.KeyVault
.
az batch account set \
--name $accountName \
--resource-group $resourceGroupName \
--encryption-key-source Microsoft.KeyVault \
--encryption-key-identifier {YourKeyIdentifier}
Создание учетной записи пакетной службы с назначаемым пользователем удостоверением и управляемыми клиентом ключами
В качестве примера с помощью клиента .NET для управления пакетной службой можно создать учетную запись пакетной службы, назначаемую пользователем управляемое удостоверение и ключи, управляемые клиентом.
string subscriptionId = "Your SubscriptionID";
string resourceGroupName = "Your ResourceGroup name";
var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = _armClient.GetResourceGroupResource(resourceGroupResourceId);
var data = new BatchAccountCreateOrUpdateContent(AzureLocation.EastUS)
{
Encryption = new BatchAccountEncryptionConfiguration()
{
KeySource = BatchAccountKeySource.MicrosoftKeyVault,
KeyIdentifier = new Uri("Your Key Azure Resource Manager Resource ID"),
},
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = {
[new ResourceIdentifier("Your Identity Azure Resource Manager ResourceId")] = new UserAssignedIdentity(),
},
}
};
var lro = resourceGroupResource.GetBatchAccounts().CreateOrUpdate(WaitUntil.Completed, "Your BatchAccount name", data);
BatchAccountResource batchAccount = lro.Value;
Обновление версии ключа, управляемого клиентом
При создании новой версии ключа обновите учетную запись пакетной службы, чтобы в ней использовалась эта новая версия. Выполните следующие действия:
- Перейдите к своей учетной записи пакетной службы на портале Azure и откройте параметры шифрования.
- Введите URI новой версии ключа. Как вариант, для обновления версии можно еще раз выбрать хранилище ключей Key Vault и ключ.
- Сохранение изменений.
Обновить версию можно также с помощью Azure CLI.
az batch account set \
--name $accountName \
--resource-group $resourceGroupName \
--encryption-key-identifier {YourKeyIdentifierWithNewVersion}
Совет
Вы можете автоматически повернуть ключи, создав политику смены ключей в Key Vault. При указании идентификатора ключа для учетной записи пакетной службы используйте идентификатор ключа без версии, чтобы включить автоматическую обработку с допустимой политикой поворота. Дополнительные сведения см. в статье о настройке смены ключей в Key Vault.
Шифрование пакетов другим ключом
Чтобы сменить ключ, используемый для шифрования в пакетной службе, выполните следующие действия.
- Перейдите к своей учетной записи пакетной службы и откройте параметры шифрования.
- Введите URI нового ключа. Как вариант, можно выбрать хранилище ключей Key Vault и затем выбрать новый ключ.
- Сохранение изменений.
Сменить ключ можно также с помощью Azure CLI.
az batch account set \
--name $accountName \
--resource-group $resourceGroupName \
--encryption-key-identifier {YourNewKeyIdentifier}
Часто задаваемые вопросы
- Поддерживаются ли ключи, управляемые клиентом, для имеющихся учетных записей пакетной службы? № Ключи, управляемые клиентом, поддерживаются только для новых учетных записей пакетной службы.
- Можно ли выбрать размер ключа RSA, превышающий 2048 бит? Да, поддерживаются также ключи RSA размером
3072
и4096
бит. - Какие операции доступны после отзыва управляемого клиентом ключа? Если пакетная служба теряет доступ к ключу, управляемому клиентом, то единственная разрешенная для нее операция — это удаление учетной записи.
- Как восстановить доступ к учетной записи пакетной службы при случайном удалении ключа Key Vault? Поскольку включены защита от очистки и обратимое удаление, вы можете восстановить имеющиеся ключи. Дополнительные сведения см. в статье о восстановлении хранилища ключей Azure Key Vault.
- Можно ли отключить возможность использования ключей, управляемых клиентом? Вы можете в любое время снова установить тип шифрования "Ключ, управляемый Майкрософт" для учетной записи пакетной службы. После этого вы можете удалить или изменить ключ.
- Как ротировать ключи? Управляемые клиентом ключи не поворачиваются автоматически, если ключ не является версией с соответствующим набором политик смены ключей в Key Vault. Чтобы вручную повернуть ключ, обновите идентификатор ключа, с которым связана учетная запись.
- Через сколько времени учетная запись пакетной службы снова заработает после восстановления доступа? На то, чтобы учетная запись заработала снова после восстановления доступа, может потребоваться до 10 минут.
- Что происходит с моими ресурсами, пока учетная запись пакетной службы недоступна? Все пулы, активные при использовании пакетного доступа к ключу, управляемому клиентом, будут продолжать выполняться. Однако узлы в этих пулах будут переходить в недоступное состояние, и задачи перестают выполняться (и будут повторно возвращены). После восстановления доступа узлы становятся доступными снова, а задачи перезапускаются.
- Применяется ли этот механизм шифрования к дискам виртуальных машин в пуле пакетной службы? № В пулах конфигурации облачной службы (которые объявлены нерекомендуемыми) операционная система и временные диски не шифруются. Для пулов конфигурации виртуальных машин ОС и все указанные диски данных шифруются с помощью управляемого ключа платформы Майкрософт по умолчанию. В настоящее время нельзя указать собственный ключ для этих дисков. Чтобы зашифровать временный диск виртуальных машин пула пакетной службы с использованием ключа, управляемого платформой Майкрософт, необходимо включить свойство diskEncryptionConfiguration в пуле конфигурации виртуальных машин. Для строго конфиденциальных сред рекомендуется включить шифрование временных дисков и избегать хранения конфиденциальной информации на дисках операционной системы и дисках данных. Дополнительные сведения см. в статье "Создание пула с включенным шифрованием дисков".
- Доступно ли управляемое удостоверение, назначаемое системой, в учетной записи пакетной службы на вычислительных узлах? № Управляемое удостоверение, назначаемое системой, в настоящее время используется только для получения ключа, управляемого клиентом, из Azure Key Vault. О том, как использовать назначаемое пользователем управляемое удостоверение на вычислительных узлах, см. в статье "Настройка управляемых удостоверений в пулах пакетной службы".
Следующие шаги
- Дополнительные сведения о рекомендациях по обеспечению безопасности в пакетной службе Azure.
- Дополнительные сведения об Azure Key Vault.