Проверка подлинности решений пакетного управления с помощью Microsoft Entra ID

Приложения, которые вызывают службу управления пакетная служба Azure, проходят проверку подлинности с помощью Microsoft Entra ID — многоарендной облачной службы каталогов и управления удостоверениями корпорации Microsoft. Azure сама использует Microsoft Entra ID для проверки подлинности своих клиентов, администраторов служб и пользователей организации.

Рекомендуемый способ аутентификации приложений для управления Batch — использовать клиентскую библиотеку Azure Identity client library вместе с библиотекой управления Azure.ResourceManager.Batch. Библиотека Azure Identity предоставляет классы учетных данных на основе токенов (например, DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential и InteractiveBrowserCredential), которые работают единообразно независимо от того, выполняется ли приложение локально, в Azure или в локальной среде. Обзор рекомендуемых стратегий аутентификации см. в статье Аутентификация приложений .NET для служб Azure с помощью библиотеки Azure Identity.

Библиотека Azure.ResourceManager.Batch предоставляет типы для управления учетными записями Batch, ключами учетных записей, приложениями и пакетами приложений. Это клиент поставщика ресурсов Azure и работает вместе с Azure Resource Manager для программного управления этими ресурсами. Microsoft Entra ID требуется для проверки подлинности запросов, выполненных через любой клиент поставщика ресурсов Azure, включая эту библиотеку.

Note

Устаревшие пакеты Microsoft.Azure.Management.Batch и шаблоны кода на основе ADAL (AuthenticationContext.AcquireToken) устарели. Новый код должен использовать Azure.ResourceManager.Batch с учетными данными Azure.Identity.

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

Зарегистрировать приложение (необязательно)

Необходимо ли зарегистрировать отдельное приложение Microsoft Entra зависит от используемого типа учетных данных:

  • Если вы используете DefaultAzureCredential и выполняете вход с помощью средства разработчика (Azure CLI, Azure PowerShell, Visual Studio или Visual Studio Code), либо приложение работает на ресурсе Azure с управляемым удостоверением, вам не нужно зарегистрировать отдельное приложение. Эти учетные данные используют идентификатор, уже настроенный в этой среде.
  • Если приложение проходит проверку подлинности в качестве субъекта-службы (например, с помощью ClientSecretCredential или ClientCertificateCredential), необходимо зарегистрировать приложение в клиенте Microsoft Entra.

Чтобы зарегистрировать приложение, выполните действия, описанные в Quickstart: регистрация приложения с помощью платформа удостоверений Майкрософт. После регистрации Microsoft Entra ID предоставляет идентификатор приложения (клиента), который используется во время выполнения. Для получения дополнительной информации см. Объекты приложения и учетной записи службы в Microsoft Entra ID.

Назначение разрешений Azure RBAC

После того как вы решите, какое удостоверение использует ваше приложение (учетная запись разработчика, управляемое удостоверение или субъект-служба), назначьте этому удостоверению необходимые разрешения управления доступом Azure на основе ролей (RBAC) для группы ресурсов или подписки, в которой вы управляете учетными записями Batch. К распространенным встроенным ролям относятся Участник, Участник учетной записи пакетная служба Azure и Читатель.

Инструкции см. в статье Назначение ролей Azure с помощью портала Azure.

Проверка подлинности с помощью библиотеки удостоверений Azure

При использовании Azure.Identity и Azure.ResourceManager.Batch вам не нужно вручную указывать конечные точки Microsoft Entra, URI ресурсов или URI перенаправления — эти учетные данные автоматически выполняют получение, кэширование и обновление токенов.

  1. Установите необходимые пакеты NuGet:

    dotnet add package Azure.Identity
    dotnet add package Azure.ResourceManager.Batch
    
  2. Добавьте следующие using инструкции в код:

    using Azure.Identity;
    using Azure.ResourceManager;
    using Azure.ResourceManager.Batch;
    
  3. Создайте учетные данные и передайте их в ArmClient. Используйте клиент для получения списка учетных записей Batch и управления ими.

    Рекомендуется: DefaultAzureCredential — работает локально с учетными данными для входа в инструменты разработчика (Azure CLI, Visual Studio, Visual Studio Code) и автоматически использует управляемый идентификатор при запуске приложения в Azure:

    ArmClient arm = new ArmClient(new DefaultAzureCredential());
    
    SubscriptionResource subscription = await arm.GetDefaultSubscriptionAsync();
    await foreach (BatchAccountResource account in subscription.GetBatchAccountsAsync())
    {
        Console.WriteLine(account.Data.Name);
    }
    

    Интерактивный (интегрированный) вход — предлагает пользователю войти через системный браузер. Используйте это, когда приложение должно проходить проверку подлинности конкретного пользователя в интерактивном режиме:

    var credential = new InteractiveBrowserCredential(
        new InteractiveBrowserCredentialOptions
        {
            TenantId = "<tenant-id>",
            ClientId = "<application-id>",      // optional; required only if you registered your own app
            RedirectUri = new Uri("http://localhost")
        });
    
    ArmClient arm = new ArmClient(credential);
    

    Субъект-служба (секрет клиента) — используется для автономных приложений, которые проходят аутентификацию с использованием секрета регистрации приложения:

    var credential = new ClientSecretCredential(
        tenantId: "<tenant-id>",
        clientId: "<application-id>",
        clientSecret: "<client-secret>");
    
    ArmClient arm = new ArmClient(credential);
    

    Управляемое удостоверение — используйте, если приложение выполняется в ресурсе Azure (например, на виртуальной машине, в службе приложений или в контейнерном приложении), которому назначено управляемое удостоверение, назначаемое системой или пользователем:

    // System-assigned managed identity
    var credential = new ManagedIdentityCredential();
    
    // Or, user-assigned managed identity
    // var credential = new ManagedIdentityCredential(clientId: "<user-assigned-client-id>");
    
    ArmClient arm = new ArmClient(credential);
    

Учетные данные прозрачно кэшируют и обновляют токены, поэтому вы можете поддерживать ArmClient и ресурсы управления Batch в рабочем состоянии на протяжении всего времени работы приложения.

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