Настройка управляемых клиентом ключей для учетной записи пакетной службы Azure с помощью Azure Key Vault и управляемого удостоверения

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

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

Существует два типа управляемых удостоверений: назначаемые системой и назначаемые пользователем.

Вы можете создать учетную запись пакетной службы с управляемым удостоверением, назначаемого системой, или отдельное управляемое удостоверение, назначаемое пользователем, с доступом к ключам, управляемым клиентом. Просмотрите сравнительную таблицу, чтобы уяснить отличия и определить, какой вариант лучше подходит для вашего решения. Например, если вы хотите использовать одно и то же управляемое удостоверение для доступа к нескольким ресурсам Azure, необходимо назначаемое пользователем управляемое удостоверение. В противном случае может быть достаточно назначаемого системой управляемого удостоверения, которое связано с вашей учетной записью пакетной службы. Использование управляемого удостоверения, назначаемого пользователем, также дает возможность принудительно применять ключи, управляемые клиентом, при создании учетной записи пакетной службы, как показано далее.

Создание учетной записи пакетной службы с управляемым удостоверением, назначаемым системой

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

Важно!

Управляемое удостоверение, назначаемое системой, созданное для учетной записи пакетной службы для шифрования данных клиента, как описано в этом документе, не может использоваться в качестве управляемого удостоверения, назначаемого пользователем, в пуле пакетной службы. Если вы хотите использовать одно и то же управляемое удостоверение в учетной записи пакетной службы и пуле пакетной службы, используйте вместо этого общее управляемое удостоверение, назначаемое пользователем.

Портал Azure

На портале Azure при создании учетных записей пакетной службы выберите вариант Назначаемое системой в поле "Тип удостоверения" на вкладке Дополнительно.

Снимок экрана новой учетной записи пакетной службы с выбранным типом удостоверения

После создания учетной записи вы найдете уникальный идентификатор GUID в поле Идентификатор субъекта удостоверения раздела Свойства. В поле Тип удостоверения будет отображаться System assigned.

Снимок экрана с уникальным идентификатором GUID в поле

Это значение необходимо для предоставления учетной записи пакетной службы доступа к 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

Key Vault Azure, в котором создаются ключи, необходимо создать в том же клиенте, что и учетная запись пакетной службы. Он не обязательно должен находиться в одной группе ресурсов или даже в одной подписке.

создать Azure Key Vault;

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

Снимок экрана колонка создания хранилища ключей Key Vault.

Добавление политики доступа к экземпляру 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-sourceMicrosoft.KeyVault.

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-source Microsoft.KeyVault \
    --encryption-key-identifier {YourKeyIdentifier}

Создание учетной записи пакетной службы с назначаемым пользователем удостоверением и управляемыми клиентом ключами

В качестве примера с помощью клиента .NET для управления пакетной службой можно создать учетную запись пакетной службы, которая имеет назначаемое пользователем управляемое удостоверение и ключи, управляемые клиентом.

EncryptionProperties encryptionProperties = new EncryptionProperties()
{
    KeySource = KeySource.MicrosoftKeyVault,
    KeyVaultProperties = new KeyVaultProperties()
    {
        KeyIdentifier = "Your Key Azure Resource Manager Resource ID"
    }
};

BatchAccountIdentity identity = new BatchAccountIdentity()
{
    Type = ResourceIdentityType.UserAssigned,
    UserAssignedIdentities = new Dictionary<string, BatchAccountIdentityUserAssignedIdentitiesValue>
    {
            ["Your Identity Azure Resource Manager ResourceId"] = new BatchAccountIdentityUserAssignedIdentitiesValue()
    }
};
var parameters = new BatchAccountCreateParameters(TestConfiguration.ManagementRegion, encryption:encryptionProperties, identity: identity);

var account = await batchManagementClient.Account.CreateAsync("MyResourceGroup",
    "mynewaccount", parameters);

Обновление версии ключа, управляемого клиентом

При создании новой версии ключа обновите учетную запись пакетной службы, чтобы в ней использовалась эта новая версия. Выполните следующие действия.

  1. Перейдите к своей учетной записи пакетной службы на портале Azure и откройте параметры шифрования.
  2. Введите URI новой версии ключа. Как вариант, для обновления версии можно еще раз выбрать хранилище ключей Key Vault и ключ.
  3. Сохраните изменения.

Обновить версию можно также с помощью Azure CLI.

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-identifier {YourKeyIdentifierWithNewVersion}

Совет

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

Шифрование пакетов другим ключом

Чтобы сменить ключ, используемый для шифрования в пакетной службе, выполните следующие действия.

  1. Перейдите к своей учетной записи пакетной службы и откройте параметры шифрования.
  2. Введите URI нового ключа. Как вариант, можно выбрать хранилище ключей Key Vault и затем выбрать новый ключ.
  3. Сохраните изменения.

Сменить ключ можно также с помощью 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. О том, как использовать назначаемое пользователем управляемое удостоверение на вычислительных узлах, см. в статье "Настройка управляемых удостоверений в пулах пакетной службы".

Дальнейшие действия