Closed6
Azure AI Foundry への認証方法について考える(TypeScript利用)

概要
TypeScriptで開発しているバックエンドのアプリケーションから、Azure AI Foundry に接続したい。具体的には Azure AI Foundry のエージェント機能を使いたい。
そのためにはいくつかのパッケージをインストールして、Azure の認証状態を作る必要がある。その方法について考える。
※筆者はAzure初心者です

必要なパッケージ
まず、こちらが Azure AI Foundry のプレイグラウンドで表示されるサンプルコード。一部を抜粋。
import { AIProjectsClient } from "@azure/ai-projects";
import { DefaultAzureCredential } from "@azure/identity";
const client = AIProjectsClient.fromConnectionString(
"ここに接続文字列",
new DefaultAzureCredential()
);
@azure/ai-projects
と @azure/identity
の2つのパッケージが必要そう。

DefaultAzureCredential とは何か
認証に使っている DefaultAzureCredential
とは何なのか。必須な引数は無し。
以下のドキュメントによると、裏側で9通りの認証が実行される。
9通りの認証が上から順に行われ、1つもパスしなければ、認証失敗エラーとなる模様。

キー認証は使えないっぽい
自分たちのアプリケーションでは、今までキーによる認証を行っていた。以下のような感じ。
import {
AzureKeyCredential,
SearchClient,
} from '@azure/search-documents';
import env from 'env';
export const searchClient = new SearchClient(
"ここにエンドポイントURL",
"ここにインデックス名",
new AzureKeyCredential(env.AZURE_API_KEY),
);
しかし、今回利用する @azure/ai-projects
パッケージでは、この AzureKeyCredential
を使った認証に対応していない。

どの認証方法を使うべきか
それでは、9通りの認証方法のうち、どれを使うべきか。
以下、ChatGPTに要約してもらったもの。
No. | 認証名 | 説明 | 主な用途 |
---|---|---|---|
1 | EnvironmentCredential | 環境変数からクライアントID / シークレットを取得して認証。 | CI/CD・本番環境・Service Principal |
2 | WorkloadIdentityCredential | AKS上で Azure Workload Identity を使って認証。 | AKSでのPod単位の認証 |
3 | ManagedIdentityCredential | Azure VM / App Service などのマネージドIDで認証。 | 本番環境・Azureホスティング環境 |
4 | SharedTokenCacheCredential | Microsoftアカウントのトークンキャッシュから認証情報を取得。 | MS365/Officeと連携するローカルアプリ |
5 | VisualStudioCredential | Visual Studio にログイン済みのアカウント情報を使用。 | Windows + Visual Studio開発環境 |
6 | AzurePowerShellCredential | PowerShell の Connect-AzAccount の認証情報を使用。 |
PowerShellスクリプトの自動化 |
7 | AzureCliCredential |
az login によるCLIログイン情報を使用。 |
ローカル開発・CLIベースの開発 |
8 | AzureDeveloperCliCredential |
azd auth login の認証情報を使用(Azure Developer CLI)。 |
Dev CLIを使ったIaCやアプリ展開 |
9 | InteractiveBrowserCredential | ブラウザでの対話ログインで認証。 | ローカル検証・一時的な手動認証 |

どの認証方法が良いのか
以下の3つの認証方法がいいかなと思った。
EnvironmentCredential(ローカル環境、CI/CD環境)、AzureCliCredential(ローカル環境)、ManagedIdentityCredential(本番環境)
本番環境を Azure 以外でホスティングしているなら、本番環境の認証はまた別のものになるかも。
このスクラップは3ヶ月前にクローズされました