Поделиться через


Настройка управляемых идентификаторов для пулов 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 с пользовательским управляемым удостоверением через портал Azure:

  1. Войдите на портал Azure.
  2. В строке поиска введите и выберите Пакетные учетные записи.
  3. На странице Учетные записи пакетной службы выберите учетную запись пакетной службы, в которой нужно создать пул пакетной службы.
  4. В меню учетной записи Batch в разделе Компоненты выберите Пулы.
  5. В меню Пулы выберите Добавить, чтобы добавить новый пул Batch.
  6. В поле Идентификатор пула введите идентификатор пула.
  7. В поле Удостоверение измените параметр на Назначаемое пользователем.
  8. В разделе Управляемое удостоверение, назначаемое пользователем выберите команду Добавить.
  9. Выберите одно или несколько управляемых удостоверений, назначаемых пользователем, которые вы хотите использовать. а затем щелкните Добавить.
  10. В разделе Операционная система выберите издателя, предложение и номер SKU, которые нужно использовать.
  11. При необходимости активируйте системное удостоверение в реестре контейнеров.
    1. Для конфигурации контейнера измените параметр на Настраиваемый. Затем выберите настраиваемую конфигурацию.
    2. Для параметра Задача запуска выберите Включено. Затем выберите Файлы ресурсов и добавьте сведения о контейнере хранилища.
    3. Включите Параметры контейнера.
    4. Измените Реестр контейнеров на Настраиваемый.
    5. Для параметра Ссылка на удостоверение выберите хранилище.

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

Следующие шаги