Udostępnij za pośrednictwem


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:

Konfigurowanie identyfikatora entra firmy Microsoft na potrzeby wnioskowania

Wykonaj następujące kroki, aby skonfigurować identyfikator entra firmy Microsoft na potrzeby wnioskowania:

  1. 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:

    1. Przejdź do portalu usługi Azure AI Foundry.

    2. Na stronie docelowej wybierz pozycję Otwórz centrum zarządzania.

    3. 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ę.

    4. W sekcji Szczegóły połączenia w obszarze Zasób wybierz nazwę zasobu platformy Azure. Otworzy się nowa strona.

    5. Jesteś teraz w witrynie Azure Portal , w której możesz zarządzać wszystkimi aspektami samego zasobu.

  2. 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.

  3. Wybierz pozycję Przypisania ról, a następnie wybierz pozycję Dodaj>przypisanie roli.

  4. 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.

  5. Wybierz rolę i wybierz pozycję Dalej.

  6. 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.

  7. Wybierz pozycję Dalej i zakończ pracę kreatora.

  8. 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 jak ManagedIdentityCredential. 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 jak ManagedIdentity środowisko produkcyjne i VisualStudioCredential 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:

  1. Przejdź do portalu usługi Azure AI Foundry.

  2. Przejdź do projektów lub centrów korzystających z zasobu usług Azure AI Za pośrednictwem połączenia.

  3. Wybierz pozycję Centrum zarządzania.

  4. 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ę.

  5. W sekcji Szczegóły połączenia obok pozycji Szczegóły dostępu wybierz ikonę edycji.

  6. W obszarze Uwierzytelnianie zmień wartość na Microsoft Entra ID.

  7. Wybierz Aktualizuj.

  8. 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:

  • 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:

  1. Zaloguj się do subskrypcji platformy Azure:

    az login
    
  2. Jeśli masz więcej niż jedną subskrypcję, wybierz subskrypcję, w której znajduje się zasób:

    az account set --subscription "<subscription-id>"
    
  3. 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>"
    
  4. Uzyskaj pełną nazwę zasobu:

    RESOURCE_ID=$(az resource show -g $RESOURCE_GROUP -n $ACCOUNT_NAME --resource-type "Microsoft.CognitiveServices/accounts")
    
  5. 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)
    
  6. 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
    
  7. 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 jak ManagedIdentityCredential. 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 jak ManagedIdentity środowisko produkcyjne i VisualStudioCredential 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:

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:

  1. 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 po false wyłączeniu użycia kluczy w zasobie. Ta konfiguracja jest opcjonalna.

  2. 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:

  1. 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
    
  2. Zaloguj się do platformy Azure:

    az login
    
  3. Upewnij się, że jesteś w odpowiedniej subskrypcji:

    az account set --subscription "<subscription-id>"
    
  4. 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
    
  5. 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 jak ManagedIdentityCredential. 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 jak ManagedIdentity środowisko produkcyjne i VisualStudioCredential 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

Następne kroki