Uwierzytelnianie i autoryzacja usług AI platformy Azure przy użyciu platformy .NET
Żądania aplikacji do usług Azure AI muszą być uwierzytelnione. W tym artykule przedstawiono opcje dostępne do uwierzytelniania w usłudze Azure OpenAI i innych usługach sztucznej inteligencji przy użyciu platformy .NET. Te pojęcia dotyczą zestawu SDK jądra semantycznego, a także zestawów SDK z określonych usług, takich jak Azure OpenAI. Większość usług sztucznej inteligencji oferuje dwa podstawowe sposoby uwierzytelniania aplikacji i użytkowników:
- Uwierzytelnianie oparte na kluczach zapewnia dostęp do usługi platformy Azure przy użyciu wartości klucza tajnego. Te wartości wpisów tajnych są czasami nazywane kluczami interfejsu API lub kluczami dostępu w zależności od usługi.
- Microsoft Entra ID zapewnia kompleksowe rozwiązanie do zarządzania tożsamościami i dostępem, aby upewnić się, że prawidłowe tożsamości mają prawidłowy poziom dostępu do różnych zasobów platformy Azure.
W kolejnych sekcjach przedstawiono koncepcyjne omówienie tych dwóch podejść, a nie szczegółowe kroki implementacji. Aby uzyskać bardziej szczegółowe informacje na temat nawiązywania połączenia z usługami platformy Azure, odwiedź następujące zasoby:
- Uwierzytelnianie aplikacji platformy .NET w usługach platformy Azure
- Podstawy obsługi tożsamości
- Co to jest kontrola dostępu oparta na rolach platformy Azure?
Uwaga
Przykłady w tym artykule koncentrują się głównie na połączeniach z usługą Azure OpenAI, ale te same pojęcia i kroki implementacji dotyczą bezpośrednio wielu innych usług azure AI.
Uwierzytelnianie przy użyciu kluczy
Klucze dostępu umożliwiają aplikacjom i narzędziom uwierzytelnianie w usłudze Azure AI, takiej jak Azure OpenAI, przy użyciu klucza tajnego dostarczonego przez usługę. Pobierz klucz tajny przy użyciu narzędzi, takich jak witryna Azure Portal lub interfejs wiersza polecenia platformy Azure, i użyj go do skonfigurowania kodu aplikacji w celu nawiązania połączenia z usługą sztucznej inteligencji:
builder.Services.AddAzureOpenAIChatCompletion(
"deployment-model",
"service-endpoint",
"service-key"); // Secret key
var kernel = builder.Build();
Używanie kluczy jest prostą opcją, ale takie podejście powinno być stosowane ostrożnie. Klucze nie są zalecaną opcją uwierzytelniania, ponieważ:
- Nie przestrzegaj zasady najniższych uprawnień — zapewniają podwyższone uprawnienia niezależnie od tego, kto z nich korzysta lub jakiego zadania.
- Może zostać przypadkowo zaewidencjonowany w kontroli źródła lub przechowywany w niebezpiecznych lokalizacjach.
- Można łatwo udostępniać lub wysyłać do stron, które nie powinny mieć dostępu.
- Często wymagają ręcznego administrowania i rotacji.
Zamiast tego rozważ użycie identyfikatora Entra firmy Microsoft do uwierzytelniania, które jest zalecanym rozwiązaniem dla większości scenariuszy.
Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft
Microsoft Entra ID to oparta na chmurze usługa zarządzania tożsamościami i dostępem, która udostępnia szeroki zestaw funkcji dla różnych scenariuszy biznesowych i aplikacji. Microsoft Entra ID to zalecane rozwiązanie do nawiązywania połączenia z usługą Azure OpenAI i innymi usługami sztucznej inteligencji oraz zapewnia następujące korzyści:
- Uwierzytelnianie bez klucza przy użyciu tożsamości.
- Kontrola dostępu oparta na rolach (RBAC) w celu przypisania tożsamości minimalnych wymaganych uprawnień.
- Może używać
Azure.Identity
biblioteki klienta do wykrywania różnych poświadczeń w środowiskach bez konieczności wprowadzania zmian w kodzie. - Automatycznie obsługuje zadania konserwacji administracyjnej, takie jak rotacja kluczy bazowych.
Przepływ pracy implementowania uwierzytelniania firmy Microsoft Entra w aplikacji zwykle obejmuje następujące elementy:
Programowanie lokalne:
- Zaloguj się do platformy Azure przy użyciu lokalnego narzędzia deweloperskiego, takiego jak interfejs wiersza polecenia platformy Azure lub program Visual Studio.
- Skonfiguruj kod tak, aby używał
Azure.Identity
biblioteki klienta iDefaultAzureCredential
klasy. - Przypisz role platformy Azure do zalogowanego konta, aby umożliwić dostęp do usługi sztucznej inteligencji.
Aplikacja hostowana na platformie Azure:
- Wdróż aplikację na platformie Azure po skonfigurowaniu
Azure.Identity
jej do uwierzytelniania przy użyciu biblioteki klienta. - Przypisz tożsamość zarządzaną do aplikacji hostowanej na platformie Azure.
- Przypisz role platformy Azure do tożsamości zarządzanej, aby umożliwić dostęp do usługi sztucznej inteligencji.
- Wdróż aplikację na platformie Azure po skonfigurowaniu
Kluczowe pojęcia dotyczące tego przepływu pracy zostały opisane w poniższych sekcjach.
Uwierzytelnianie na platformie Azure lokalnie
Podczas lokalnego tworzenia aplikacji łączących się z usługami azure AI uwierzytelniaj się na platformie Azure przy użyciu narzędzia takiego jak Visual Studio lub interfejs wiersza polecenia platformy Azure. Poświadczenia lokalne można odnaleźć za pomocą Azure.Identity
biblioteki klienta i użyć jej do uwierzytelniania aplikacji w usługach platformy Azure, zgodnie z opisem w sekcji Konfigurowanie kodu aplikacji.
Na przykład aby uwierzytelnić się na platformie Azure lokalnie przy użyciu interfejsu wiersza polecenia platformy Azure, uruchom następujące polecenie:
az login
Konfigurowanie kodu aplikacji
Azure.Identity
Użyj biblioteki klienta z zestawu Azure SDK, aby zaimplementować uwierzytelnianie firmy Microsoft Entra w kodzie. Biblioteki Azure.Identity
obejmują klasę DefaultAzureCredential
, która automatycznie odnajduje dostępne poświadczenia platformy Azure w oparciu o bieżące środowisko i dostępne narzędzia. Odwiedź dokumentację zestawu Azure SDK dla platformy .NET , aby zapoznać się z pełnym zestawem obsługiwanych poświadczeń środowiska i kolejności wyszukiwania.
Na przykład skonfiguruj jądro semantyczne do uwierzytelniania przy użyciu DefaultAzureCredential
następującego kodu:
Kernel kernel = Kernel
.CreateBuilder()
.AddAzureOpenAITextGeneration(
"your-model",
"your-endpoint",
new DefaultAzureCredential())
.Build();
DefaultAzureCredential
umożliwia podwyższenie poziomu aplikacji z lokalnego programowania do środowiska produkcyjnego bez zmian kodu. Na przykład podczas programowania DefaultAzureCredential
poświadczenia użytkownika lokalnego z programu Visual Studio lub interfejsu wiersza polecenia platformy Azure są używane do uwierzytelniania w usłudze sztucznej inteligencji. Po wdrożeniu aplikacji na platformie Azure DefaultAzureCredential
używa tożsamości zarządzanej przypisanej do aplikacji.
Przypisywanie ról do tożsamości
Kontrola dostępu oparta na rolach platformy Azure (RBAC) platformy Azure to system, który zapewnia szczegółowe zarządzanie dostępem do zasobów platformy Azure. Przypisz rolę do podmiotu zabezpieczeń używanego przez DefaultAzureCredential
usługę azure AI, niezależnie od tego, czy jest to indywidualny użytkownik, grupa, jednostka usługi, czy tożsamość zarządzana. Role platformy Azure to kolekcja uprawnień, które umożliwiają tożsamości wykonywanie różnych zadań, takich jak generowanie uzupełniania lub tworzenie i usuwanie zasobów.
Przypisz role, takie jak Użytkownik openAI usług Cognitive Services (identyfikator roli: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
) do odpowiedniej tożsamości przy użyciu narzędzi, takich jak interfejs wiersza polecenia platformy Azure, Bicep lub witryna Azure Portal. Na przykład użyj polecenia , az role assignment create
aby przypisać rolę przy użyciu interfejsu wiersza polecenia platformy Azure:
az role assignment create \
--role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
--assignee-object-id "$PRINCIPAL_ID" \
--scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
--assignee-principal-type User
Dowiedz się więcej o kontroli dostępu opartej na rolach platformy Azure przy użyciu następujących zasobów:
- Co to jest kontrola dostępu oparta na rolach platformy Azure?
- Udzielanie użytkownikowi dostępu
- Najlepsze rozwiązania dotyczące kontroli dostępu opartej na rolach
Przypisywanie tożsamości zarządzanej do aplikacji
W większości scenariuszy aplikacje hostowane na platformie Azure powinny używać tożsamości zarządzanej do łączenia się z innymi usługami, takimi jak Azure OpenAI. Tożsamości zarządzane zapewniają w pełni zarządzaną tożsamość w usłudze Microsoft Entra ID dla aplikacji do użycia podczas nawiązywania połączenia z zasobami obsługującymi uwierzytelnianie firmy Microsoft Entra. DefaultAzureCredential
odnajduje tożsamość skojarzona z aplikacją i używa jej do uwierzytelniania w innych usługach platformy Azure.
Istnieją dwa typy tożsamości zarządzanych, które można przypisać do aplikacji:
- Tożsamość przypisana przez system jest powiązana z aplikacją i jest usuwana, gdy aplikacja zostanie usunięta. Aplikacja może mieć tylko jedną tożsamość przypisaną przez system.
- Tożsamość przypisana przez użytkownika to autonomiczny zasób platformy Azure, który można przypisać do aplikacji. Aplikacja może mieć wiele tożsamości przypisanych przez użytkownika.
Przypisz role do tożsamości zarządzanej tak samo jak pojedyncze konto użytkownika, takie jak rola użytkownika openAI usług Cognitive Services. Dowiedz się więcej na temat pracy z tożsamościami zarządzanymi przy użyciu następujących zasobów: