Microsoft Entra ID 認証を使用して Azure OpenAI Service を構成する方法
より複雑なセキュリティ シナリオでは、Azure ロールベースのアクセス制御 (Azure RBAC) が必要です。 このドキュメントでは、Microsoft Entra ID を使って Azure OpenAI リソースに対する認証を行う方法について説明します。
以降のセクションでは、Azure CLI を使ってサインインし、ベアラー トークンを取得して OpenAI リソースを呼び出します。 問題が発生した場合は、各セクションに、Azure Cloud Shell/Azure CLI の各コマンドで使用可能なすべてのオプションへのリンクが提供されています。
前提条件
Azure サブスクリプション - 無料アカウントを作成します
Azure CLI: インストール ガイド
次の Python ライブラリ: os、requests、json、openai、azure-identity
ロールを割り当てる
自分に Cognitive Services OpenAI ユーザーまたは Cognitive Services OpenAI 共同作成者ロールのいずれかを割り当てると、キーベースの認証を使うことなく、自分のアカウントを使って Azure OpenAI 推論 API 呼び出しを行うことができます。この変更を行った後、変更が有効になるまでに最長 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)
コントロール プレーン API を使った 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))
マネージド ID へのアクセスを認証する
OpenAI では、Azure リソースのマネージド ID を使用した Microsoft Entra 認証をサポートしています。 Azure リソースのマネージド ID では、Azure 仮想マシン (VM)、関数アプリ、仮想マシン スケール セットなどのサービスで実行されているアプリケーションから Azure AI サービス リソースへのアクセスを、Microsoft Entra 資格情報を使用して承認することができます。 Azure リソースのマネージド ID と Microsoft Entra 認証を併用すると、クラウドで実行されるアプリケーションに資格情報を保存することを避けることができます。
VM 上のマネージド ID を有効にする
Azure リソースのマネージド ID を使用して、ご利用の VM から Azure AI サービス リソースへのアクセスを承認するには、VM 上で Azure リソースのマネージド ID を有効にする必要があります。 Azure リソースのマネージド ID を有効にする方法については、次を参照してください。
- Azure Portal
- Azure PowerShell
- Azure CLI
- Azure Resource Manager テンプレート
- Azure Resource Manager クライアント ライブラリ
マネージド ID の詳細については、Azure リソースのマネージド ID に関するページを参照してください。