エージェント ID ブループリントを作成した後、次の手順は、テナント内の AI エージェントを表す 1 つ以上の エージェント ID を 作成することです。 エージェント ID の作成は、通常、新しい AI エージェントをプロビジョニングするときに実行されます。
エージェント ID は、次の 2 つの方法で作成できます。
-
Microsoft Entra 管理センター - 管理センター ウィザードを使用して、ID をすばやく個別に作成します。
-
Microsoft Graph API — エージェント ID をプログラムで作成する Web サービスを構築します。これは、大規模な自動プロビジョニングに役立ちます。
テスト目的でエージェント ID をすばやく作成する場合は、このMicrosoft Entra PowerShell モジュールを使用してエージェント ID を作成および使用することを検討してください。
前提条件
エージェント ID を作成するには、次のものが必要です。
-
エージェント ID ブループリント。 作成プロセスからエージェント ID ブループリント アプリ ID を記録します。
- エージェント ID 作成ロジックをホストする Web サービスまたはアプリケーション (ローカルで実行されているか、Azureにデプロイされている)。 この前提条件は、エージェント ID をプログラムで作成する場合にのみ適用されます。
Microsoft Entra 管理センターを使用する
既存のブループリントを選択し、所有者とスポンサーを割り当てることで、Microsoft Entra 管理センターでエージェント ID を直接作成できます。
Microsoft Entra 管理センターにサインインします。
Entra ID>Agents>Agent ids に移動します。
[ 新しいエージェント ID (プレビュー)]を選択します。
[基本] タブで、次の 操作 を行います。
[ 所有者とスポンサー ] タブで、必要に応じて ID の所有者とスポンサーを追加します。
- [ 所有者 ] フィールドの横にある鉛筆アイコンを選択して、このエージェント ID を管理できるユーザーを変更または追加します。
-
[スポンサー] フィールドの横にある鉛筆アイコンを選択して、このエージェント ID をスポンサーできるユーザーを変更または追加します。
Note
スポンサーには、ユーザー、動的メンバーシップ グループ、またはMicrosoft 365 グループを指定できます。 セキュリティ グループとロール割り当て可能なグループは、スポンサーとしてサポートされていません。
次へを選択します。
設定を確認し、[ 作成] を選択します。
[ 完了] を選択してウィザードを終了するか、 エージェント ID に移動して ID の詳細ページを表示するか、その他の設定を構成します。
次の手順では、Microsoft Graph APIとMicrosoft.Identity.Webを使用してプログラム的にエージェント ID を作成する方法について説明します。 最初にアクセス トークンを取得してから、作成 API を呼び出します。
エージェント ID ブループリントを使用してアクセス トークンを取得する
エージェント ID ブループリントを使用して、各エージェント ID を作成します。 エージェント ID ブループリントを使用して、Microsoft Entraからアクセス トークンを要求します。
マネージド ID を資格情報として使用する場合は、まずマネージド ID を使用してアクセス トークンを取得する必要があります。 マネージド ID トークンは、コンピューティング環境でローカルに公開されている IP アドレスから要求できます。 詳細については、 マネージド ID のドキュメントを参照してください。
GET http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-08-01&resource=api://AzureADTokenExchange/.default
Metadata: True
マネージド ID のトークンを取得したら、エージェント ID ブループリントのトークンを要求します。
POST https://login.microsoftonline.com/<my-test-tenant>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id=<agent-blueprint-id>
scope=https://graph.microsoft.com/.default
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion=<msi-token>
grant_type=client_credentials
client_secret パラメーターは、クライアント シークレットがローカル開発で使用されている場合に、client_assertionとclient_assertion_typeの代わりに使用することもできます。
Microsoft.Identity.Web をインストールするには:
dotnet add package Microsoft.Identity.Web
Microsoft。Identity.Web には、アクセス トークンを自動的に要求し、それを送信 HTTP 要求にアタッチするインターフェイスが含まれています。
Microsoft.Identity.Web を使用する場合、次の手順に進むことができます。
エージェント ID を作成する
前の手順で取得したアクセス トークンを使用して、テナントにエージェント ID を作成できるようになりました。 エージェント ID の作成は、ユーザーが新しいエージェントを作成するためのボタンを選択するなど、さまざまなイベントやトリガーに応答して発生する可能性があります。 エージェントごとに 1 つのエージェント ID を作成することをお勧めしますが、ニーズに応じて異なるアプローチを選択することもできます。
@odata.typeを使用するときは、常に OData-Version ヘッダーを含めます。
POST https://graph.microsoft.com/beta/serviceprincipals/Microsoft.Graph.AgentIdentity
OData-Version: 4.0
Content-Type: application/json
Authorization: Bearer <token>
{
"displayName": "My Agent Identity",
"agentIdentityBlueprintId": "<my-agent-blueprint-id>",
"sponsors@odata.bind": [
"https://graph.microsoft.com/v1.0/users/<id>",
"https://graph.microsoft.com/v1.0/groups/<group-id>"
],
}
Note
スポンサーとしてグループを割り当てる場合、 サポートされているグループの種類 のみが受け入れられます。 グループは所有者としてサポートされていません。
Microsoft.Identity.Webを使用して、エージェント ID を作成する Microsoft Graph API 要求を実行するには、次の MISE 構成ファイルを追加します。
Warnung
セキュリティ リスクのために、エージェント ID ブループリントの運用環境では、クライアント シークレットをクライアント資格情報として使用しないでください。 代わりに、マネージド ID またはクライアント証明書を使用 するフェデレーション ID 資格情報 (FIC) などのより安全な認証方法を使用してください。 これらの方法により、アプリケーション構成内に機密性の高いシークレットを直接格納する必要がなくなり、セキュリティが強化されます。
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "<my-test-tenant>",
"ClientId": "<my-agent-blueprint-id>",
"Scopes": "access_agent",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "your-client-secret"
}
]
},
"DownstreamApis": {
"agent-identity": {
"BaseUrl": "https://graph.microsoft.com",
"RelativePath": "/beta/serviceprincipals/Microsoft.Graph.AgentIdentity",
"Scopes": ["00000003-0000-0000-c000-000000000000/.default"],
"RequestAppToken": true
}
}
}
ASP.NET Core アプリ (Program.cs) のコードは次の例です。
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web.Resource;
using Microsoft.IdentityModel.S2S.Extensions.AspNetCore;
using MyAgent;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration)
.EnableTokenAcquisitionToCallDownstreamApi();
builder.Services.AddInMemoryTokenCaches();
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
public class AgentIdentity
{
[JsonPropertyName("@odata.type")]
public string @odata_type { get; set; } = "#Microsoft.Graph.AgentIdentity";
[JsonPropertyName("displayName")]
public string? displayName { get; set; }
[JsonPropertyName("agentIdentityBlueprintId")]
public string? agentIdentityBlueprintId { get; set; }
[JsonPropertyName("id")]
public string? id { get; set; }
[JsonPropertyName("sponsors@odata.bind")]
public string[]? sponsorsOdataBind { get; set; }
[JsonPropertyName("owners@odata.bind")]
public string[]? ownersOdataBind { get; set; }
}
// Create an Agent identity
app.MapGet("/create-agent-identity", async (HttpContext httpContext) =>
{
try
{
// Get the service to call the downstream API (preconfigured in the appsettings.json file)
IDownstreamApi downstreamApi = httpContext.RequestServices.GetRequiredService<IDownstreamApi>();
// Call the downstream API with a POST request to create an Agent Identity
var jsonResult = await downstreamApi.PostForAppAsync<AgentIdentity, AgentIdentity>(
"agent-identity",
new AgentIdentity {
displayName = "My agent identity",
agentIdentityBlueprintId = "<my-agent-blueprint-id>",
sponsorsOdataBind = new [] { "https://graph.microsoft.com/v1.0/users/<id>" }
}
);
return jsonResult?.id;
}
catch (Exception ex)
{
return ex.Message;
}
})
app.Run();
エージェント ID を削除する
エージェントの割り当てが解除または破棄されると、サービスは関連するエージェント ID も削除する必要があります。
DELETE https://graph.microsoft.com/beta/serviceprincipals/<agent-identity-id>
OData-Version: 4.0
Content-Type: application/json
Authorization: Bearer <token>
// Delete an Agent identity
app.MapGet("/delete-agent-identity", async (HttpContext httpContext, string id) =>
{
// Get the service to call the downstream API (preconfigured in the appsettings.json file)
IDownstreamApi downstreamApi = httpContext.RequestServices.GetRequiredService<IDownstreamApi>();
// Call the downstream API with a DELETE request to remove an Agent Identity
var jsonResult = await downstreamApi.DeleteForAppAsync<string, string>(
"agent-identity",
null!,
options =>
{
options.RelativePath += $"/{id}"; // Specify the ID of the agent identity to delete
});
return jsonResult;
})
関連するコンテンツ