Skip to main content

Azure verwaltete Identität mit BYOK

Das BYOK (Bring Your Own Key) des GitHub Copilot SDK unterstützt statische API-Schlüssel, aber Azure Bereitstellungen verwenden häufig verwaltete Identität (Microsoft Entra ID) anstelle von langlebigen Schlüsseln. Das GitHub Copilot-SDK ist so konzipiert, dass es für maximale Flexibilität mit dem Azure Identity-SDK zusammenarbeitet. Stellen Sie einen Bearertokenanbieterrückruf bereit, der frische Token bei Bedarf mithilfe einer Azure Identity SDK-API abrufen kann.

In diesem Handbuch wird gezeigt, wie Sie Azure Identity SDK-APIs zum Authentifizieren mit Microsoft Foundry-Modellen über das GitHub Copilot SDK verwenden. Die meisten Sprachen verwenden DefaultAzureCredential; Rost verwendet DeveloperToolsCredential lokal und ManagedIdentityCredential in Azure.

So funktioniert es

Der OpenAI-kompatible Endpunkt von Microsoft Foundry (https://<resource-name>.openai.azure.com/openai/v1/) akzeptiert Bearer-Token von Microsoft Entra ID anstelle statischer API-Schlüssel. In diesem Handbuch wird ein Tokenanbieterrückruf verwendet, sodass die GitHub Copilot SDK-Laufzeit frische Token bei Bedarf anfordern kann.

Am Beispiel von Python ergibt sich folgender Ablauf:

  1. Konfigurieren Sie DefaultAzureCredential für Ihre Umgebung.
  2. Übergeben Sie in bearer_token_provider der BYOK-Anbieterkonfiguration einen Callback, der DefaultAzureCredential verwendet, um ein Token für den Scope https://ai.azure.com/.default abzurufen.
  3. Lassen Sie das GitHub Copilot SDK bei Bedarf über diesen Callback neue Tokens anfordern.

Diagramm: Sequenzdiagramm mit dem beschriebenen Prozess.

Codebeispiele

Voraussetzungen

Installieren Sie die Azure Identity- und GitHub Copilot SDK-Pakete für Ihre Sprache:

Codesprachen navigation

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

Verwenden Sie die Rückruffunktion eines Tokenanbieters

Verwenden Sie diesen Ansatz, wenn die GitHub Copilot SDK-Laufzeit frische Token bei Bedarf über einen von Ihnen bereitgestellten Rückruf anfordern soll. Das Azure Identity SDK übernimmt die Zwischenspeicherung von Token und die Aktualisierungszeitpunkte.

Hier sind sprachspezifische Implementierungen:

Codesprachen 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);

Umgebungskonfiguration

VariableDescriptionExample
AZURE_TOKEN_CREDENTIALSWenn sie in Azure ausgeführt wird, legen Sie sie auf ManagedIdentityCredential. Wenn es lokal ausgeführt wird, setzen Sie es entweder auf dev oder auf den Anmeldeinformationsnamen eines Entwicklertools, z. B. AzureCliCredential.ManagedIdentityCredential
AZURE_CLIENT_ID
Optional. Wenn sie in Azure ausgeführt wird, legen Sie dies auf die Client-ID einer vom Benutzer zugewiesenen verwalteten Identität bei Verwendung ManagedIdentityCredentialfest. Wenn nicht festgelegt, verwendet Azure die vom System zugewiesene verwaltete Identität.11111111-2222-3333-4444-555555555555
FOUNDRY_RESOURCE_URLURL Ihrer Microsoft Foundry-Ressourcehttps://<my-resource>.openai.azure.com

Es ist keine API-Schlüsselumgebungsvariable erforderlich – die Authentifizierung wird von Azure Identitätsanmeldeinformationen behandelt. In .NET unterstützt Go, Java, Python und TypeScript DefaultAzureCredential automatisch Folgendes:

  • Verwaltete Identität (vom System zugewiesen oder vom Benutzer zugewiesen): für Azure gehostete Apps
  • Azure CLI (az login): für die lokale Entwicklung
  • Umgebungsvariablen (AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET): für Dienstprinzipale
  • Workload-Identität: für Kubernetes

In .NET, Go, Java, Python und TypeScript liest ManagedIdentityCredential``AZURE_CLIENT_ID, um eine benutzerzugewiesene verwaltete Identität auszuwählen. Rost ist eine Ausnahme in dieser Anleitung.

Verwenden Sie DeveloperToolsCredential in Rust für die lokale Entwicklung und ManagedIdentityCredential bei der Ausführung in Azure. Für andere Sprachen finden Sie in der DefaultAzureCredential Dokumentation die vollständige Kette der Anmeldeinformationen:

Wann dieses Muster verwenden

SzenarioRecommendation
Von Azure gehostete App mit verwalteter Identität
✅ Verwenden Sie dieses Muster.
App mit einem vorhandenen Microsoft Entra-Dienstprinzipal
✅ Verwenden Sie dieses Muster.
Lokale Entwicklung mit az login
✅ Verwenden Sie dieses Muster.
Nicht-Azure-Umgebung mit statischem API-SchlüsselVerwenden von BYOK (Bring Your Own Key)
GitHub Copilot Abonnement verfügbarVerwenden von Einrichtung von GitHub OAuth

Siehe auch