Skip to main content

Identidade gerenciada do Azure com BYOK

O BYOK (Bring Your Own Key - traga sua própria chave) do SDK GitHub Copilot dá suporte a chaves de API estáticas, mas as implantações Azure geralmente usam Identidade Gerenciada (Microsoft Entra ID) em vez de chaves de longa duração. O SDK do GitHub Copilot foi projetado para compor com o SDK de Identidade do Azure para obter flexibilidade máxima. Forneça um callback do provedor de token Bearer capaz de buscar tokens atualizados sob demanda usando uma API do SDK do Azure Identity.

Este guia mostra como usar APIs do SDK de Identidade do Azure para autenticar com modelos do Microsoft Foundry por meio do SDK do GitHub Copilot. A maioria dos idiomas usa DefaultAzureCredential; O Rust usa DeveloperToolsCredential localmente e ManagedIdentityCredential em Azure.

Como funciona

O ponto de extremidade do Microsoft Foundry compatível com OpenAI (https://<resource-name>.openai.azure.com/openai/v1/) aceita tokens bearer do Microsoft Entra ID em vez de chaves de API estáticas. Este guia usa uma função de callback do provedor de tokens para que o runtime do SDK do GitHub Copilot possa solicitar novos tokens sob demanda.

Usando Python como exemplo, o fluxo é:

  1. Configure DefaultAzureCredential para seu ambiente.
  2. Passe uma função de callback, em bearer_token_provider da configuração do provedor BYOK, que usa DefaultAzureCredential para obter um token para o escopo https://ai.azure.com/.default.
  3. Permita que o SDK do GitHub Copilot solicite tokens novos sob demanda por meio desse callback.

Diagrama: diagrama de sequência mostrando o processo descrito.

Exemplos de código

Pré-requisitos

Instale os pacotes do SDK do Azure Identity e GitHub Copilot para seu idioma:

Idiomas de código navigation

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

Use uma função de callback do provedor de token

Use esta abordagem quando você quiser que o runtime do SDK do GitHub Copilot solicite novos tokens sob demanda por meio de uma função de callback fornecida. O SDK de Identidade do Azure manipula o cache de token e o tempo de atualização.

Aqui estão implementações específicas do idioma:

Idiomas de código 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);

Configuração do ambiente

VariableDescriptionExample
AZURE_TOKEN_CREDENTIALSAo executar em Azure, defina-o como ManagedIdentityCredential. Ao executar localmente, configure-o para usar dev ou um nome de credencial de ferramenta de desenvolvedor, como AzureCliCredential.ManagedIdentityCredential
AZURE_CLIENT_ID
Opcional. Ao executar em Azure, defina-a como a ID do cliente de uma Identidade Gerenciada atribuída pelo usuário ao usar ManagedIdentityCredential. Se não estiver definido, Azure usará a Identidade Gerenciada atribuída pelo sistema.11111111-2222-3333-4444-555555555555
FOUNDRY_RESOURCE_URLA URL do recurso Microsoft Foundryhttps://<my-resource>.openai.azure.com

Nenhuma variável de ambiente de chave de API é necessária– a autenticação é tratada por credenciais de identidade Azure. Em .NET, Go, Java, Python e TypeScript, DefaultAzureCredential oferece suporte automático a:

  • Identidade Gerenciada (atribuída pelo sistema ou atribuída pelo usuário): para aplicativos hospedados Azure
  • CLI do Azure (az login): para desenvolvimento local
  • Variáveis de ambiente (AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET): para entidades de serviço
  • Identidade da carga de trabalho: para Kubernetes

Em .NET, Go, Java, Python e TypeScript, ManagedIdentityCredentialAZURE_CLIENT_ID para selecionar uma Identidade Gerenciada atribuída pelo usuário. Rust é uma exceção neste guia.

No Rust, use DeveloperToolsCredential para desenvolvimento local e ManagedIdentityCredential ao executar em Azure. Para outros idiomas, consulte a documentação em DefaultAzureCredential sobre a cadeia completa de credenciais:

Quando usar esse padrão

ScenarioRecomendação
Aplicativo hospedado no Azure com Identidade Gerenciada
✅ Usar esse padrão
Aplicativo com entidade de serviço Microsoft Entra existente
✅ Usar esse padrão
Desenvolvimento local com az login
✅ Usar esse padrão
Ambiente não Azure com chave de API estáticaUsar BYOK (Bring Your Own Key - traga sua própria chave)
GitHub Copilot assinatura disponívelUsar Configuração do OAuth do GitHub

Consulte também