كيفية تكوين خدمة Azure OpenAI مع الهويات المدارة

تتطلب سيناريوهات الأمان الأكثر تعقيدًا التحكم في الوصول المستند إلى دور Azure (Azure RBAC). يغطي هذا المستند كيفية المصادقة على مورد OpenAI باستخدام معرف Microsoft Entra.

في الأقسام التالية، ستستخدم Azure CLI لتسجيل الدخول، والحصول على رمز حامل للاتصال بمورد OpenAI. إذا واجهتك مشكلة، فسيتم توفير الروابط في كل قسم مع جميع الخيارات المتاحة لكل أمر في Azure Cloud Shell/Azure CLI.

المتطلبات الأساسية

تعيين دور

قم بتعيين دور مستخدم OpenAI للخدمات المعرفية أو Cognitive Services OpenAI Contributor للسماح لك باستخدام حسابك لإجراء استدعاءات API للاستدلال على Azure OpenAI بدلا من الاضطرار إلى استخدام المصادقة المستندة إلى المفتاح. بعد إجراء هذا التغيير، قد يستغرق الأمر ما يصل إلى 5 دقائق قبل أن يدخل التغيير حيز التنفيذ.

سجّل الدخول إلى Azure CLI

لتسجيل الدخول إلى Azure CLI، قم بتشغيل الأمر التالي وأكمل تسجيل الدخول. قد تحتاج إلى القيام بذلك مرة أخرى إذا كانت جلستك الخامة لفترة طويلة جدا.

az login

إكمال الدردشة

from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
    api_version="2024-02-15-preview",
    azure_endpoint="https://{your-custom-endpoint}.openai.azure.com/",
    azure_ad_token_provider=token_provider
)

response = client.chat.completions.create(
    model="gpt-35-turbo-0125", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

الاستعلام عن Azure OpenAI باستخدام واجهة برمجة تطبيقات مستوى التحكم

import requests
import json
from azure.identity import DefaultAzureCredential

region = "eastus"
token_credential = DefaultAzureCredential()
subscriptionId = "{YOUR-SUBSCRIPTION-ID}" 


token = token_credential.get_token('https://management.azure.com/.default')
headers = {'Authorization': 'Bearer ' + token.token}

url = f"https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/locations/{region}/models?api-version=2023-05-01"

response = requests.get(url, headers=headers)

data = json.loads(response.text)

print(json.dumps(data, indent=4))

تخويل الوصول إلى هويات مدارة

يدعم OpenAI مصادقة Microsoft Entra مع الهويات المدارة لموارد Azure. يمكن للهويات المدارة لموارد Azure تخويل الوصول إلى موارد خدمات Azure الذكاء الاصطناعي باستخدام بيانات اعتماد Microsoft Entra من التطبيقات التي تعمل في أجهزة Azure الظاهرية (VMs) وتطبيقات الوظائف ومجموعات مقياس الجهاز الظاهري والخدمات الأخرى. باستخدام الهويات المدارة لموارد Azure مع مصادقة Microsoft Entra، يمكنك تجنب تخزين بيانات الاعتماد مع التطبيقات التي تعمل في السحابة.

تمكين الهويات المُدارة على جهاز ظاهري

قبل أن تتمكن من استخدام الهويات المدارة لموارد Azure لتخويل الوصول إلى موارد خدمات Azure الذكاء الاصطناعي من الجهاز الظاهري، يجب تمكين الهويات المدارة لموارد Azure على الجهاز الظاهري. لمعرفة كيفية تمكين الهويات المُدارة لـAzure Resources، راجع:

لمزيد من المعلومات حول الهويات المدارة، راجع الهويات المدارة لموارد Azure.