Skip to main content

управляемое удостоверение Azure с помощью BYOK

БЁК (принеси свой ключ) пакета SDK GitHub Copilot поддерживает статические ключи API, но Azure развертывания часто используют управляемое удостоверение (Microsoft Entra ID) вместо долгоживущего ключа. Пакет SDK GitHub Copilot предназначен для создания с помощью пакета SDK Azure Identity SDK для обеспечения максимальной гибкости. Предоставьте обратный вызов поставщика маркеров носителя, который может получать новые маркеры по запросу с помощью API пакета SDK для Azure идентификации.

В этом руководстве показано, как использовать API пакета SDK Azure identity SDK для проверки подлинности с помощью моделей Microsoft Foundry с помощью пакета SDK GitHub Copilot. Большинство языков используетсяDefaultAzureCredential; Rust используется DeveloperToolsCredential локально и ManagedIdentityCredential в Azure.

Принцип работы

Microsoft конечная точка OpenAI, совместимая с OpenAI,https://<resource-name>.openai.azure.com/openai/v1/ принимает маркеры носителя из Microsoft Entra ID вместо статических ключей API. В этом руководстве используется обратный вызов поставщика маркеров, поэтому среда выполнения пакета SDK GitHub Copilot может запрашивать новые токены по запросу.

В качестве примера используется Python поток:

  1. Настройте DefaultAzureCredential среду.
  2. Передайте обратный вызов в bearer_token_provider конфигурации поставщика BYOK, которая используется DefaultAzureCredential для получения маркера для https://ai.azure.com/.default области.
  3. Пусть пакет SDK GitHub Copilot запрашивает новые маркеры по запросу через этот обратный вызов.

Диаграмма: диаграмма последовательностей, показывающая описанный процесс.

Примеры кода

Необходимые условия

Установите пакеты SDK для удостоверений Azure и GitHub Copilot для вашего языка:

Языки кода navigation

.NET
dotnet add package GitHub.Copilot.SDK
dotnet add package Azure.Core

Использование обратного вызова поставщика маркеров

Используйте этот подход, если требуется, чтобы среда выполнения пакета SDK GitHub Copilot запрашивала новые маркеры по запросу через предоставленный обратный вызов. Пакет SDK для идентификации Azure обрабатывает кэширование маркеров и время обновления.

Ниже приведены реализации, относящиеся к языку:

Языки кода navigation

.NET
using Azure.Core;
using Azure.Identity;
using GitHub.Copilot;

DefaultAzureCredential credential = new(
    DefaultAzureCredential.DefaultEnvironmentVariableName);
await using CopilotClient client = new();
string foundryUrl = Environment.GetEnvironmentVariable("FOUNDRY_RESOURCE_URL")!;

await using CopilotSession session = await client.CreateSessionAsync(new SessionConfig
{
    Model = "gpt-5.5",
    Provider = new ProviderConfig
    {
        Type = "openai",
        BaseUrl = $"{foundryUrl}/openai/v1/",
        BearerTokenProvider = async _ =>
        {
            AccessToken token = await credential.GetTokenAsync(
                new TokenRequestContext(["https://ai.azure.com/.default"]));
            return token.Token;
        },
        WireApi = "responses",
    },
});

AssistantMessageEvent? response = await session.SendAndWaitAsync(
    new MessageOptions { Prompt = "Hello from Managed Identity!" });
Console.WriteLine(response?.Data.Content);

Конфигурация среды

ПеременнаяDescriptionПример
AZURE_TOKEN_CREDENTIALSПри запуске в Azure установите на ManagedIdentityCredential. При локальном запуске установите его либо dev на имя учетных AzureCliCredentialданных инструмента разработчика, например .ManagedIdentityCredential
AZURE_CLIENT_ID
Необязательное поле. При запуске в Azure задайте для этого идентификатор клиента управляемого удостоверения, назначаемого пользователем при использованииManagedIdentityCredential. Если этот параметр не задан, Azure использует управляемое удостоверение, назначаемое системой.11111111-2222-3333-4444-555555555555
FOUNDRY_RESOURCE_URLВаш URL ресурса Microsoft Foundryhttps://<my-resource>.openai.azure.com

Переменная среды ключа API не требуется. Проверка подлинности обрабатывается учетными данными удостоверения Azure. В .NET, Go, Java, Python и TypeScript DefaultAzureCredential автоматически поддерживает следующее:

  • Управляемое удостоверение (назначаемое системой или назначаемое пользователем): для Azure размещенных приложений
  • Azure CLI (az login): для местного развития
  • Переменные среды (AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET): для принципов сервисов
  • Идентификация рабочей нагрузки: для Kubernetes

В .NET, Go, Java, Python и TypeScript ManagedIdentityCredential считываетсяAZURE_CLIENT_ID, чтобы выбрать управляемое удостоверение, назначаемое пользователем. Rust — это исключение из этого руководства.

В Rust используется DeveloperToolsCredential для локальной разработки и ManagedIdentityCredential выполнения в Azure. Сведения о других языках см. в DefaultAzureCredential документации по полной цепочке учетных данных:

Когда следует использовать этот шаблон

ScenarioRecommendation
Azure-хостируемое приложение с управляемой идентичностью
✅ Используйте этот шаблон
Приложение с существующим принципом сервиса Microsoft Entra
✅ Используйте этот шаблон
Местное развитие с az login
✅ Используйте этот шаблон
Не-Azure среда со статическим API-ключомИспользуйте автозаголовок
Доступна подписка GitHub CopilotИспользуйте автозаголовок

См. также