Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure AI Foundry Models stöder nyckellös auktorisering med Microsoft Entra-ID. Nyckellös auktorisering förbättrar säkerheten, förenklar användarupplevelsen, minskar driftkomplexiteten och ger robust efterlevnadsstöd för modern utveckling. Nyckellös auktorisering är ett starkt val för organisationer som använder säkra och skalbara identitetshanteringslösningar.
Den här artikeln beskriver hur du konfigurerar Microsoft Entra-ID för slutsatsdragning i Azure AI Foundry Models.
Förstå roller i resurskontexten i Azure
Microsoft Entra ID använder rollbaserad åtkomstkontroll (RBAC) för auktorisering. Roller är centrala för att hantera åtkomsten till dina molnresurser. En roll är en samling behörigheter som definierar vilka åtgärder som kan utföras på specifika Azure-resurser. Genom att tilldela roller till användare, grupper, tjänstens huvudnamn eller hanterade identiteter – gemensamt kallade säkerhetsobjekt – kontrollerar du deras åtkomst i Din Azure-miljö till specifika resurser.
När du tilldelar en roll anger du säkerhetsobjektet, rolldefinitionen och omfånget. Den här kombinationen kallas för en rolltilldelning. Azure AI Foundry Models är en funktion för Azure AI Services-resurserna och därför styr roller som tilldelats den specifika resursen åtkomsten för slutsatsdragning.
Du identifierar två olika typer av åtkomst till resurserna:
Administrationsåtkomst: Åtgärder som rör administration av resursen. De ändrar vanligtvis tillståndet för resursen och dess konfiguration. I Azure är dessa åtgärder kontrollplansåtgärder och kan köras med hjälp av Azure-portalen, Azure CLI eller med infrastruktur som kod. Exempel är att skapa nya modelldistributioner, ändra konfigurationer för innehållsfiltrering, ändra versionen av modellen som hanteras eller ändra SKU:n för en distribution.
Utvecklaråtkomst: Åtgärder som rör förbrukningen av resurserna. Till exempel att anropa API:et för chattens slutförande. Användaren kan dock inte ändra tillståndet för resursen och dess konfiguration.
I Azure utför Microsoft Entra-ID alltid administrationsåtgärder. Med roller som Cognitive Services-deltagare kan du utföra dessa åtgärder. Å andra sidan kan utvecklaråtgärder utföras med antingen åtkomstnycklar eller/och Microsoft Entra-ID. Med roller som Cognitive Services-användare kan du utföra dessa åtgärder.
Viktigt!
Att ha administrationsåtkomst till en resurs ger inte nödvändigtvis utvecklaren åtkomst till den. Explicit åtkomst genom att tilldela roller krävs fortfarande. Det motsvarar hur databasservrar fungerar. Att ha administratörsåtkomst till databasservern innebär inte att du kan läsa data i en databas.
Förutsättningar
För att slutföra den här artikeln behöver du:
Ett Azure-abonnemang. Om du använder GitHub-modeller kan du uppgradera din upplevelse och skapa en Azure-prenumeration i processen. Läs Uppgradera från GitHub-modeller till Azure AI Foundry-modeller om så är fallet.
Ett Azure AI Foundry-projekt. Den här typen av projekt hanteras under en Azure AI Foundry-resurs (kallades tidigare Azure AI Services-resurs). Om du inte har ett Foundry-projekt kan du läsa Skapa ett projekt för Azure AI Foundry (Foundry-projekt).
Slutpunktens URL.
Slutpunktens nyckel (om du väljer att använda API-nyckeln för autentisering).
Ett konto med
Microsoft.Authorization/roleAssignments/writeochMicrosoft.Authorization/roleAssignments/deletebehörigheter, till exempel rollbaserad åtkomstkontroll för administratör .Om du vill tilldela en roll måste du ange tre element:
- Säkerhetsobjekt: ditt användarkonto.
- Rolldefinition: Cognitive Services-användarrollen .
- Omfång: Azure AI Services-resursen.
Om du vill skapa en anpassad rolldefinition i stället för att använda användarrollen Cognitive Services kontrollerar du att rollen har följande behörigheter:
{ "permissions": [ { "dataActions": [ "Microsoft.CognitiveServices/accounts/MaaS/*" ] } ] }
Konfigurera Microsoft Entra-ID för slutsatsdragning
Följ dessa steg för att konfigurera Microsoft Entra-ID för slutsatsdragning:
Gå till Azure-portalen och leta upp den Azure AI Foundry-resurs (kallades tidigare Azure AI Services-resurs) som du använder. Om du använder Azure AI Foundry med projekt eller hubbar kan du navigera till det genom att:
Gå till Azure AI Foundry-portalen.
På landningssidan väljer du Hanteringscenter.
Gå till avsnittet Anslutna resurser och välj anslutningen till den Azure AI Foundry-resurs som du vill konfigurera. Om den inte visas väljer du Visa alla för att se den fullständiga listan.
I avsnittet Anslutningsinformation går du till Resurs och väljer namnet på Azure-resursen. En ny sida öppnas.
Nu är du i Azure-portalen där du kan hantera alla aspekter av själva resursen.
I den vänstra rutan väljer du Åtkomstkontroll (IAM) och sedan Lägg till>rolltilldelning.
Tips/Råd
Använd alternativet Visa min åtkomst för att kontrollera vilka roller som redan har tilldelats dig.
I Jobbfunktionsroller skriver du Cognitive Services-användare.
Välj rollen och välj Nästa.
På Medlemmar väljer du den användare eller grupp som du vill bevilja åtkomst till. Använd säkerhetsgrupper när det är möjligt eftersom de är enklare att hantera och underhålla.
Välj Nästa och slutför guiden.
Den valda användaren kan nu använda Microsoft Entra-ID för slutsatsdragning.
Tips/Råd
Det kan ta upp till fem minuter att sprida Azure-rolltilldelningar. När du arbetar med säkerhetsgrupper sker tillägg eller borttagning av användare från säkerhetsgruppen omedelbart.
Nyckelbaserad åtkomst är fortfarande möjlig för användare som redan har nycklar tillgängliga för dem. Om du vill återkalla nycklarna går du till Azure-portalen i det vänstra navigeringsfönstret och väljer Resurshanteringsnycklar>>Återskapa Key1 och Återskapa nyckel2.
Använda Microsoft Entra-ID i koden
När du har konfigurerat Microsoft Entra-ID i din resurs, uppdatera koden för att använda det när du konsumerar inference-slutpunkten. I följande exempel visas hur du använder en modell för chattavslut:
azure-ai-inference Installera paketet med hjälp av en pakethanterare som pip:
pip install azure-ai-inference
Använd sedan paketet för att tillämpa modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar med Microsoft Entra-ID:
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"],
)
Alternativ för autentiseringsuppgifter när du använder Microsoft Entra-ID
DefaultAzureCredential är en åsiktsbaserad, ordnad sekvens av mekanismer för autentisering till Microsoft Entra-ID. Varje autentiseringsmekanism är en klass som härleds från TokenCredential klassen och kallas för autentiseringsuppgifter. Vid körning DefaultAzureCredential försöker autentisera med hjälp av den första autentiseringsuppgiften. Om det misslyckas att erhålla en åtkomsttoken prövas nästa referens i sekvensen och så vidare, tills en åtkomsttoken framgångsrikt har erhållits. På så sätt kan din app använda olika autentiseringsuppgifter i olika miljöer utan att skriva miljöspecifik kod.
När föregående kod körs på din lokala utvecklingsarbetsstation letar den i miljövariablerna efter ett huvudnamn för programtjänsten eller lokalt installerade utvecklarverktyg, till exempel Visual Studio, för en uppsättning autentiseringsuppgifter för utvecklare. Du kan använda endera metoden för att autentisera appen till Azure-resurser under den lokala utvecklingen.
När den distribueras till Azure kan samma kod även autentisera din app till andra Azure-resurser.
DefaultAzureCredential kan hämta miljöinställningar och hanterade identitetskonfigurationer för att autentisera till andra tjänster automatiskt.
Metodtips
Använd deterministiska autentiseringsuppgifter i produktionsmiljöer: Överväg starkt att flytta från
DefaultAzureCredentialtill någon av följande deterministiska lösningar i produktionsmiljöer:- En specifik
TokenCredentialimplementering, till exempelManagedIdentityCredential. Se Härledd lista för alternativ. - En avskalad
ChainedTokenCredentialimplementering optimerad för Azure-miljön där appen körs.ChainedTokenCredentialskapar i princip en specifik lista över godtagbara alternativ för autentiseringsuppgifter, till exempelManagedIdentityför produktion ochVisualStudioCredentialför utveckling.
- En specifik
Konfigurera systemtilldelade eller användartilldelade hanterade identiteter till de Azure-resurser där koden körs om möjligt. Konfigurera Microsoft Entra ID-åtkomst till dessa specifika identiteter.
Felsökning
Kontrollera att du har rätt behörigheter tilldelade innan du felsöker:
Gå till Azure-portalen och leta reda på den Azure AI Foundry-resurs (tidigare känd Azure AI Services-resurs) som du använder.
I den vänstra rutan väljer du Åtkomstkontroll (IAM) och sedan Kontrollera åtkomst.
Ange namnet på den användare eller identitet som du använder för att ansluta till tjänsten.
Kontrollera att rollen Cognitive Services-användare visas (eller en roll som innehåller de behörigheter som krävs enligt beskrivningen i Krav).
Viktigt!
Roller som Ägare eller Deltagare ger inte åtkomst via Microsoft Entra-ID.
Om rollen inte visas följer du stegen i den här guiden innan du fortsätter.
Följande tabell innehåller flera scenarier som kan hjälpa dig att felsöka Microsoft Entra-ID:
| Fel/scenario | Grundorsak | Lösning |
|---|---|---|
| Du använder en SDK. | Kända problem. | Innan du gör ytterligare felsökning installerar du den senaste versionen av programvaran som du använder för att ansluta till tjänsten. Autentiseringsbuggar kanske redan har åtgärdats i en nyare version av programvaran som du använder. |
401 Principal does not have access to API/Operation |
Begäran anger autentisering på rätt sätt, men användarens huvudkonto har inte de behörigheter som krävs för att använda inferensslutpunkten. | Kontrollera att du har: 1. Tilldelade rollen Cognitive Services-användare till ditt huvudnamn till Azure AI Foundry-resursen (tidigare känd Azure AI Services). Observera att Cognitive Services OpenAI-användare endast ger åtkomst till OpenAI-modeller. Ägare eller deltagare ger inte heller åtkomst. 1. Vänta minst 5 minuter innan du ringer det första samtalet. |
401 HTTP/1.1 401 PermissionDenied |
Begäran anger autentisering på rätt sätt, men användarens huvudkonto har inte de behörigheter som krävs för att använda inferensslutpunkten. | Tilldelade rollen Cognitive Services-användare till din huvudanvändare i Azure AI Foundry-resursen (tidigare känd som Azure AI Services). Roller som administratör eller deltagare har inte stor slutsatsdragningsåtkomst. Vänta minst 5 minuter innan du gör det första samtalet. |
Du använder REST API-anrop och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. |
Authentication Kontrollera att rubriken innehåller en giltig token med ett omfång https://cognitiveservices.azure.com/.default. |
Du använder AzureOpenAI klassen och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. | Kontrollera att du använder en OpenAI-modell som är ansluten till slutpunkten https://<resource>.openai.azure.com. Du kan inte använda OpenAI klass eller modeller som en tjänst-modell. Om din modell inte är från OpenAI använder du Azure AI Inference SDK. |
Du använder Azure AI Inference SDK och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. | Kontrollera att du är ansluten till slutpunkten https://<resource>.services.ai.azure.com/model och att du angav rätt omfång för Microsoft Entra-ID (https://cognitiveservices.azure.com/.default). |
404 Not found |
Slutpunkts-URL:en är felaktig baserat på den SDK som du använder, eller så finns inte modelldistributionen. | Kontrollera att du använder rätt SDK som är ansluten till rätt slutpunkt: 1. Om du använder Azure AI-slutsatsdragnings-SDK:n kontrollerar du att slutpunkten finns https://<resource>.services.ai.azure.com/model med model="<model-deployment-name>" i nyttolasten eller att slutpunkten är https://<resource>.openai.azure.com/deployments/<model-deployment-name>. Om du använder AzureOpenAI klassen kontrollerar du att slutpunkten är https://<resource>.openai.azure.com. |
Använda Microsoft Entra-ID i projektet
Även när din resurs har Microsoft Entra ID konfigurerad kan dina projekt fortfarande använda nycklar för att hämta förutsägelser från resursen. När du använder Azure AI Foundry Playground används de autentiseringsuppgifter som är associerade med anslutningen i projektet.
Om du vill ändra det här beteendet uppdaterar du anslutningarna i dina projekt så att de använder Microsoft Entra-ID. Följ dessa steg:
Gå till Azure AI Foundry-portalen.
Gå till de projekt eller hubbar som använder Azure AI Foundry-resursen via en anslutning.
Välj Hanteringscenter.
Gå till avsnittet Anslutna resurser och välj anslutningen till den Azure AI Foundry-resurs som du vill konfigurera. Om den inte visas väljer du Visa alla för att se den fullständiga listan.
I avsnittet Anslutningsinformation bredvid Åtkomstinformation väljer du redigeringsikonen.
Under Autentisering ändrar du värdet till Microsoft Entra-ID.
Välj Uppdatera.
Anslutningen är nu konfigurerad för att fungera med Microsoft Entra-ID.
Inaktivera nyckelbaserad autentisering i resursen
Inaktivera nyckelbaserad autentisering när du implementerar Microsoft Entra-ID och fullständigt åtgärda kompatibilitets- eller reservproblem i alla program som använder tjänsten. Du kan bara inaktivera nyckelbaserad autentisering när du distribuerar med Bicep eller ARM.
Azure AI Foundry Models stöder nyckellös auktorisering med Microsoft Entra-ID. Nyckellös auktorisering förbättrar säkerheten, förenklar användarupplevelsen, minskar driftkomplexiteten och ger robust efterlevnadsstöd för modern utveckling. Nyckellös auktorisering är ett starkt val för organisationer som använder säkra och skalbara identitetshanteringslösningar.
Den här artikeln beskriver hur du konfigurerar Microsoft Entra-ID för slutsatsdragning i Azure AI Foundry Models.
Förstå roller i resurskontexten i Azure
Microsoft Entra ID använder rollbaserad åtkomstkontroll (RBAC) för auktorisering. Roller är centrala för att hantera åtkomsten till dina molnresurser. En roll är en samling behörigheter som definierar vilka åtgärder som kan utföras på specifika Azure-resurser. Genom att tilldela roller till användare, grupper, tjänstens huvudnamn eller hanterade identiteter – gemensamt kallade säkerhetsobjekt – kontrollerar du deras åtkomst i Din Azure-miljö till specifika resurser.
När du tilldelar en roll anger du säkerhetsobjektet, rolldefinitionen och omfånget. Den här kombinationen kallas för en rolltilldelning. Azure AI Foundry Models är en funktion för Azure AI Services-resurserna och därför styr roller som tilldelats den specifika resursen åtkomsten för slutsatsdragning.
Du identifierar två olika typer av åtkomst till resurserna:
Administrationsåtkomst: Åtgärder som rör administration av resursen. De ändrar vanligtvis tillståndet för resursen och dess konfiguration. I Azure är dessa åtgärder kontrollplansåtgärder och kan köras med hjälp av Azure-portalen, Azure CLI eller med infrastruktur som kod. Exempel är att skapa nya modelldistributioner, ändra konfigurationer för innehållsfiltrering, ändra versionen av modellen som hanteras eller ändra SKU:n för en distribution.
Utvecklaråtkomst: Åtgärder som rör förbrukningen av resurserna. Till exempel att anropa API:et för chattens slutförande. Användaren kan dock inte ändra tillståndet för resursen och dess konfiguration.
I Azure utför Microsoft Entra-ID alltid administrationsåtgärder. Med roller som Cognitive Services-deltagare kan du utföra dessa åtgärder. Å andra sidan kan utvecklaråtgärder utföras med antingen åtkomstnycklar eller/och Microsoft Entra-ID. Med roller som Cognitive Services-användare kan du utföra dessa åtgärder.
Viktigt!
Att ha administrationsåtkomst till en resurs ger inte nödvändigtvis utvecklaren åtkomst till den. Explicit åtkomst genom att tilldela roller krävs fortfarande. Det motsvarar hur databasservrar fungerar. Att ha administratörsåtkomst till databasservern innebär inte att du kan läsa data i en databas.
Förutsättningar
För att slutföra den här artikeln behöver du:
Ett Azure-abonnemang. Om du använder GitHub-modeller kan du uppgradera din upplevelse och skapa en Azure-prenumeration i processen. Läs Uppgradera från GitHub-modeller till Azure AI Foundry-modeller om så är fallet.
Ett Azure AI Foundry-projekt. Den här typen av projekt hanteras under en Azure AI Foundry-resurs (kallades tidigare Azure AI Services-resurs). Om du inte har ett Foundry-projekt kan du läsa Skapa ett projekt för Azure AI Foundry (Foundry-projekt).
Slutpunktens URL.
Slutpunktens nyckel (om du väljer att använda API-nyckeln för autentisering).
Ett konto med
Microsoft.Authorization/roleAssignments/writeochMicrosoft.Authorization/roleAssignments/deletebehörigheter, till exempel rollbaserad åtkomstkontroll för administratör .Om du vill tilldela en roll måste du ange tre element:
- Säkerhetsobjekt: ditt användarkonto.
- Rolldefinition: Cognitive Services-användarrollen .
- Omfång: Azure AI Services-resursen.
Om du vill skapa en anpassad rolldefinition i stället för att använda användarrollen Cognitive Services kontrollerar du att rollen har följande behörigheter:
{ "permissions": [ { "dataActions": [ "Microsoft.CognitiveServices/accounts/MaaS/*" ] } ] }
Installera Azure CLI.
Identifiera följande information:
ditt prenumerations-ID för Azure
Namnet på din Azure AI Foundry-resurs (kallades tidigare Azure AI Services-resurs).
Resursgruppen där du distribuerade Azure AI Foundry-resursen.
Konfigurera Microsoft Entra-ID för slutsatsdragning
Följ dessa steg för att konfigurera Microsoft Entra-ID för slutsatsdragning:
Logga in på din Azure-prenumeration.
az loginOm du har fler än en prenumeration väljer du den prenumeration där resursen finns.
az account set --subscription "<subscription-id>"Ange följande miljövariabler med namnet på den Azure AI Foundry-resurs som du planerar att använda och resursgruppen.
ACCOUNT_NAME="<ai-services-resource-name>" RESOURCE_GROUP="<resource-group>"Hämta det fullständiga namnet på resursen.
RESOURCE_ID=$(az resource show -g $RESOURCE_GROUP -n $ACCOUNT_NAME --resource-type "Microsoft.CognitiveServices/accounts" --query id --output tsv)Hämta objekt-ID:t för det säkerhetsobjekt som du vill tilldela behörigheter till. I följande exempel visas hur du hämtar objekt-ID:t som är associerat med:
Ditt eget inloggade konto:
OBJECT_ID=$(az ad signed-in-user show --query id --output tsv)En säkerhetsgrupp:
OBJECT_ID=$(az ad group show --group "<group-name>" --query id --output tsv)Ett huvudnamn för tjänsten:
OBJECT_ID=$(az ad sp show --id "<service-principal-guid>" --query id --output tsv)Tilldela Cognitive Services User-rollen till tjänstens huvudobjekt (omfattar resursen). Genom att tilldela en roll ger du tjänstens huvudobjekt åtkomst till den här resursen.
az role assignment create --assignee-object-id $OBJECT_ID --role "Cognitive Services User" --scope $RESOURCE_IDDen valda användaren kan nu använda Microsoft Entra-ID för slutsatsdragning.
Tips/Råd
Tänk på att Azure-rolltilldelningar kan ta upp till fem minuter att sprida. Att lägga till eller ta bort användare från en säkerhetsgrupp sprids omedelbart.
Använda Microsoft Entra-ID i koden
När du har konfigurerat Microsoft Entra-ID i din resurs, uppdatera koden för att använda det när du konsumerar inference-slutpunkten. I följande exempel visas hur du använder en modell för chattavslut:
azure-ai-inference Installera paketet med hjälp av en pakethanterare som pip:
pip install azure-ai-inference
Använd sedan paketet för att tillämpa modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar med Microsoft Entra-ID:
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"],
)
Alternativ för autentiseringsuppgifter när du använder Microsoft Entra-ID
DefaultAzureCredential är en åsiktsbaserad, ordnad sekvens av mekanismer för autentisering till Microsoft Entra-ID. Varje autentiseringsmekanism är en klass som härleds från TokenCredential klassen och kallas för autentiseringsuppgifter. Vid körning DefaultAzureCredential försöker autentisera med hjälp av den första autentiseringsuppgiften. Om det misslyckas att erhålla en åtkomsttoken prövas nästa referens i sekvensen och så vidare, tills en åtkomsttoken framgångsrikt har erhållits. På så sätt kan din app använda olika autentiseringsuppgifter i olika miljöer utan att skriva miljöspecifik kod.
När föregående kod körs på din lokala utvecklingsarbetsstation letar den i miljövariablerna efter ett huvudnamn för programtjänsten eller lokalt installerade utvecklarverktyg, till exempel Visual Studio, för en uppsättning autentiseringsuppgifter för utvecklare. Du kan använda endera metoden för att autentisera appen till Azure-resurser under den lokala utvecklingen.
När den distribueras till Azure kan samma kod även autentisera din app till andra Azure-resurser.
DefaultAzureCredential kan hämta miljöinställningar och hanterade identitetskonfigurationer för att autentisera till andra tjänster automatiskt.
Metodtips
Använd deterministiska autentiseringsuppgifter i produktionsmiljöer: Överväg starkt att flytta från
DefaultAzureCredentialtill någon av följande deterministiska lösningar i produktionsmiljöer:- En specifik
TokenCredentialimplementering, till exempelManagedIdentityCredential. Se Härledd lista för alternativ. - En avskalad
ChainedTokenCredentialimplementering optimerad för Azure-miljön där appen körs.ChainedTokenCredentialskapar i princip en specifik lista över godtagbara alternativ för autentiseringsuppgifter, till exempelManagedIdentityför produktion ochVisualStudioCredentialför utveckling.
- En specifik
Konfigurera systemtilldelade eller användartilldelade hanterade identiteter till de Azure-resurser där koden körs om möjligt. Konfigurera Microsoft Entra ID-åtkomst till dessa specifika identiteter.
Felsökning
Kontrollera att du har rätt behörigheter tilldelade innan du felsöker:
Gå till Azure-portalen och leta reda på den Azure AI Foundry-resurs (tidigare känd Azure AI Services-resurs) som du använder.
I den vänstra rutan väljer du Åtkomstkontroll (IAM) och sedan Kontrollera åtkomst.
Ange namnet på den användare eller identitet som du använder för att ansluta till tjänsten.
Kontrollera att rollen Cognitive Services-användare visas (eller en roll som innehåller de behörigheter som krävs enligt beskrivningen i Krav).
Viktigt!
Roller som Ägare eller Deltagare ger inte åtkomst via Microsoft Entra-ID.
Om rollen inte visas följer du stegen i den här guiden innan du fortsätter.
Följande tabell innehåller flera scenarier som kan hjälpa dig att felsöka Microsoft Entra-ID:
| Fel/scenario | Grundorsak | Lösning |
|---|---|---|
| Du använder en SDK. | Kända problem. | Innan du gör ytterligare felsökning installerar du den senaste versionen av programvaran som du använder för att ansluta till tjänsten. Autentiseringsbuggar kanske redan har åtgärdats i en nyare version av programvaran som du använder. |
401 Principal does not have access to API/Operation |
Begäran anger autentisering på rätt sätt, men användarens huvudkonto har inte de behörigheter som krävs för att använda inferensslutpunkten. | Kontrollera att du har: 1. Tilldelade rollen Cognitive Services-användare till ditt huvudnamn till Azure AI Foundry-resursen (tidigare känd Azure AI Services). Observera att Cognitive Services OpenAI-användare endast ger åtkomst till OpenAI-modeller. Ägare eller deltagare ger inte heller åtkomst. 1. Vänta minst 5 minuter innan du ringer det första samtalet. |
401 HTTP/1.1 401 PermissionDenied |
Begäran anger autentisering på rätt sätt, men användarens huvudkonto har inte de behörigheter som krävs för att använda inferensslutpunkten. | Tilldelade rollen Cognitive Services-användare till din huvudanvändare i Azure AI Foundry-resursen (tidigare känd som Azure AI Services). Roller som administratör eller deltagare har inte stor slutsatsdragningsåtkomst. Vänta minst 5 minuter innan du gör det första samtalet. |
Du använder REST API-anrop och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. |
Authentication Kontrollera att rubriken innehåller en giltig token med ett omfång https://cognitiveservices.azure.com/.default. |
Du använder AzureOpenAI klassen och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. | Kontrollera att du använder en OpenAI-modell som är ansluten till slutpunkten https://<resource>.openai.azure.com. Du kan inte använda OpenAI klass eller modeller som en tjänst-modell. Om din modell inte är från OpenAI använder du Azure AI Inference SDK. |
Du använder Azure AI Inference SDK och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. | Kontrollera att du är ansluten till slutpunkten https://<resource>.services.ai.azure.com/model och att du angav rätt omfång för Microsoft Entra-ID (https://cognitiveservices.azure.com/.default). |
404 Not found |
Slutpunkts-URL:en är felaktig baserat på den SDK som du använder, eller så finns inte modelldistributionen. | Kontrollera att du använder rätt SDK som är ansluten till rätt slutpunkt: 1. Om du använder Azure AI-slutsatsdragnings-SDK:n kontrollerar du att slutpunkten finns https://<resource>.services.ai.azure.com/model med model="<model-deployment-name>" i nyttolasten eller att slutpunkten är https://<resource>.openai.azure.com/deployments/<model-deployment-name>. Om du använder AzureOpenAI klassen kontrollerar du att slutpunkten är https://<resource>.openai.azure.com. |
Azure AI Foundry Models stöder nyckellös auktorisering med Microsoft Entra-ID. Nyckellös auktorisering förbättrar säkerheten, förenklar användarupplevelsen, minskar driftkomplexiteten och ger robust efterlevnadsstöd för modern utveckling. Nyckellös auktorisering är ett starkt val för organisationer som använder säkra och skalbara identitetshanteringslösningar.
Den här artikeln beskriver hur du konfigurerar Microsoft Entra-ID för slutsatsdragning i Azure AI Foundry Models.
Förstå roller i resurskontexten i Azure
Microsoft Entra ID använder rollbaserad åtkomstkontroll (RBAC) för auktorisering. Roller är centrala för att hantera åtkomsten till dina molnresurser. En roll är en samling behörigheter som definierar vilka åtgärder som kan utföras på specifika Azure-resurser. Genom att tilldela roller till användare, grupper, tjänstens huvudnamn eller hanterade identiteter – gemensamt kallade säkerhetsobjekt – kontrollerar du deras åtkomst i Din Azure-miljö till specifika resurser.
När du tilldelar en roll anger du säkerhetsobjektet, rolldefinitionen och omfånget. Den här kombinationen kallas för en rolltilldelning. Azure AI Foundry Models är en funktion för Azure AI Services-resurserna och därför styr roller som tilldelats den specifika resursen åtkomsten för slutsatsdragning.
Du identifierar två olika typer av åtkomst till resurserna:
Administrationsåtkomst: Åtgärder som rör administration av resursen. De ändrar vanligtvis tillståndet för resursen och dess konfiguration. I Azure är dessa åtgärder kontrollplansåtgärder och kan köras med hjälp av Azure-portalen, Azure CLI eller med infrastruktur som kod. Exempel är att skapa nya modelldistributioner, ändra konfigurationer för innehållsfiltrering, ändra versionen av modellen som hanteras eller ändra SKU:n för en distribution.
Utvecklaråtkomst: Åtgärder som rör förbrukningen av resurserna. Till exempel att anropa API:et för chattens slutförande. Användaren kan dock inte ändra tillståndet för resursen och dess konfiguration.
I Azure utför Microsoft Entra-ID alltid administrationsåtgärder. Med roller som Cognitive Services-deltagare kan du utföra dessa åtgärder. Å andra sidan kan utvecklaråtgärder utföras med antingen åtkomstnycklar eller/och Microsoft Entra-ID. Med roller som Cognitive Services-användare kan du utföra dessa åtgärder.
Viktigt!
Att ha administrationsåtkomst till en resurs ger inte nödvändigtvis utvecklaren åtkomst till den. Explicit åtkomst genom att tilldela roller krävs fortfarande. Det motsvarar hur databasservrar fungerar. Att ha administratörsåtkomst till databasservern innebär inte att du kan läsa data i en databas.
Förutsättningar
För att slutföra den här artikeln behöver du:
Ett Azure-abonnemang. Om du använder GitHub-modeller kan du uppgradera din upplevelse och skapa en Azure-prenumeration i processen. Läs Uppgradera från GitHub-modeller till Azure AI Foundry-modeller om så är fallet.
Ett Azure AI Foundry-projekt. Den här typen av projekt hanteras under en Azure AI Foundry-resurs (kallades tidigare Azure AI Services-resurs). Om du inte har ett Foundry-projekt kan du läsa Skapa ett projekt för Azure AI Foundry (Foundry-projekt).
Slutpunktens URL.
Slutpunktens nyckel (om du väljer att använda API-nyckeln för autentisering).
Ett konto med
Microsoft.Authorization/roleAssignments/writeochMicrosoft.Authorization/roleAssignments/deletebehörigheter, till exempel rollbaserad åtkomstkontroll för administratör .Om du vill tilldela en roll måste du ange tre element:
- Säkerhetsobjekt: ditt användarkonto.
- Rolldefinition: Cognitive Services-användarrollen .
- Omfång: Azure AI Services-resursen.
Om du vill skapa en anpassad rolldefinition i stället för att använda användarrollen Cognitive Services kontrollerar du att rollen har följande behörigheter:
{ "permissions": [ { "dataActions": [ "Microsoft.CognitiveServices/accounts/MaaS/*" ] } ] }
Installera Azure CLI.
Identifiera följande information:
- ditt prenumerations-ID för Azure
Om den här självstudiekursen
Exemplet i den här artikeln baseras på kodexempel på lagringsplatsen Azure-Samples/azureai-model-inference-bicep . Om du vill köra kommandona lokalt utan att kopiera eller klistra in filinnehåll använder du följande kommandon för att klona lagringsplatsen och gå till mappen för kodningsspråket:
git clone https://github.com/Azure-Samples/azureai-model-inference-bicep
Filerna för det här exemplet finns i:
cd azureai-model-inference-bicep/infra
Förstå resurserna
I den här självstudien skapar du följande resurser:
- En Azure AI Foundry-resurs (kallades tidigare Azure AI Services-resurs) med nyckelåtkomst inaktiverad. För enkelhetens skull distribuerar den här mallen inte modeller.
- En rolltilldelning för ett visst säkerhetsobjekt med rollen Cognitive Services-användare.
Använd följande tillgångar för att skapa dessa resurser:
Använd mallen
modules/ai-services-template.bicepför att beskriva din Azure AI Foundry-resurs: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: { customSubDomainName: accountName publicNetworkAccess: publicNetworkAccess networkAcls: { defaultAction: networkAclsDefaultAction } disableLocalAuth: allowKeys } } output endpointUri string = 'https://${account.outputs.name}.services.ai.azure.com/models' output id string = account.idTips/Råd
Den här mallen accepterar parametern
allowKeys. Ställ in den påfalseför att inaktivera nyckelåtkomst i resursen. Den här konfigurationen är valfri.Använd mallen
modules/role-assignment-template.bicepför att beskriva en rolltilldelning i 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
Skapa resurserna
Följ dessa steg i konsolen:
Definiera huvuddistributionen:
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.endpointUriLogga in på Azure:
az loginKontrollera att du har rätt prenumeration:
az account set --subscription "<subscription-id>"Kör utrullningen:
RESOURCE_GROUP="<resource-group-name>" SECURITY_PRINCIPAL_ID="<your-security-principal-id>" az deployment group create \ --resource-group $RESOURCE_GROUP \ --parameters securityPrincipalId=$SECURITY_PRINCIPAL_ID \ --template-file deploy-entra-id.bicepMallen visar slutpunkten för Azure AI Foundry Models som du kan använda för att utnyttja någon av de modellimplementeringar du skapade.
Använda Microsoft Entra-ID i koden
När du har konfigurerat Microsoft Entra-ID i din resurs, uppdatera koden för att använda det när du konsumerar inference-slutpunkten. I följande exempel visas hur du använder en modell för chattavslut:
azure-ai-inference Installera paketet med hjälp av en pakethanterare som pip:
pip install azure-ai-inference
Använd sedan paketet för att tillämpa modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar med Microsoft Entra-ID:
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"],
)
Alternativ för autentiseringsuppgifter när du använder Microsoft Entra-ID
DefaultAzureCredential är en åsiktsbaserad, ordnad sekvens av mekanismer för autentisering till Microsoft Entra-ID. Varje autentiseringsmekanism är en klass som härleds från TokenCredential klassen och kallas för autentiseringsuppgifter. Vid körning DefaultAzureCredential försöker autentisera med hjälp av den första autentiseringsuppgiften. Om det misslyckas att erhålla en åtkomsttoken prövas nästa referens i sekvensen och så vidare, tills en åtkomsttoken framgångsrikt har erhållits. På så sätt kan din app använda olika autentiseringsuppgifter i olika miljöer utan att skriva miljöspecifik kod.
När föregående kod körs på din lokala utvecklingsarbetsstation letar den i miljövariablerna efter ett huvudnamn för programtjänsten eller lokalt installerade utvecklarverktyg, till exempel Visual Studio, för en uppsättning autentiseringsuppgifter för utvecklare. Du kan använda endera metoden för att autentisera appen till Azure-resurser under den lokala utvecklingen.
När den distribueras till Azure kan samma kod även autentisera din app till andra Azure-resurser.
DefaultAzureCredential kan hämta miljöinställningar och hanterade identitetskonfigurationer för att autentisera till andra tjänster automatiskt.
Metodtips
Använd deterministiska autentiseringsuppgifter i produktionsmiljöer: Överväg starkt att flytta från
DefaultAzureCredentialtill någon av följande deterministiska lösningar i produktionsmiljöer:- En specifik
TokenCredentialimplementering, till exempelManagedIdentityCredential. Se Härledd lista för alternativ. - En avskalad
ChainedTokenCredentialimplementering optimerad för Azure-miljön där appen körs.ChainedTokenCredentialskapar i princip en specifik lista över godtagbara alternativ för autentiseringsuppgifter, till exempelManagedIdentityför produktion ochVisualStudioCredentialför utveckling.
- En specifik
Konfigurera systemtilldelade eller användartilldelade hanterade identiteter till de Azure-resurser där koden körs om möjligt. Konfigurera Microsoft Entra ID-åtkomst till dessa specifika identiteter.
Felsökning
Kontrollera att du har rätt behörigheter tilldelade innan du felsöker:
Gå till Azure-portalen och leta reda på den Azure AI Foundry-resurs (tidigare känd Azure AI Services-resurs) som du använder.
I den vänstra rutan väljer du Åtkomstkontroll (IAM) och sedan Kontrollera åtkomst.
Ange namnet på den användare eller identitet som du använder för att ansluta till tjänsten.
Kontrollera att rollen Cognitive Services-användare visas (eller en roll som innehåller de behörigheter som krävs enligt beskrivningen i Krav).
Viktigt!
Roller som Ägare eller Deltagare ger inte åtkomst via Microsoft Entra-ID.
Om rollen inte visas följer du stegen i den här guiden innan du fortsätter.
Följande tabell innehåller flera scenarier som kan hjälpa dig att felsöka Microsoft Entra-ID:
| Fel/scenario | Grundorsak | Lösning |
|---|---|---|
| Du använder en SDK. | Kända problem. | Innan du gör ytterligare felsökning installerar du den senaste versionen av programvaran som du använder för att ansluta till tjänsten. Autentiseringsbuggar kanske redan har åtgärdats i en nyare version av programvaran som du använder. |
401 Principal does not have access to API/Operation |
Begäran anger autentisering på rätt sätt, men användarens huvudkonto har inte de behörigheter som krävs för att använda inferensslutpunkten. | Kontrollera att du har: 1. Tilldelade rollen Cognitive Services-användare till ditt huvudnamn till Azure AI Foundry-resursen (tidigare känd Azure AI Services). Observera att Cognitive Services OpenAI-användare endast ger åtkomst till OpenAI-modeller. Ägare eller deltagare ger inte heller åtkomst. 1. Vänta minst 5 minuter innan du ringer det första samtalet. |
401 HTTP/1.1 401 PermissionDenied |
Begäran anger autentisering på rätt sätt, men användarens huvudkonto har inte de behörigheter som krävs för att använda inferensslutpunkten. | Tilldelade rollen Cognitive Services-användare till din huvudanvändare i Azure AI Foundry-resursen (tidigare känd som Azure AI Services). Roller som administratör eller deltagare har inte stor slutsatsdragningsåtkomst. Vänta minst 5 minuter innan du gör det första samtalet. |
Du använder REST API-anrop och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. |
Authentication Kontrollera att rubriken innehåller en giltig token med ett omfång https://cognitiveservices.azure.com/.default. |
Du använder AzureOpenAI klassen och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. | Kontrollera att du använder en OpenAI-modell som är ansluten till slutpunkten https://<resource>.openai.azure.com. Du kan inte använda OpenAI klass eller modeller som en tjänst-modell. Om din modell inte är från OpenAI använder du Azure AI Inference SDK. |
Du använder Azure AI Inference SDK och du får 401 Unauthorized. Access token is missing, invalid, audience is incorrect, or have expired. |
Begäran kan inte utföra autentisering med Microsoft Entra-ID. | Kontrollera att du är ansluten till slutpunkten https://<resource>.services.ai.azure.com/model och att du angav rätt omfång för Microsoft Entra-ID (https://cognitiveservices.azure.com/.default). |
404 Not found |
Slutpunkts-URL:en är felaktig baserat på den SDK som du använder, eller så finns inte modelldistributionen. | Kontrollera att du använder rätt SDK som är ansluten till rätt slutpunkt: 1. Om du använder Azure AI-slutsatsdragnings-SDK:n kontrollerar du att slutpunkten finns https://<resource>.services.ai.azure.com/model med model="<model-deployment-name>" i nyttolasten eller att slutpunkten är https://<resource>.openai.azure.com/deployments/<model-deployment-name>. Om du använder AzureOpenAI klassen kontrollerar du att slutpunkten är https://<resource>.openai.azure.com. |
Inaktivera nyckelbaserad autentisering i resursen
Inaktivera nyckelbaserad autentisering när du implementerar Microsoft Entra-ID och fullständigt åtgärda kompatibilitets- eller reservproblem i alla program som använder tjänsten. Ändra egenskapen disableLocalAuth för att inaktivera nyckelbaserad autentisering:
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: {
customSubDomainName: accountName
publicNetworkAccess: publicNetworkAccess
networkAcls: {
defaultAction: networkAclsDefaultAction
}
disableLocalAuth: allowKeys
}
}
output endpointUri string = 'https://${account.outputs.name}.services.ai.azure.com/models'
output id string = account.id