A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket kulcsokkal vagy jelszó nélküli kapcsolatokkal kell hitelesíteni. A fejlesztőknek szorgalmasnak kell lenniük ahhoz, hogy a kulcsok ne legyenek biztonságos helyen elérhetővé. Bárki, aki hozzáfér a kulcshoz, hitelesítheti magát a szolgáltatásban. A kulcs nélküli hitelesítés továbbfejlesztett felügyeleti és biztonsági előnyöket biztosít a fiókkulcshoz képest, mivel nincs tárolandó kulcs (vagy kapcsolati sztring).
A kulcs nélküli kapcsolatok a következő lépésekkel engedélyezve vannak:
- Konfigurálja a hitelesítést.
- Szükség szerint állítsa be a környezeti változókat.
- Azure Identity-kódtár hitelesítő adattípusának használatával hozzon létre egy Azure OpenAI-ügyfélobjektumot.
Hitelesítés
Az Azure-ügyfélkódtárak használatához hitelesítés szükséges a Microsoft Entra-azonosítóhoz.
A hitelesítés attól függően különbözik, hogy milyen környezetben fut az alkalmazás:
Azure OpenAI kulcs nélküli építőelem
Az alábbi hivatkozás segítségével megismerheti az Azure OpenAI kulcs nélküli építőelem-AI-sablont. Ez a sablon kiépít egy Azure OpenAI-fiókot a felhasználói fiók RBAC szerepkör-engedélyével a kulcs nélküli (Microsoft Entra) hitelesítéshez az OpenAI API SDK-k eléréséhez.
Feljegyzés
Ez a cikk egy vagy több AI-alkalmazássablont használ a cikkben szereplő példák és útmutatók alapjául. Az AI-alkalmazássablonok jól karbantartott, könnyen üzembe helyezhető referencia-implementációkat biztosítanak, amelyek segítenek magas színvonalú kiindulópontot biztosítani az AI-alkalmazások számára.
Ismerkedjen meg az Azure OpenAI kulcs nélküli hitelesítés építőelem-AI-sablonjának .NET-végpontok közötti használatával.
Hitelesítés helyi fejlesztéshez
Hitelesítés Azure-ban üzemeltetett környezetekhez
Keresse meg az Azure OpenAI használatára vonatkozó szerepkört . A szerepkör beállításának módjától függően szüksége van a névre vagy az azonosítóra.
| Szerepkör neve |
Szerepkör-azonosító |
| Az Azure CLI vagy az Azure PowerShell esetében használhatja a szerepkör nevét. |
A Bicep esetében szüksége van a szerepkör-azonosítóra. |
Az alábbi táblázat segítségével válasszon ki egy szerepkört és egy azonosítót.
| Használati eset |
Szerepkör neve |
Szerepkör-azonosító |
| Segédek |
Cognitive Services OpenAI Contributor |
a001fd3d-188f-4b5d-821b-7da978bf7442 |
| Csevegés befejezése |
Cognitive Services OpenAI User |
5e0bd9bd-7b93-4f28-af87-19fc36ad61bd |
Válasszon ki egy használni kívánt identitástípust.
-
Személyes identitás: Az Azure-ba való bejelentkezéshez kapcsolódó személyes identitás.
-
Felügyelt identitás: Az Azure által felügyelt és az Azure-ban való használatra létrehozott identitás. Felügyelt identitás esetén hozzon létre egy felhasználó által hozzárendelt felügyelt identitást. A felügyelt identitás létrehozásakor szüksége lesz az
Client IDúgynevezett app ID.
A személyes identitás megkereséséhez használja az alábbi parancsok egyikét. Használja az azonosítót a <identity-id> következő lépésben.
A helyi fejlesztéshez a következő paranccsal szerezheti be a saját identitásazonosítóját. A parancs használata előtt be az login kell jelentkeznie.
az ad signed-in-user show \
--query id -o tsv
A helyi fejlesztéshez a következő paranccsal szerezheti be a saját identitásazonosítóját. A parancs használata előtt be Connect-AzAccount kell jelentkeznie.
(Get-AzContext).Account.ExtendedProperties.HomeAccountId.Split('.')[0]
Az üzembe helyezést futtató személy vagy szolgáltatás identitása a paraméterre van állítva az principalIdAzure Developer CLI-vel üzembe helyezett Bicep használatakor.
A következő main.parameters.json változó a folyamatot futtató identitásra van állítva.
"principalId": {
"value": "${AZURE_PRINCIPAL_ID}"
},
Az Azure-ban való használathoz adjon meg egy felhasználó által hozzárendelt felügyelt identitást a Bicep üzembehelyezési folyamatának részeként. Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a folyamatot futtató identitástól elkülönítve.
resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: managedIdentityName
location: location
}
Rendelje hozzá a szerepköralapú hozzáférés-vezérlési (RBAC) szerepkört az erőforráscsoport identitásához.
Ha identitásengedélyeket szeretne adni az erőforrásnak az RBAC-vel, rendeljen hozzá egy szerepkört az Azure CLI-paranccsal az role assignment create paranccsal.
az role assignment create \
--role "Cognitive Services OpenAI User" \
--assignee "<identity-id>" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Ha RBAC-n keresztül szeretne engedélyeket adni az Azure OpenAI-erőforrásnak, rendeljen hozzá egy szerepkört a New-AzRoleAssignment Azure PowerShell-parancsmaggal.
New-AzRoleAssignment -ObjectId "<identity-id>" -RoleDefinitionName "Cognitive Services OpenAI User" -Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Az erőforrás létrehozásához és a hitelesítés beállításához használja az alábbi Azure OpenAI Bicep-sablont identityId. A Bicep-nek szüksége van a szerepkör-azonosítóra. Az name ebben a Bicep-kódrészletben szereplő kódrészlet nem az Azure-szerepkör, hanem a Bicep-telepítésre jellemző.
// main.bicep
param environment string = 'production'
// USER ROLES
module openAiRoleUser 'core/security/role.bicep' = {
scope: openAiResourceGroup
name: 'openai-role-user'
params: {
principalId: (environment == 'development') ? principalId : userAssignedManagedIdentity
principalType: (environment == 'development') ? 'User' : 'ServicePrincipal'
roleDefinitionId: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'
}
}
A rendszer az alábbi általános Bicep-et hívja meg a main.bicep szerepkör létrehozásához.
// core/security/role.bicep
metadata description = 'Creates a role assignment for an identity.'
param principalId string // passed in from main.bicep identityId
@allowed([
'Device'
'ForeignGroup'
'Group'
'ServicePrincipal'
'User'
])
param principalType string = 'ServicePrincipal'
param roleDefinitionId string
resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId)
properties: {
principalId: principalId
principalType: principalType
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
}
}
Az Azure Portal szerepkör-hozzárendelési lapjának megnyitásakor található lépéseket követve.
Szükség esetén cserélje le <identity-id>a , <subscription-id>és <resource-group-name> a tényleges értékeket.
Az Azure OpenAI-hoz való csatlakozáshoz a kódnak ismernie kell az erőforrásvégpontot, és más környezeti változókra is szükség lehet.
Hozzon létre egy környezeti változót az Azure OpenAI-végponthoz.
-
AZURE_OPENAI_ENDPOINT: Ez az URL-cím az Azure OpenAI-erőforrás hozzáférési pontja.
Környezeti változók létrehozása az alkalmazás futtatásának helye alapján:
| Hely |
Identitás |
Leírás |
| Helyi |
Személyes |
A személyes identitással rendelkező helyi futtatókörnyezetek esetében jelentkezzen be a hitelesítő adatok eszköz használatával történő létrehozásához. |
| Azure-felhő |
Felhasználó által hozzárendelt felügyelt identitás |
Hozzon létre egy környezeti változót AZURE_CLIENT_ID , amely tartalmazza a felhasználó által hozzárendelt felügyelt identitás ügyfél-azonosítóját a hitelesítéshez. |
Az Azure Identity ügyfélkódtárának telepítése
Az Azure Identity-ügyfélkódtár telepítéséhez használja az alábbi hivatkozást.
Telepítse a Java Azure Identity ügyfélkódtárat a következő POM-fájllal:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.18.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
DefaultAzureCredential használata
Az Azure Identity-kódtár DefaultAzureCredential lehetővé teszi, hogy az ügyfél ugyanazt a kódot futtassa a helyi fejlesztési környezetben és az Azure Cloudban.
További információért a .NET-hez készült DefaultAzureCredential-val kapcsolatban, kérjük, tekintse meg az DefaultAzureCredential áttekintését.
A felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójának beállításához használja az alábbi módszerek egyikét:
Állítsa be a környezeti változót: AZURE_CLIENT_ID. A paraméter nélküli konstruktor DefaultAzureCredential ennek a környezeti változónak az értékét használja, ha van ilyen.
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
OpenAIClient client = new(new Uri(endpoint), new DefaultAzureCredential());
Állítsa be a tulajdonságot, a ManagedIdentityClientId, DefaultAzureCredentialOptions-n:
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var credential = new DefaultAzureCredential(
new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = "<user_assigned_client_id>"
});
OpenAIClient client = new(new Uri(endpoint), credential);
További információért a Go DefaultAzureCredential-ról, tekintse meg a DefaultAzureCredential áttekintőt a(z)alatt.
import (
"log"
"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
dac, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("ERROR: %s", err)
}
client, err := azopenai.NewClient(os.Getenv("AZURE_OPENAI_ENDPOINT"), dac, nil)
if err != nil {
log.Fatalf("ERROR: %s", err)
}
_ = client
}
További információkért a Java DefaultAzureCredential típusú DefaultAzureCredential áttekintéséről lásd:.
A felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójának beállításához használja az alábbi módszerek egyikét:
Állítsa be a környezeti változót: AZURE_CLIENT_ID. A paraméter nélküli konstruktor DefaultAzureCredential ennek a környezeti változónak az értékét használja, ha van ilyen.
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.ai.openai.OpenAIClient;
import com.azure.ai.openai.OpenAIClientBuilder;
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
OpenAIClient client = new OpenAIClientBuilder()
.credential(credential)
.endpoint(endpoint)
.buildClient();
Kijelöl egy adott felhasználó által hozzárendelt felügyelt identitást a DefaultAzureCredential-hoz, a DefaultAzureCredentialBuilder használatával, hogy konfigurálja egy ügyfélazonosítóval:
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.ai.openai.OpenAIClient;
import com.azure.ai.openai.OpenAIClientBuilder;
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
String userAssignedClientId = "<your managed identity client ID>";
TokenCredential dacWithUserAssignedManagedIdentity
= new DefaultAzureCredentialBuilder().managedIdentityClientId(userAssignedClientId).build();
OpenAIClient client = new OpenAIClientBuilder()
.credential(dacWithUserAssignedManagedIdentity)
.endpoint(endpoint)
.buildClient();
További információ a JavaScript DefaultAzureCredential-ről a DefaultAzureCredential áttekintéseben.
A felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójának beállításához használja az alábbi módszerek egyikét:
Állítsa be a környezeti változót: AZURE_CLIENT_ID. A paraméter nélküli konstruktor DefaultAzureCredential ennek a környezeti változónak az értékét használja, ha van ilyen.
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { AzureOpenAI } from "openai";
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const deployment = "<your Azure OpenAI deployment name>";
const apiVersion = "2024-10-21";
const options = { azureADTokenProvider, deployment, apiVersion, endpoint }
const client = new AzureOpenAI(options);
Egy adott felhasználó által hozzárendelt felügyelt identitást rendeljen hozzá a DefaultAzureCredential-hoz a managedIdentityClientId paraméter használatával, hogy azt ügyfélazonosítóval konfigurálja.
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { AzureOpenAI } from "openai";
const managedIdentityClientId = "<your managed identity client ID>";
const credential = new DefaultAzureCredential({
managedIdentityClientId: managedIdentityClientId,
});
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const deployment = "<your Azure OpenAI deployment name>";
const apiVersion = "2024-10-21";
const options = { azureADTokenProvider, deployment, apiVersion, endpoint }
const client = new AzureOpenAI(options);
A Pythonhoz készült DefaultAzureCredential-ról további információkért tekintse meg a DefaultAzureCredential áttekintését.
A felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójának beállításához használja az alábbi módszerek egyikét:
Állítsa be a környezeti változót: AZURE_CLIENT_ID. A paraméter nélküli konstruktor DefaultAzureCredential ennek a környezeti változónak az értékét használja, ha van ilyen.
import openai
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")
openai_client = openai.AzureOpenAI(
api_version=os.getenv("AZURE_OPENAI_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider
)
Egy adott felhasználó által hozzárendelt felügyelt identitást rendeljen hozzá a DefaultAzureCredential-hoz a managed_identity_client_id paraméter használatával, hogy azt ügyfélazonosítóval konfigurálja.
import openai
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
user_assigned_client_id = "<your managed identity client ID>"
credential = DefaultAzureCredential(
managed_identity_client_id=user_assigned_client_id
)
token_provider = get_bearer_token_provider(credential, "https://cognitiveservices.azure.com/.default")
openai_client = openai.AzureOpenAI(
api_version=os.getenv("AZURE_OPENAI_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider
)
Források