Konfigurowanie uwierzytelniania bez klucza przy użyciu identyfikatora Entra firmy Microsoft
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Modele wdrożone w wnioskowaniu modelu AI platformy Azure w usługach Azure AI obsługują autoryzację bez klucza przy użyciu identyfikatora Entra firmy Microsoft. Autoryzacja bez klucza zwiększa bezpieczeństwo, upraszcza środowisko użytkownika, zmniejsza złożoność operacyjną i zapewnia niezawodną obsługę zgodności dla nowoczesnego programowania. To sprawia, że jest to silny wybór dla organizacji przyjmujących bezpieczne i skalowalne rozwiązania do zarządzania tożsamościami.
W tym artykule wyjaśniono, jak skonfigurować identyfikator entra firmy Microsoft na potrzeby wnioskowania w wnioskowaniu modelu AI platformy Azure.
Omówienie ról w kontekście zasobu na platformie Azure
Microsoft Entra ID używa idei kontroli dostępu opartej na rolach (RBAC) do autoryzacji. Role są centralne do zarządzania dostępem do zasobów w chmurze. Rola jest zasadniczo kolekcją uprawnień definiujących akcje, które mogą być wykonywane na określonych zasobach platformy Azure. Przypisując role użytkownikom, grupom, jednostkom usługi lub tożsamościom zarządzanym — zbiorczo znanym jako podmioty zabezpieczeń — możesz kontrolować ich dostęp w środowisku platformy Azure do określonych zasobów.
Po przypisaniu roli należy określić podmiot zabezpieczeń, definicję roli i zakres. Ta kombinacja jest znana jako przypisanie roli. Wnioskowanie modelu sztucznej inteligencji platformy Azure to funkcja zasobów usług Azure AI Services, a tym samym role przypisane do tego konkretnego zasobu kontrolują dostęp do wnioskowania.
Identyfikujesz dwa różne typy dostępu do zasobów:
Dostęp administracyjny: akcje powiązane z administrowanie zasobem. Zwykle zmieniają stan zasobu i jego konfiguracji. Na platformie Azure te operacje są operacjami płaszczyzny sterowania i można je wykonywać przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub infrastruktury jako kodu. Przykłady obejmują tworzenie nowych wdrożeń modelu, zmienianie konfiguracji filtrowania zawartości, zmianę obsługiwanej wersji modelu lub zmianę jednostki SKU wdrożenia.
Dostęp dewelopera: akcje związane z użyciem zasobów. Na przykład wywoływanie interfejsu API uzupełniania czatów. Jednak użytkownik nie może zmienić stanu zasobu i jego konfiguracji.
Na platformie Azure operacje administracyjne są zawsze wykonywane przy użyciu identyfikatora Entra firmy Microsoft. Role, takie jak Współautor usług Cognitive Services, umożliwiają wykonywanie tych operacji. Z drugiej strony operacje deweloperów można wykonywać przy użyciu kluczy dostępu lub/i identyfikatora Entra firmy Microsoft. Role, takie jak Użytkownik usług Cognitive Services, umożliwiają wykonywanie tych operacji.
Ważne
Posiadanie dostępu administracyjnego do zasobu nie musi przyznać deweloperowi dostępu do niego. Jawny dostęp przez przyznanie ról jest nadal wymagany. Podobnie jak serwery baz danych działają. Posiadanie dostępu administratora do serwera bazy danych nie oznacza, że możesz odczytywać dane wewnątrz bazy danych.
Wykonaj następujące kroki, aby skonfigurować dostęp dewelopera do wnioskowania modelu AI platformy Azure w zasobie usług Azure AI Services.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Subskrypcja Azure. Jeśli używasz modeli Usługi GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if it's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Konto z uprawnieniami
Microsoft.Authorization/roleAssignments/write
iMicrosoft.Authorization/roleAssignments/delete
, takie jak kontrola dostępu oparta na rolach administratora .Aby przypisać rolę, należy określić trzy elementy:
- Podmiot zabezpieczeń: np. konto użytkownika.
- Definicja roli: rola użytkownika usług Cognitive Services.
- Zakres: zasób usług Azure AI Services.
Konfigurowanie identyfikatora entra firmy Microsoft na potrzeby wnioskowania
Wykonaj następujące kroki, aby skonfigurować identyfikator entra firmy Microsoft na potrzeby wnioskowania:
Przejdź do witryny Azure Portal i znajdź używany zasób usług Azure AI Services. Jeśli używasz usługi Azure AI Foundry z projektami lub koncentratorami, możesz przejść do niej, wykonując następujące czynności:
Przejdź do portalu usługi Azure AI Foundry.
Na stronie docelowej wybierz pozycję Otwórz centrum zarządzania.
Przejdź do sekcji Połączone zasoby i wybierz połączenie z zasobem usług Azure AI Services, które chcesz skonfigurować. Jeśli nie ma go na liście, wybierz pozycję Wyświetl wszystko , aby wyświetlić pełną listę.
W sekcji Szczegóły połączenia w obszarze Zasób wybierz nazwę zasobu platformy Azure. Otworzy się nowa strona.
Jesteś teraz w witrynie Azure Portal , w której możesz zarządzać wszystkimi aspektami samego zasobu.
Na lewym pasku nawigacyjnym wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Napiwek
Użyj opcji Wyświetl mój dostęp, aby sprawdzić, które role są już przypisane do Ciebie.
Wybierz pozycję Przypisania ról, a następnie wybierz pozycję Dodaj>przypisanie roli.
W obszarze Role funkcji zadania wpisz Cognitive Services User.On Job function roles (Role funkcji Zadania) wpisz Cognitive Services User (Użytkownik usług Cognitive Services). Lista ról jest filtrowana.
Wybierz rolę i wybierz pozycję Dalej.
W obszarze Członkowie wybierz użytkownika lub grupę, do której chcesz udzielić dostępu. Zalecamy używanie grup zabezpieczeń zawsze, gdy jest to możliwe, ponieważ są one łatwiejsze do zarządzania i konserwacji.
Wybierz pozycję Dalej i zakończ pracę kreatora.
Wybrany użytkownik może teraz używać identyfikatora Entra firmy Microsoft do wnioskowania.
Napiwek
Pamiętaj, że propagacja przypisań ról platformy Azure może potrwać do pięciu minut. Podczas pracy z grupami zabezpieczeń dodawanie lub usuwanie użytkowników z grupy zabezpieczeń jest natychmiast propagowane.
Zwróć uwagę, że dostęp oparty na kluczach jest nadal możliwy dla użytkowników, którzy mają już dostępne klucze. Jeśli chcesz odwołać klucze, w witrynie Azure Portal po lewej stronie wybierz pozycję Klucze zarządzania>zasobami>i punkty końcowe Ponownie wygeneruj klucz1 i Ponownie wygeneruj klucz2.
Używanie identyfikatora Entra firmy Microsoft w kodzie
Po skonfigurowaniu identyfikatora Entra firmy Microsoft w zasobie należy zaktualizować kod, aby używał go podczas korzystania z punktu końcowego wnioskowania. W poniższym przykładzie pokazano, jak używać modelu uzupełniania czatów:
Zainstaluj pakiet azure-ai-inference
przy użyciu menedżera pakietów, takiego jak:
pip install azure-ai-inference>=1.0.0b5
Ostrzeżenie
Zasób usług Azure AI Services wymaga wersji azure-ai-inference>=1.0.0b5
języka Python.
Następnie możesz użyć pakietu do korzystania z modelu. W poniższym przykładzie pokazano, jak utworzyć klienta w celu korzystania z uzupełniania czatu przy użyciu identyfikatora Entra:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
model="mistral-large-2407",
)
Opcje poświadczeń podczas korzystania z identyfikatora Entra firmy Microsoft
DefaultAzureCredential
jest uporządkowaną sekwencją mechanizmów uwierzytelniania w usłudze Microsoft Entra ID. Każdy mechanizm uwierzytelniania jest klasą pochodzącą z TokenCredential
klasy i jest nazywana poświadczeniami. W czasie wykonywania DefaultAzureCredential
próbuje uwierzytelnić się przy użyciu pierwszego poświadczenia. Jeśli to poświadczenie nie może uzyskać tokenu dostępu, zostanie podjęta próba następnego poświadczenia w sekwencji itd., dopóki token dostępu nie zostanie pomyślnie uzyskany. W ten sposób aplikacja może używać różnych poświadczeń w różnych środowiskach bez konieczności pisania kodu specyficznego dla środowiska.
Po uruchomieniu poprzedniego kodu na lokalnej stacji roboczej programistycznej w zmiennych środowiskowych dla jednostki usługi aplikacji lub w lokalnie zainstalowanych narzędziach deweloperskich, takich jak Program Visual Studio, dla zestawu poświadczeń dewelopera. Jedną z metod można użyć do uwierzytelniania aplikacji w zasobach platformy Azure podczas programowania lokalnego.
Po wdrożeniu na platformie Azure ten sam kod może również uwierzytelniać aplikację w innych zasobach platformy Azure.
DefaultAzureCredential
program może automatycznie pobierać ustawienia środowiska i konfiguracje tożsamości zarządzanej w celu automatycznego uwierzytelniania w innych usługach.
Najlepsze rozwiązania
Użyj poświadczeń deterministycznych w środowiskach produkcyjnych: zdecydowanie rozważ przejście z jednego z
DefaultAzureCredential
następujących rozwiązań deterministycznych w środowiskach produkcyjnych:-
TokenCredential
Konkretna implementacja, taka jakManagedIdentityCredential
. Zobacz listę pochodną , aby uzyskać opcje. - Implementacja pared-down
ChainedTokenCredential
zoptymalizowana pod kątem środowiska platformy Azure, w którym działa aplikacja.ChainedTokenCredential
zasadniczo tworzy określoną listę dozwolonych dopuszczalnych opcji poświadczeń, takich jakManagedIdentity
środowisko produkcyjne iVisualStudioCredential
programowanie.
-
Skonfiguruj tożsamości zarządzane przypisane przez system lub przypisane przez użytkownika do zasobów platformy Azure, w których kod jest uruchomiony, jeśli to możliwe. Skonfiguruj dostęp identyfikatora Entra firmy Microsoft do tych określonych tożsamości.
Używanie identyfikatora Entra firmy Microsoft w projekcie
Nawet jeśli zasób ma skonfigurowany identyfikator Entra firmy Microsoft, projekty mogą nadal używać kluczy do korzystania z przewidywań z zasobu. W przypadku korzystania z placu zabaw rozwiązania Azure AI Foundry używane są poświadczenia skojarzone z połączeniem, z którego korzysta projekt.
Aby zmienić to zachowanie, musisz zaktualizować połączenia z projektów, aby używać identyfikatora Entra firmy Microsoft. Wykonaj te kroki:
Przejdź do portalu usługi Azure AI Foundry.
Przejdź do projektów lub centrów korzystających z zasobu usług Azure AI Za pośrednictwem połączenia.
Wybierz pozycję Centrum zarządzania.
Przejdź do sekcji Połączone zasoby i wybierz połączenie z zasobem usług Azure AI Services, które chcesz skonfigurować. Jeśli nie ma go na liście, wybierz pozycję Wyświetl wszystko , aby wyświetlić pełną listę.
W sekcji Szczegóły połączenia obok pozycji Szczegóły dostępu wybierz ikonę edycji.
W obszarze Uwierzytelnianie zmień wartość na Microsoft Entra ID.
Wybierz Aktualizuj.
Połączenie jest teraz skonfigurowane do pracy z identyfikatorem Entra firmy Microsoft.
Wyłączanie uwierzytelniania opartego na kluczach w zasobie
Wyłączenie uwierzytelniania opartego na kluczach jest zalecane w przypadku zaimplementowania identyfikatora Entra firmy Microsoft i pełnego rozwiązania problemów dotyczących zgodności lub rezerwowych we wszystkich aplikacjach korzystających z usługi.
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Modele wdrożone w wnioskowaniu modelu AI platformy Azure w usługach Azure AI obsługują autoryzację bez klucza przy użyciu identyfikatora Entra firmy Microsoft. Autoryzacja bez klucza zwiększa bezpieczeństwo, upraszcza środowisko użytkownika, zmniejsza złożoność operacyjną i zapewnia niezawodną obsługę zgodności dla nowoczesnego programowania. To sprawia, że jest to silny wybór dla organizacji przyjmujących bezpieczne i skalowalne rozwiązania do zarządzania tożsamościami.
W tym artykule wyjaśniono, jak skonfigurować identyfikator entra firmy Microsoft na potrzeby wnioskowania w wnioskowaniu modelu AI platformy Azure.
Omówienie ról w kontekście zasobu na platformie Azure
Microsoft Entra ID używa idei kontroli dostępu opartej na rolach (RBAC) do autoryzacji. Role są centralne do zarządzania dostępem do zasobów w chmurze. Rola jest zasadniczo kolekcją uprawnień definiujących akcje, które mogą być wykonywane na określonych zasobach platformy Azure. Przypisując role użytkownikom, grupom, jednostkom usługi lub tożsamościom zarządzanym — zbiorczo znanym jako podmioty zabezpieczeń — możesz kontrolować ich dostęp w środowisku platformy Azure do określonych zasobów.
Po przypisaniu roli należy określić podmiot zabezpieczeń, definicję roli i zakres. Ta kombinacja jest znana jako przypisanie roli. Wnioskowanie modelu sztucznej inteligencji platformy Azure to funkcja zasobów usług Azure AI Services, a tym samym role przypisane do tego konkretnego zasobu kontrolują dostęp do wnioskowania.
Identyfikujesz dwa różne typy dostępu do zasobów:
Dostęp administracyjny: akcje powiązane z administrowanie zasobem. Zwykle zmieniają stan zasobu i jego konfiguracji. Na platformie Azure te operacje są operacjami płaszczyzny sterowania i można je wykonywać przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub infrastruktury jako kodu. Przykłady obejmują tworzenie nowych wdrożeń modelu, zmienianie konfiguracji filtrowania zawartości, zmianę obsługiwanej wersji modelu lub zmianę jednostki SKU wdrożenia.
Dostęp dewelopera: akcje związane z użyciem zasobów. Na przykład wywoływanie interfejsu API uzupełniania czatów. Jednak użytkownik nie może zmienić stanu zasobu i jego konfiguracji.
Na platformie Azure operacje administracyjne są zawsze wykonywane przy użyciu identyfikatora Entra firmy Microsoft. Role, takie jak Współautor usług Cognitive Services, umożliwiają wykonywanie tych operacji. Z drugiej strony operacje deweloperów można wykonywać przy użyciu kluczy dostępu lub/i identyfikatora Entra firmy Microsoft. Role, takie jak Użytkownik usług Cognitive Services, umożliwiają wykonywanie tych operacji.
Ważne
Posiadanie dostępu administracyjnego do zasobu nie musi przyznać deweloperowi dostępu do niego. Jawny dostęp przez przyznanie ról jest nadal wymagany. Podobnie jak serwery baz danych działają. Posiadanie dostępu administratora do serwera bazy danych nie oznacza, że możesz odczytywać dane wewnątrz bazy danych.
Wykonaj następujące kroki, aby skonfigurować dostęp dewelopera do wnioskowania modelu AI platformy Azure w zasobie usług Azure AI Services.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Subskrypcja Azure. Jeśli używasz modeli Usługi GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if it's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Konto z uprawnieniami
Microsoft.Authorization/roleAssignments/write
iMicrosoft.Authorization/roleAssignments/delete
, takie jak kontrola dostępu oparta na rolach administratora .Aby przypisać rolę, należy określić trzy elementy:
- Podmiot zabezpieczeń: np. konto użytkownika.
- Definicja roli: rola użytkownika usług Cognitive Services.
- Zakres: zasób usług Azure AI Services.
Zainstaluj interfejs wiersza polecenia platformy Azure.
Zidentyfikuj następujące informacje:
Identyfikator subskrypcji platformy Azure.
Nazwa zasobu usług Azure AI Services.
Grupa zasobów, w której wdrożono zasób usług Azure AI Services.
Konfigurowanie identyfikatora entra firmy Microsoft na potrzeby wnioskowania
Wykonaj następujące kroki, aby skonfigurować identyfikator entra firmy Microsoft na potrzeby wnioskowania w zasobie usług Azure AI Services:
Zaloguj się do subskrypcji platformy Azure:
az login
Jeśli masz więcej niż jedną subskrypcję, wybierz subskrypcję, w której znajduje się zasób:
az account set --subscription "<subscription-id>"
Ustaw następujące zmienne środowiskowe z nazwą zasobu usług Azure AI Services, którego chcesz użyć, i grupę zasobów.
ACCOUNT_NAME="<ai-services-resource-name>" RESOURCE_GROUP="<resource-group>"
Uzyskaj pełną nazwę zasobu:
RESOURCE_ID=$(az resource show -g $RESOURCE_GROUP -n $ACCOUNT_NAME --resource-type "Microsoft.CognitiveServices/accounts")
Pobierz identyfikator obiektu podmiotu zabezpieczeń, do którego chcesz przypisać uprawnienia. W poniższym przykładzie pokazano, jak uzyskać identyfikator obiektu skojarzony z:
Twoje własne zalogowane konto:
OBJECT_ID=$(az ad signed-in-user show --query id --output tsv)
Grupa zabezpieczeń:
OBJECT_ID=$(az ad group show --group "<group-name>" --query id --output tsv)
Jednostka usługi:
OBJECT_ID=$(az ad sp show --id "<service-principal-guid>" --query id --output tsv)
Przypisz rolę użytkownika usług Cognitive Services do jednostki usługi (w zakresie do zasobu). Przypisując rolę, udzielasz jednostce usługi dostępu do tego zasobu.
az role assignment create --assignee-object-id $OBJECT_ID --role "Cognitive Services User" --scope $RESOURCE_ID
Wybrany użytkownik może teraz używać identyfikatora Entra firmy Microsoft do wnioskowania.
Napiwek
Pamiętaj, że propagacja przypisań ról platformy Azure może potrwać do pięciu minut. Natychmiastowe propagowanie lub usuwanie użytkowników z grupy zabezpieczeń.
Używanie identyfikatora Entra firmy Microsoft w kodzie
Po skonfigurowaniu identyfikatora Entra firmy Microsoft w zasobie należy zaktualizować kod, aby używał go podczas korzystania z punktu końcowego wnioskowania. W poniższym przykładzie pokazano, jak używać modelu uzupełniania czatów:
Zainstaluj pakiet azure-ai-inference
przy użyciu menedżera pakietów, takiego jak:
pip install azure-ai-inference>=1.0.0b5
Ostrzeżenie
Zasób usług Azure AI Services wymaga wersji azure-ai-inference>=1.0.0b5
języka Python.
Następnie możesz użyć pakietu do korzystania z modelu. W poniższym przykładzie pokazano, jak utworzyć klienta w celu korzystania z uzupełniania czatu przy użyciu identyfikatora Entra:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
model="mistral-large-2407",
)
Opcje poświadczeń podczas korzystania z identyfikatora Entra firmy Microsoft
DefaultAzureCredential
jest uporządkowaną sekwencją mechanizmów uwierzytelniania w usłudze Microsoft Entra ID. Każdy mechanizm uwierzytelniania jest klasą pochodzącą z TokenCredential
klasy i jest nazywana poświadczeniami. W czasie wykonywania DefaultAzureCredential
próbuje uwierzytelnić się przy użyciu pierwszego poświadczenia. Jeśli to poświadczenie nie może uzyskać tokenu dostępu, zostanie podjęta próba następnego poświadczenia w sekwencji itd., dopóki token dostępu nie zostanie pomyślnie uzyskany. W ten sposób aplikacja może używać różnych poświadczeń w różnych środowiskach bez konieczności pisania kodu specyficznego dla środowiska.
Po uruchomieniu poprzedniego kodu na lokalnej stacji roboczej programistycznej w zmiennych środowiskowych dla jednostki usługi aplikacji lub w lokalnie zainstalowanych narzędziach deweloperskich, takich jak Program Visual Studio, dla zestawu poświadczeń dewelopera. Jedną z metod można użyć do uwierzytelniania aplikacji w zasobach platformy Azure podczas programowania lokalnego.
Po wdrożeniu na platformie Azure ten sam kod może również uwierzytelniać aplikację w innych zasobach platformy Azure.
DefaultAzureCredential
program może automatycznie pobierać ustawienia środowiska i konfiguracje tożsamości zarządzanej w celu automatycznego uwierzytelniania w innych usługach.
Najlepsze rozwiązania
Użyj poświadczeń deterministycznych w środowiskach produkcyjnych: zdecydowanie rozważ przejście z jednego z
DefaultAzureCredential
następujących rozwiązań deterministycznych w środowiskach produkcyjnych:-
TokenCredential
Konkretna implementacja, taka jakManagedIdentityCredential
. Zobacz listę pochodną , aby uzyskać opcje. - Implementacja pared-down
ChainedTokenCredential
zoptymalizowana pod kątem środowiska platformy Azure, w którym działa aplikacja.ChainedTokenCredential
zasadniczo tworzy określoną listę dozwolonych dopuszczalnych opcji poświadczeń, takich jakManagedIdentity
środowisko produkcyjne iVisualStudioCredential
programowanie.
-
Skonfiguruj tożsamości zarządzane przypisane przez system lub przypisane przez użytkownika do zasobów platformy Azure, w których kod jest uruchomiony, jeśli to możliwe. Skonfiguruj dostęp identyfikatora Entra firmy Microsoft do tych określonych tożsamości.
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Modele wdrożone w wnioskowaniu modelu AI platformy Azure w usługach Azure AI obsługują autoryzację bez klucza przy użyciu identyfikatora Entra firmy Microsoft. Autoryzacja bez klucza zwiększa bezpieczeństwo, upraszcza środowisko użytkownika, zmniejsza złożoność operacyjną i zapewnia niezawodną obsługę zgodności dla nowoczesnego programowania. To sprawia, że jest to silny wybór dla organizacji przyjmujących bezpieczne i skalowalne rozwiązania do zarządzania tożsamościami.
W tym artykule wyjaśniono, jak skonfigurować identyfikator entra firmy Microsoft na potrzeby wnioskowania w wnioskowaniu modelu AI platformy Azure.
Omówienie ról w kontekście zasobu na platformie Azure
Microsoft Entra ID używa idei kontroli dostępu opartej na rolach (RBAC) do autoryzacji. Role są centralne do zarządzania dostępem do zasobów w chmurze. Rola jest zasadniczo kolekcją uprawnień definiujących akcje, które mogą być wykonywane na określonych zasobach platformy Azure. Przypisując role użytkownikom, grupom, jednostkom usługi lub tożsamościom zarządzanym — zbiorczo znanym jako podmioty zabezpieczeń — możesz kontrolować ich dostęp w środowisku platformy Azure do określonych zasobów.
Po przypisaniu roli należy określić podmiot zabezpieczeń, definicję roli i zakres. Ta kombinacja jest znana jako przypisanie roli. Wnioskowanie modelu sztucznej inteligencji platformy Azure to funkcja zasobów usług Azure AI Services, a tym samym role przypisane do tego konkretnego zasobu kontrolują dostęp do wnioskowania.
Identyfikujesz dwa różne typy dostępu do zasobów:
Dostęp administracyjny: akcje powiązane z administrowanie zasobem. Zwykle zmieniają stan zasobu i jego konfiguracji. Na platformie Azure te operacje są operacjami płaszczyzny sterowania i można je wykonywać przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub infrastruktury jako kodu. Przykłady obejmują tworzenie nowych wdrożeń modelu, zmienianie konfiguracji filtrowania zawartości, zmianę obsługiwanej wersji modelu lub zmianę jednostki SKU wdrożenia.
Dostęp dewelopera: akcje związane z użyciem zasobów. Na przykład wywoływanie interfejsu API uzupełniania czatów. Jednak użytkownik nie może zmienić stanu zasobu i jego konfiguracji.
Na platformie Azure operacje administracyjne są zawsze wykonywane przy użyciu identyfikatora Entra firmy Microsoft. Role, takie jak Współautor usług Cognitive Services, umożliwiają wykonywanie tych operacji. Z drugiej strony operacje deweloperów można wykonywać przy użyciu kluczy dostępu lub/i identyfikatora Entra firmy Microsoft. Role, takie jak Użytkownik usług Cognitive Services, umożliwiają wykonywanie tych operacji.
Ważne
Posiadanie dostępu administracyjnego do zasobu nie musi przyznać deweloperowi dostępu do niego. Jawny dostęp przez przyznanie ról jest nadal wymagany. Podobnie jak serwery baz danych działają. Posiadanie dostępu administratora do serwera bazy danych nie oznacza, że możesz odczytywać dane wewnątrz bazy danych.
Wykonaj następujące kroki, aby skonfigurować dostęp dewelopera do wnioskowania modelu AI platformy Azure w zasobie usług Azure AI Services.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Subskrypcja Azure. Jeśli używasz modeli Usługi GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if it's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Konto z uprawnieniami
Microsoft.Authorization/roleAssignments/write
iMicrosoft.Authorization/roleAssignments/delete
, takie jak kontrola dostępu oparta na rolach administratora .Aby przypisać rolę, należy określić trzy elementy:
- Podmiot zabezpieczeń: np. konto użytkownika.
- Definicja roli: rola użytkownika usług Cognitive Services.
- Zakres: zasób usług Azure AI Services.
Zainstaluj interfejs wiersza polecenia platformy Azure.
Zidentyfikuj następujące informacje:
- Identyfikator subskrypcji platformy Azure.
Informacje o tym samouczku
Przykład w tym artykule jest oparty na przykładach kodu zawartych w repozytorium Azure-Samples/azureai-model-inference-bicep . Aby uruchomić polecenia lokalnie bez konieczności kopiowania lub wklejania zawartości pliku, użyj następujących poleceń, aby sklonować repozytorium i przejść do folderu dla języka kodowania:
git clone https://github.com/Azure-Samples/azureai-model-inference-bicep
Pliki dla tego przykładu znajdują się w następujących elementach:
cd azureai-model-inference-bicep/infra
Omówienie zasobów
Samouczek ułatwia tworzenie następujących zadań:
- Zasób usług Azure AI Services z wyłączonym dostępem do klucza. Dla uproszczenia ten szablon nie wdraża modeli.
- Przypisanie roli dla danego podmiotu zabezpieczeń z rolą Użytkownik usług Cognitive Services.
Do utworzenia tych zasobów są używane następujące zasoby:
Użyj szablonu
modules/ai-services-template.bicep
, aby opisać zasób usług Azure AI Services:modules/ai-services-template.bicep
@description('Location of the resource.') param location string = resourceGroup().location @description('Name of the Azure AI Services account.') param accountName string @description('The resource model definition representing SKU') param sku string = 'S0' @description('Whether or not to allow keys for this account.') param allowKeys bool = true @allowed([ 'Enabled' 'Disabled' ]) @description('Whether or not public endpoint access is allowed for this account.') param publicNetworkAccess string = 'Enabled' @allowed([ 'Allow' 'Deny' ]) @description('The default action for network ACLs.') param networkAclsDefaultAction string = 'Allow' resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' = { name: accountName location: location identity: { type: 'SystemAssigned' } sku: { name: sku } kind: 'AIServices' properties: { publicNetworkAccess: publicNetworkAccess networkAcls: { defaultAction: networkAclsDefaultAction } disableLocalAuth: allowKeys } } output endpointUri string = account.properties.endpoints['Azure AI Model Inference API'] output id string = account.id
Napiwek
Zwróć uwagę, że ten szablon może przyjąć parametr
allowKeys
, który pofalse
wyłączeniu użycia kluczy w zasobie. Ta konfiguracja jest opcjonalna.Użyj szablonu
modules/role-assignment-template.bicep
, aby opisać przypisanie roli na platformie Azure:modules/role-assignment-template.bicep
@description('Specifies the role definition ID used in the role assignment.') param roleDefinitionID string @description('Specifies the principal ID assigned to the role.') param principalId string @description('Specifies the resource ID of the resource to assign the role to.') param scopeResourceId string = resourceGroup().id var roleAssignmentName= guid(principalId, roleDefinitionID, scopeResourceId) resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: roleAssignmentName properties: { roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID) principalId: principalId } } output name string = roleAssignment.name output resourceId string = roleAssignment.id
Tworzenie zasobów
W konsoli wykonaj następujące kroki:
Zdefiniuj główne wdrożenie:
deploy-entra-id.bicep
@description('Location to create the resources in') param location string = resourceGroup().location @description('Name of the resource group to create the resources in') param resourceGroupName string = resourceGroup().name @description('Name of the AI Services account to create') param accountName string = 'azurei-models-dev' @description('ID of the developers to assign the user role to') param securityPrincipalId string module aiServicesAccount 'modules/ai-services-template.bicep' = { name: 'aiServicesAccount' scope: resourceGroup(resourceGroupName) params: { accountName: accountName location: location allowKeys: false } } module roleAssignmentDeveloperAccount 'modules/role-assignment-template.bicep' = { name: 'roleAssignmentDeveloperAccount' scope: resourceGroup(resourceGroupName) params: { roleDefinitionID: 'a97b65f3-24c7-4388-baec-2e87135dc908' // Azure Cognitive Services User principalId: securityPrincipalId } } output endpoint string = aiServicesAccount.outputs.endpointUri
Zaloguj się do platformy Azure:
az login
Upewnij się, że jesteś w odpowiedniej subskrypcji:
az account set --subscription "<subscription-id>"
Uruchom wdrożenie:
RESOURCE_GROUP="<resource-group-name>" SECURITY_PRINCIPAL_ID="<your-security-principal-id>" az deployment group create \ --resource-group $RESOURCE_GROUP \ --securityPrincipalId $SECURITY_PRINCIPAL_ID --template-file deploy-entra-id.bicep
Szablon generuje punkt końcowy wnioskowania modelu AI platformy Azure, którego można użyć do korzystania z dowolnych utworzonych wdrożeń modelu.
Używanie identyfikatora Entra firmy Microsoft w kodzie
Po skonfigurowaniu identyfikatora Entra firmy Microsoft w zasobie należy zaktualizować kod, aby używał go podczas korzystania z punktu końcowego wnioskowania. W poniższym przykładzie pokazano, jak używać modelu uzupełniania czatów:
Zainstaluj pakiet azure-ai-inference
przy użyciu menedżera pakietów, takiego jak:
pip install azure-ai-inference>=1.0.0b5
Ostrzeżenie
Zasób usług Azure AI Services wymaga wersji azure-ai-inference>=1.0.0b5
języka Python.
Następnie możesz użyć pakietu do korzystania z modelu. W poniższym przykładzie pokazano, jak utworzyć klienta w celu korzystania z uzupełniania czatu przy użyciu identyfikatora Entra:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
model="mistral-large-2407",
)
Opcje poświadczeń podczas korzystania z identyfikatora Entra firmy Microsoft
DefaultAzureCredential
jest uporządkowaną sekwencją mechanizmów uwierzytelniania w usłudze Microsoft Entra ID. Każdy mechanizm uwierzytelniania jest klasą pochodzącą z TokenCredential
klasy i jest nazywana poświadczeniami. W czasie wykonywania DefaultAzureCredential
próbuje uwierzytelnić się przy użyciu pierwszego poświadczenia. Jeśli to poświadczenie nie może uzyskać tokenu dostępu, zostanie podjęta próba następnego poświadczenia w sekwencji itd., dopóki token dostępu nie zostanie pomyślnie uzyskany. W ten sposób aplikacja może używać różnych poświadczeń w różnych środowiskach bez konieczności pisania kodu specyficznego dla środowiska.
Po uruchomieniu poprzedniego kodu na lokalnej stacji roboczej programistycznej w zmiennych środowiskowych dla jednostki usługi aplikacji lub w lokalnie zainstalowanych narzędziach deweloperskich, takich jak Program Visual Studio, dla zestawu poświadczeń dewelopera. Jedną z metod można użyć do uwierzytelniania aplikacji w zasobach platformy Azure podczas programowania lokalnego.
Po wdrożeniu na platformie Azure ten sam kod może również uwierzytelniać aplikację w innych zasobach platformy Azure.
DefaultAzureCredential
program może automatycznie pobierać ustawienia środowiska i konfiguracje tożsamości zarządzanej w celu automatycznego uwierzytelniania w innych usługach.
Najlepsze rozwiązania
Użyj poświadczeń deterministycznych w środowiskach produkcyjnych: zdecydowanie rozważ przejście z jednego z
DefaultAzureCredential
następujących rozwiązań deterministycznych w środowiskach produkcyjnych:-
TokenCredential
Konkretna implementacja, taka jakManagedIdentityCredential
. Zobacz listę pochodną , aby uzyskać opcje. - Implementacja pared-down
ChainedTokenCredential
zoptymalizowana pod kątem środowiska platformy Azure, w którym działa aplikacja.ChainedTokenCredential
zasadniczo tworzy określoną listę dozwolonych dopuszczalnych opcji poświadczeń, takich jakManagedIdentity
środowisko produkcyjne iVisualStudioCredential
programowanie.
-
Skonfiguruj tożsamości zarządzane przypisane przez system lub przypisane przez użytkownika do zasobów platformy Azure, w których kod jest uruchomiony, jeśli to możliwe. Skonfiguruj dostęp identyfikatora Entra firmy Microsoft do tych określonych tożsamości.
Wyłączanie uwierzytelniania opartego na kluczach w zasobie
Wyłączenie uwierzytelniania opartego na kluczach jest zalecane w przypadku zaimplementowania identyfikatora Entra firmy Microsoft i pełnego rozwiązania problemów dotyczących zgodności lub rezerwowych we wszystkich aplikacjach korzystających z usługi. Można to osiągnąć, zmieniając właściwość disableLocalAuth
:
modules/ai-services-template.bicep
@description('Location of the resource.')
param location string = resourceGroup().location
@description('Name of the Azure AI Services account.')
param accountName string
@description('The resource model definition representing SKU')
param sku string = 'S0'
@description('Whether or not to allow keys for this account.')
param allowKeys bool = true
@allowed([
'Enabled'
'Disabled'
])
@description('Whether or not public endpoint access is allowed for this account.')
param publicNetworkAccess string = 'Enabled'
@allowed([
'Allow'
'Deny'
])
@description('The default action for network ACLs.')
param networkAclsDefaultAction string = 'Allow'
resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
name: accountName
location: location
identity: {
type: 'SystemAssigned'
}
sku: {
name: sku
}
kind: 'AIServices'
properties: {
publicNetworkAccess: publicNetworkAccess
networkAcls: {
defaultAction: networkAclsDefaultAction
}
disableLocalAuth: allowKeys
}
}
output endpointUri string = account.properties.endpoints['Azure AI Model Inference API']
output id string = account.id