Konfigurera nyckellös autentisering med Microsoft Entra-ID
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Modeller som distribueras till Azure AI-modellinferens i Azure AI Services stöder nyckellös auktorisering med Hjälp av 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. Det gör det till 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-modellinferens.
Förstå roller i resurskontexten i Azure
Microsoft Entra ID använder idén om rollbaserad åtkomstkontroll (RBAC) för auktorisering. Roller är centrala för att hantera åtkomsten till dina molnresurser. En roll är i princip 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-modellinferens är en funktion för Azure AI Services-resurserna och därför kontrollerar roller som tilldelats den specifika resursen åtkomsten för slutsatsdragning.
Du identifierar två olika typer av åtkomst till resurserna:
Administrationsåtkomst: De åtgärder som är relaterade till administrationen 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 Portal, Azure CLI eller med infrastruktur som kod. Exempel på är att skapa en ny modelldistribution, ändra konfigurationer för innehållsfiltrering, ändra versionen av modellen som hanteras eller ändra SKU:n för en distribution.
Utvecklaråtkomst: De åtgärder som är relaterade till 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örs alltid administrationsåtgärder med Hjälp av Microsoft Entra-ID. 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 bevilja 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ölj de här stegen för att konfigurera utvecklaråtkomst till Azure AI-modellinferens i Azure AI Services-resursen.
Förutsättningar
För att slutföra den här artikeln behöver du:
En Azure-prenumeration 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-modellinferens om så är fallet.
En Azure AI-tjänstresurs. Mer information finns i Skapa en Azure AI Services-resurs.
Ett konto med
Microsoft.Authorization/roleAssignments/write
ochMicrosoft.Authorization/roleAssignments/delete
behörigheter, till exempel rollbaserad åtkomstkontroll för administratör .Om du vill tilldela en roll måste du ange tre element:
- Säkerhetsobjekt: t.ex. ditt användarkonto.
- Rolldefinition: Cognitive Services-användarrollen.
- Omfång: Azure AI Services-resursen.
Konfigurera Microsoft Entra-ID för slutsatsdragning
Följ dessa steg för att konfigurera Microsoft Entra-ID för slutsatsdragning:
Gå till Azure Portal och leta upp den 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 Öppna hanteringscenter.
Gå till avsnittet Anslutna resurser och välj anslutningen till den Azure AI Services-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 Portal där du kan hantera alla aspekter av själva resursen.
Välj Åtkomstkontroll (IAM) i det vänstra navigeringsfältet.
Dricks
Använd alternativet Visa min åtkomst för att kontrollera vilka roller som redan har tilldelats dig.
Välj Rolltilldelningar och välj sedan Lägg till lägg till>rolltilldelning.
I Jobbfunktionsroller skriver du Cognitive Services-användare. Listan över roller filtreras bort.
Välj rollen och välj Nästa.
På Medlemmar väljer du den användare eller grupp som du vill bevilja åtkomst till. Vi rekommenderar att du använder 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.
Dricks
Tänk på att Azure-rolltilldelningar kan ta upp till fem minuter att sprida. När du arbetar med säkerhetsgrupper sprids omedelbart tillägg eller borttagning av användare från säkerhetsgruppen.
Observera att nyckelbaserad åtkomst fortfarande är möjlig för användare som redan har tillgängliga nycklar. Om du vill återkalla nycklarna går du till Azure Portal i det vänstra navigeringsfönstret och väljer Resurshanteringsnycklar>>och Slutpunkter Återskapa Key1 och Återskapa nyckel2.
Använda Microsoft Entra-ID i koden
När du har konfigurerat Microsoft Entra-ID i resursen måste du uppdatera koden så att den används när slutpunkten för slutsatsdragning används. I följande exempel visas hur du använder en modell för chattavslut:
Installera paketet azure-ai-inference
med hjälp av pakethanteraren, till exempel pip:
pip install azure-ai-inference>=1.0.0b5
Varning
Azure AI Services-resursen kräver versionen azure-ai-inference>=1.0.0b5
för Python.
Sedan kan du använda paketet för att använda modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar med 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"],
model="mistral-large-2407",
)
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 inte går att hämta en åtkomsttoken görs nästa autentiseringsuppgifter i sekvensen och så vidare tills en åtkomsttoken har hämtats. 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. Endera metoden kan användas för att autentisera appen till Azure-resurser under lokal utveckling.
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.
Bästa praxis
Använd deterministiska autentiseringsuppgifter i produktionsmiljöer: Överväg starkt att flytta från
DefaultAzureCredential
till någon av följande deterministiska lösningar i produktionsmiljöer:- En specifik
TokenCredential
implementering, till exempelManagedIdentityCredential
. Se listan Härledd för alternativ. - En avskalad implementering optimerad för Azure-miljön
ChainedTokenCredential
där appen körs.ChainedTokenCredential
skapar i princip en specifik lista över godtagbara alternativ för autentiseringsuppgifter, till exempelManagedIdentity
för produktion ochVisualStudioCredential
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.
Använda Microsoft Entra-ID i projektet
Även om din resurs har Konfigurerat Microsoft Entra-ID kan dina projekt fortfarande använda nycklar för att använda förutsägelser från resursen. När du använder Azure AI Foundry Playground används de autentiseringsuppgifter som är associerade med den anslutning som projektet har.
Om du vill ändra det här beteendet måste du uppdatera anslutningarna från dina projekt för att använda Microsoft Entra-ID. Följ de här stegen:
Gå till Azure AI Foundry-portalen.
Navigera till de projekt eller hubbar som använder Azure AI Services-resursen via en anslutning.
Välj Hanteringscenter.
Gå till avsnittet Anslutna resurser och välj anslutningen till den Azure AI Services-resurs som du vill konfigurera. Om den inte visas väljer du Visa alla för att se den fullständiga listan.
Välj redigeringsikonen bredvid Åtkomstinformation i avsnittet Anslutningsinformation.
Under Autentisering ändrar du värdet till Microsoft Entra-ID.
Välj Uppdatera.
Anslutningen är konfigurerad för att fungera med Microsoft Entra-ID nu.
Inaktivera nyckelbaserad autentisering i resursen
Det rekommenderas att du inaktiverar nyckelbaserad autentisering när du implementerade Microsoft Entra-ID och fullständigt åtgärdade kompatibilitets- eller reservproblem i alla program som använder tjänsten.
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Modeller som distribueras till Azure AI-modellinferens i Azure AI Services stöder nyckellös auktorisering med Hjälp av 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. Det gör det till 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-modellinferens.
Förstå roller i resurskontexten i Azure
Microsoft Entra ID använder idén om rollbaserad åtkomstkontroll (RBAC) för auktorisering. Roller är centrala för att hantera åtkomsten till dina molnresurser. En roll är i princip 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-modellinferens är en funktion för Azure AI Services-resurserna och därför kontrollerar roller som tilldelats den specifika resursen åtkomsten för slutsatsdragning.
Du identifierar två olika typer av åtkomst till resurserna:
Administrationsåtkomst: De åtgärder som är relaterade till administrationen 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 Portal, Azure CLI eller med infrastruktur som kod. Exempel på är att skapa en ny modelldistribution, ändra konfigurationer för innehållsfiltrering, ändra versionen av modellen som hanteras eller ändra SKU:n för en distribution.
Utvecklaråtkomst: De åtgärder som är relaterade till 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örs alltid administrationsåtgärder med Hjälp av Microsoft Entra-ID. 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 bevilja 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ölj de här stegen för att konfigurera utvecklaråtkomst till Azure AI-modellinferens i Azure AI Services-resursen.
Förutsättningar
För att slutföra den här artikeln behöver du:
En Azure-prenumeration 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-modellinferens om så är fallet.
En Azure AI-tjänstresurs. Mer information finns i Skapa en Azure AI Services-resurs.
Ett konto med
Microsoft.Authorization/roleAssignments/write
ochMicrosoft.Authorization/roleAssignments/delete
behörigheter, till exempel rollbaserad åtkomstkontroll för administratör .Om du vill tilldela en roll måste du ange tre element:
- Säkerhetsobjekt: t.ex. ditt användarkonto.
- Rolldefinition: Cognitive Services-användarrollen.
- Omfång: Azure AI Services-resursen.
Installera Azure CLI.
Identifiera följande information:
ditt prenumerations-ID för Azure
Ditt Azure AI Services-resursnamn.
Resursgruppen där Azure AI Services-resursen distribueras.
Konfigurera Microsoft Entra-ID för slutsatsdragning
Följ de här stegen för att konfigurera Microsoft Entra-ID för slutsatsdragning i din Azure AI Services-resurs:
Logga in på din Azure-prenumeration:
az login
Om 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 Services-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")
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-användarrollen till tjänstens huvudnamn (omfångsbegränsat till resursen). Genom att tilldela en roll ger du tjänstens huvudnamn åtkomst till den här resursen.
az role assignment create --assignee-object-id $OBJECT_ID --role "Cognitive Services User" --scope $RESOURCE_ID
Den valda användaren kan nu använda Microsoft Entra-ID för slutsatsdragning.
Dricks
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 Microsoft Entra-ID har konfigurerats i resursen måste du uppdatera koden så att den används när slutpunkten för slutsatsdragning används. I följande exempel visas hur du använder en modell för chattavslut:
Installera paketet azure-ai-inference
med hjälp av pakethanteraren, till exempel pip:
pip install azure-ai-inference>=1.0.0b5
Varning
Azure AI Services-resursen kräver versionen azure-ai-inference>=1.0.0b5
för Python.
Sedan kan du använda paketet för att använda modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar med 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"],
model="mistral-large-2407",
)
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 inte går att hämta en åtkomsttoken görs nästa autentiseringsuppgifter i sekvensen och så vidare tills en åtkomsttoken har hämtats. 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. Endera metoden kan användas för att autentisera appen till Azure-resurser under lokal utveckling.
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.
Bästa praxis
Använd deterministiska autentiseringsuppgifter i produktionsmiljöer: Överväg starkt att flytta från
DefaultAzureCredential
till någon av följande deterministiska lösningar i produktionsmiljöer:- En specifik
TokenCredential
implementering, till exempelManagedIdentityCredential
. Se listan Härledd för alternativ. - En avskalad implementering optimerad för Azure-miljön
ChainedTokenCredential
där appen körs.ChainedTokenCredential
skapar i princip en specifik lista över godtagbara alternativ för autentiseringsuppgifter, till exempelManagedIdentity
för produktion ochVisualStudioCredential
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.
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Modeller som distribueras till Azure AI-modellinferens i Azure AI Services stöder nyckellös auktorisering med Hjälp av 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. Det gör det till 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-modellinferens.
Förstå roller i resurskontexten i Azure
Microsoft Entra ID använder idén om rollbaserad åtkomstkontroll (RBAC) för auktorisering. Roller är centrala för att hantera åtkomsten till dina molnresurser. En roll är i princip 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-modellinferens är en funktion för Azure AI Services-resurserna och därför kontrollerar roller som tilldelats den specifika resursen åtkomsten för slutsatsdragning.
Du identifierar två olika typer av åtkomst till resurserna:
Administrationsåtkomst: De åtgärder som är relaterade till administrationen 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 Portal, Azure CLI eller med infrastruktur som kod. Exempel på är att skapa en ny modelldistribution, ändra konfigurationer för innehållsfiltrering, ändra versionen av modellen som hanteras eller ändra SKU:n för en distribution.
Utvecklaråtkomst: De åtgärder som är relaterade till 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örs alltid administrationsåtgärder med Hjälp av Microsoft Entra-ID. 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 bevilja 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ölj de här stegen för att konfigurera utvecklaråtkomst till Azure AI-modellinferens i Azure AI Services-resursen.
Förutsättningar
För att slutföra den här artikeln behöver du:
En Azure-prenumeration 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-modellinferens om så är fallet.
En Azure AI-tjänstresurs. Mer information finns i Skapa en Azure AI Services-resurs.
Ett konto med
Microsoft.Authorization/roleAssignments/write
ochMicrosoft.Authorization/roleAssignments/delete
behörigheter, till exempel rollbaserad åtkomstkontroll för administratör .Om du vill tilldela en roll måste du ange tre element:
- Säkerhetsobjekt: t.ex. ditt användarkonto.
- Rolldefinition: Cognitive Services-användarrollen.
- Omfång: Azure AI Services-resursen.
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 som finns i lagringsplatsen Azure-Samples/azureai-model-inference-bicep . Om du vill köra kommandona lokalt utan att behöva 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
Självstudien hjälper dig att skapa:
- En 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.
Du använder följande tillgångar för att skapa dessa resurser:
Använd mallen
modules/ai-services-template.bicep
för att beskriva din Azure AI Services-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: { publicNetworkAccess: publicNetworkAccess networkAcls: { defaultAction: networkAclsDefaultAction } disableLocalAuth: allowKeys } } output endpointUri string = account.properties.endpoints['Azure AI Model Inference API'] output id string = account.id
Dricks
Observera att den här mallen kan ta parametern
allowKeys
som, närfalse
inaktiverar användningen av nycklar i resursen. Denna konfiguration är valfri.Använd mallen
modules/role-assignment-template.bicep
fö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.endpointUri
Logga in på Azure:
az login
Se till att du har rätt prenumeration:
az account set --subscription "<subscription-id>"
Kör distributionen:
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
Mallen matar ut slutpunkten för Azure AI-modellens slutsatsdragning som du kan använda för att använda någon av de modelldistributioner som du har skapat.
Använda Microsoft Entra-ID i koden
När du har konfigurerat Microsoft Entra-ID i resursen måste du uppdatera koden så att den används när slutpunkten för slutsatsdragning används. I följande exempel visas hur du använder en modell för chattavslut:
Installera paketet azure-ai-inference
med hjälp av pakethanteraren, till exempel pip:
pip install azure-ai-inference>=1.0.0b5
Varning
Azure AI Services-resursen kräver versionen azure-ai-inference>=1.0.0b5
för Python.
Sedan kan du använda paketet för att använda modellen. I följande exempel visas hur du skapar en klient för att använda chattavslutningar med 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"],
model="mistral-large-2407",
)
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 inte går att hämta en åtkomsttoken görs nästa autentiseringsuppgifter i sekvensen och så vidare tills en åtkomsttoken har hämtats. 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. Endera metoden kan användas för att autentisera appen till Azure-resurser under lokal utveckling.
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.
Bästa praxis
Använd deterministiska autentiseringsuppgifter i produktionsmiljöer: Överväg starkt att flytta från
DefaultAzureCredential
till någon av följande deterministiska lösningar i produktionsmiljöer:- En specifik
TokenCredential
implementering, till exempelManagedIdentityCredential
. Se listan Härledd för alternativ. - En avskalad implementering optimerad för Azure-miljön
ChainedTokenCredential
där appen körs.ChainedTokenCredential
skapar i princip en specifik lista över godtagbara alternativ för autentiseringsuppgifter, till exempelManagedIdentity
för produktion ochVisualStudioCredential
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.
Inaktivera nyckelbaserad autentisering i resursen
Det rekommenderas att du inaktiverar nyckelbaserad autentisering när du implementerade Microsoft Entra-ID och fullständigt åtgärdade kompatibilitets- eller reservproblem i alla program som använder tjänsten. Du kan uppnå det genom att ändra egenskapen 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