Настройка управляемых идентификаторов для пулов Batch
Управляемые удостоверения для ресурсов Azure устраняют сложное управление идентификацией и учетными данными, предоставляя удостоверение для ресурса Azure в Microsoft Entra ID (Azure AD ID). Это удостоверение используется для получения токенов Microsoft Entra для аутентификации с целевыми ресурсами в Azure.
При добавлении управляемого удостоверения, назначенного пользователем, в пакетный пул важно задать свойство Identity в конфигурации. Это свойство связывает управляемое удостоверение с пулом, что позволяет ему безопасно получать доступ к ресурсам Azure. Неправильный параметр свойства Identity может привести к распространенным ошибкам, таким как проблемы с доступом или ошибки отправки.
Для получения дополнительных сведений о настройке управляемых удостоверений в службе Azure Batch см. документацию по управляемым удостоверениям в Azure Batch.
В этой статье объясняется, как включить назначаемые пользователем управляемые идентичности в Batch Pools и как использовать управляемые идентичности внутри узлов.
Внимание
Создание пулов с управляемыми удостоверениями можно выполнять только с использованием API-интерфейсов или SDK плоскости управления пакетной обработкой с проверкой подлинности Entra. Невозможно создать пулы с управляемыми удостоверениями с помощью Batch Service API или SDK. Дополнительные сведения см. в обзорной документации по API и средствам пакетной обработки.
Создание управляемого удостоверения, назначаемого пользователем
Сначала создайте пользовательски назначенное управляемое удостоверение в том же арендаторе, что и ваша учетная запись Batch. Удостоверение можно создать с использованием портала Azure, интерфейса командной строки Azure (Azure CLI), PowerShell, Azure Resource Manager или Azure REST API. Это управляемое удостоверение не должно находиться в одной группе ресурсов или даже в той же подписке.
Совет
Назначаемое системой управляемое удостоверение, созданное для учетной записи пакетной службы для шифрования данных клиента, нельзя использовать в качестве управляемого удостоверения, назначаемого пользователем, в пуле пакетной службы, как описано в этом документе. Если вы хотите использовать одно управляемое удостоверение как в учетной записи пакетной службы, так и в пуле пакетной службы, вместо этого используйте общее управляемое удостоверение, назначаемое пользователем.
Создание пула задач с пользовательскими управляемыми удостоверениями
После создания одного или нескольких управляемых удостоверений, назначаемых пользователем, можно создать пул пакетной службы с таким удостоверением или этими удостоверениями. Вы можете:
- Используйте портал Azure для создания пула Batch
- Используйте библиотеку управления Batch .NET для создания пула Batch
Предупреждение
Обновления на месте для управляемых удостоверений пула не поддерживаются, пока в пуле есть активные узлы. Существующие вычислительные узлы не будут обновлены с изменениями. Перед изменением коллекции удостоверений рекомендуется масштабировать пул до нуля вычислительных узлов, чтобы убедиться, что все виртуальные машины имеют одинаковый набор удостоверений.
Создайте пул пакетов в портале Azure
Чтобы создать пул Batch с пользовательским управляемым удостоверением через портал Azure:
- Войдите на портал Azure.
- В строке поиска введите и выберите Пакетные учетные записи.
- На странице Учетные записи пакетной службы выберите учетную запись пакетной службы, в которой нужно создать пул пакетной службы.
- В меню учетной записи Batch в разделе Компоненты выберите Пулы.
- В меню Пулы выберите Добавить, чтобы добавить новый пул Batch.
- В поле Идентификатор пула введите идентификатор пула.
- В поле Удостоверение измените параметр на Назначаемое пользователем.
- В разделе Управляемое удостоверение, назначаемое пользователем выберите команду Добавить.
- Выберите одно или несколько управляемых удостоверений, назначаемых пользователем, которые вы хотите использовать. а затем щелкните Добавить.
- В разделе Операционная система выберите издателя, предложение и номер SKU, которые нужно использовать.
- При необходимости активируйте системное удостоверение в реестре контейнеров.
- Для конфигурации контейнера измените параметр на Настраиваемый. Затем выберите настраиваемую конфигурацию.
- Для параметра Задача запуска выберите Включено. Затем выберите Файлы ресурсов и добавьте сведения о контейнере хранилища.
- Включите Параметры контейнера.
- Измените Реестр контейнеров на Настраиваемый.
- Для параметра Ссылка на удостоверение выберите хранилище.
Создание пула пакетной службы с помощью .NET
Чтобы создать пул Batch с управляемым удостоверением, назначаемым пользователем, с использованием библиотеки управления Batch .NET, используйте следующий пример кода:
var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);
var batchAccountIdentifier = ResourceIdentifier.Parse("your-batch-account-resource-id");
BatchAccountResource batchAccount = _armClient.GetBatchAccountResource(batchAccountIdentifier);
var poolName = "HelloWorldPool";
var imageReference = new BatchImageReference()
{
Publisher = "canonical",
Offer = "0001-com-ubuntu-server-jammy",
Sku = "22_04-lts",
Version = "latest"
};
string nodeAgentSku = "batch.node.ubuntu 22.04";
var batchAccountPoolData = new BatchAccountPoolData()
{
VmSize = "Standard_DS1_v2",
DeploymentConfiguration = new BatchDeploymentConfiguration()
{
VmConfiguration = new BatchVmConfiguration(imageReference, nodeAgentSku)
},
ScaleSettings = new BatchAccountPoolScaleSettings()
{
FixedScale = new BatchAccountFixedScaleSettings()
{
TargetDedicatedNodes = 1
}
}
};
ArmOperation<BatchAccountPoolResource> armOperation = batchAccount.GetBatchAccountPools().CreateOrUpdate(
WaitUntil.Completed, poolName, batchAccountPoolData);
BatchAccountPoolResource pool = armOperation.Value;
Примечание.
Чтобы включить свойство Identity , используйте следующий пример кода:
var pool = batchClient.PoolOperations.CreatePool(
poolId: "myPool",
virtualMachineSize: "STANDARD_D2_V2",
cloudServiceConfiguration: new CloudServiceConfiguration(osFamily: "4"),
targetDedicatedNodes: 1,
identity: new PoolIdentity(
type: PoolIdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, UserAssignedIdentity>
{
{ "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identity-name}", new UserAssignedIdentity() }
}
));
Применение назначаемых пользователем управляемых удостоверений в узлах пакетной службы
Многие функции службы пакетной обработки Azure, которые обращаются к другим ресурсам Azure непосредственно на вычислительных узлах, например к службе хранилища Azure или Реестру контейнеров Azure, поддерживают управляемые удостоверения. Для получения дополнительной информации об использовании управляемых удостоверений с Azure Batch, воспользуйтесь следующими ссылками:
Вы также можете вручную настроить свои задачи, чтобы управляемые удостоверения могли напрямую получить доступ к ресурсам Azure, поддерживающим управляемые удостоверения.
В узлах пакетов можно получить токены управляемой идентичности и использовать их для аутентификации через Microsoft Entra посредством службы метаданных экземпляра Azure.
Сценарий PowerShell для Windows, получающий маркер доступа для проверки подлинности:
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -Method GET -Headers @{Metadata="true"}
Сценарий Bash для Linux:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -H Metadata:true
Дополнительные сведения см. в статье Как использовать управляемые удостоверения для ресурсов Azure на виртуальной машине Azure, чтобы получить токен доступа.
Следующие шаги
- Узнайте больше об управляемых удостоверениях для ресурсов Azure.
- Узнайте, как использовать ключи, управляемые клиентом, с идентификациями, управляемыми пользователем.
- Узнайте, как включить автоматическое обновление сертификатов в пуле Batch.