Foundry Hosted Agents’ta Kullanıcı ve Oturum İzolasyonu

Foundry hosted agents’ta izolasyon, kullanıcı izolasyonu ve Foundry hosted session izolasyonu olmak üzere iki bağımsız kontrolle ele alınır. Böylece hem yanıt geçmişi hem de kalıcı dosyalar doğru şekilde ayrıştırılır.

Foundry hosted agent mimarisinde izolasyon iki ayrı kontrole dağıtılmış durumda ve bu iki kontrol birbirinden bağımsız çalışıyor: kullanıcı izolasyonu ve Foundry hosted session izolasyonu. Birincisi “bu isteğin verisi kime ait?” sorusunu cevaplar, ikincisi “kodun çalıştığı ve dosyaların kalıcı olarak durduğu sandbox hangisi?” sorusunu. İkisini ayrı ayrı düşünmek, çok kullanıcılı bir uygulamada yanıt geçmişinin ve dosya sisteminin nasıl ayrışacağını doğru tasarlamayı sağlıyor.

Her iki kontrolde de değeri ya Foundry çözüyor ya da uygulama açıkça sağlıyor. Doğrudan çağıran istemciler, güvenilen bir ara katman (middle tier), uygulamanın kendi yönettiği oturumlar ve paylaşımlı oturum havuzları aynı modelle destekleniyor.

Hangi parça GA, hangisi ön sürümde?

Foundry hosted agents özelliği Microsoft Foundry tarafında genel kullanıma açık (GA) durumda. AgentServer SDK’ları ile.NET ve Python için Microsoft Agent Framework Foundry hosting paketleri ise hala ön sürüm (pre-release) aşamasında, yani API yüzeyinin değişebileceğini varsayarak ilerlemek gerekiyor.

İki kontrolün tanımı

Kontrol Neyi temsil eder Seçenekler
Kullanıcı izolasyonu Mevcut isteğin temsil ettiği kullanıcı Çağıranın Microsoft Entra kimliği veya güvenilen bir ara katmanın gönderdiği delege edilmiş kimlik
Foundry hosted session izolasyonu agent_session_id ile temsil edilen, VM düzeyinde izole sandbox İlk istekte oluşturulan oturum veya uygulamanın sağladığı mevcut oturum kimliği

Sık karıştırılan bir nokta var. Foundry hosted session bir konuşma (conversation) değildir. Konuşma, mesaj ve araç çağrısı geçmişini tutar; Foundry hosted session ise sandbox hesaplama kaynağını ve kalıcı dosyaları barındırır. Yaşam döngüleri de birbirinden farklıdır.

Kullanıcı izolasyonu nasıl çözülüyor?

Doğrudan erişimde Foundry, kullanıcıyı çağıranın Microsoft Entra token’ından çözer, uygulamanın ekstra bir şey yapması gerekmez. Kendi kullanıcılarını kendisi doğrulayan uygulamalarda durum değişir; orada güvenilen bir ara katman her istekte kararlı bir delege edilmiş kimlik gönderir.

Delege edilmiş kimlik, Foundry hosted session kimliğinden bağımsızdır. Farklı kullanıcı konuşmaları ayrı sandbox’lar kullanabilir, ara katmanın seçtiği tek bir sandbox’ı da paylaşabilir.

.NET

using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Foundry;
ChatClientAgentSession userConversationSession =
await agent.CreateFoundryHostedAgentSessionAsync(
/* hostedSessionId: foundryHostedSessionId, */
userIdentity: userIdentity);
await agent.RunAsync(
"Analyze the uploaded files.",
userConversationSession);
string? delegatedUserIdentity =
userConversationSession.FoundryHostedAgentUserIdentity;

Python

await agent.run(
"Analyze the uploaded files.",
session=user_conversation_session,
client_kwargs={
"extra_headers": {
"x-ms-user-identity": user_identity,
}
},
)

İki dil arasındaki davranış farkı pratikte önemli. Agent Framework,.NET tarafında delege edilmiş kimliği AgentSession nesnesiyle birlikte saklar; o oturumu yeniden kullandığınızda veya geri yüklediğinizde aynı kimlik her çalıştırmada otomatik gönderilir. Python tarafında mevcut API kimliği her çağrıda ayrı ayrı iletir.

Delege edilmiş kimlik değeri Agent Framework açısından opak bir veridir, framework onu yorumlamaz. Uygulamanın doğruladığı kullanıcı ile bu değer arasındaki eşlemenin sahibi güvenilen ara katmandır. Gerekli izinler ve güvenlik modeli için Microsoft’un kullanıcı başına izolasyon rehberine bakmak gerekiyor.

Oturum kimliğini kim oluşturur?

İstek içinde agent_session_id yoksa Foundry yeni bir hosted session oluşturur ve kimliğini döner. Uygulama isterse oturumu Foundry project client üzerinden kendisi oluşturup dönen kimliği sağlayabilir.

Foundry project client ile oturum oluşturma (.NET)

using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
ProjectAgentSession foundryHostedSession =
await projectClient.AgentAdministrationClient.CreateSessionAsync(
agentName,
new VersionRefIndicator(agentVersion));
string foundryHostedSessionId =
foundryHostedSession.AgentSessionId;

Foundry project client ile oturum oluşturma (Python)

from azure.ai.projects.models import VersionRefIndicator
foundry_hosted_session = await project_client.agents.create_session(
agent_name,
version_indicator=VersionRefIndicator(
agent_version=agent_version,
),
)
foundry_hosted_session_id = (
foundry_hosted_session.agent_session_id
)

Kimlik ister servis tarafından oluşturulmuş olsun ister uygulama tarafından verilmiş, Agent Framework onu kendi AgentSession nesnesinde tutar. Buradaki ayrım kritik: Agent Framework nesnesi uzaktaki Foundry hosted session’ı oluşturmaz, yalnızca kimliği taşır. Aynı nesneyle yapılan sonraki çağrılar da bu yüzden ekli kimliği gönderir, aynı kalıcı $HOME dizinine, yüklenmiş dosyalara ve çalışma durumuna ulaşır.

Foundry tarafından atanan veya uygulama tarafından verilen oturum (.NET)

using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Foundry;
ChatClientAgentSession session =
await agent.CreateFoundryHostedAgentSessionAsync(
/* hostedSessionId: foundryHostedSessionId
Omit this argument for Foundry to assign the ID
on the first invocation. */);
await agent.RunAsync("Analyze the uploaded files.", session);
string? resolvedFoundryHostedSessionId =
session.FoundryHostedAgentSessionId;

Foundry tarafından atanan veya uygulama tarafından verilen oturum (Python)

from agent_framework import AgentSession
from agent_framework.foundry import (
FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY,
)
session = AgentSession()
# Optional: attach an ID created through the Foundry project client.
session.state[
FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY
] = foundry_hosted_session_id
await agent.run("Analyze the uploaded files.", session=session)
foundry_hosted_session_id = session.state[
FOUNDRY_HOSTED_AGENT_SESSION_ID_KEY
]

Hangi yaklaşım hangi senaryoya uyuyor?

Uygulama tarafından sağlanan kimlikler ilk çağrıdan önce dosya yüklemeye, açık yaşam döngüsü yönetimine, kararlı iş yükü yerleşimine (workload placement) ve sınırlı sayıda oturumdan oluşan havuzlara uygun. Servis tarafından oluşturulan kimlikler ise talep anında oturum tahsisi (on-demand allocation) gerektiren senaryolara hizmet ediyor.

Havuzlu bir tasarım şöyle işliyor: ara katman kullanıcıları sınırlı sayıda Foundry hosted session kimliğine eşler, her istekte de delege edilmiş kimliği gönderir. Bu kurulumda Foundry yanıt zincirlerini kullanıcı bazında özel tutar, ama sandbox dosya sistemi paylaşılmaya devam eder. Uygulamanın sahip olduğu dosyalar, veritabanı satırları ve önbellekler için bölümleme anahtarı olarak hem agent_session_id hem kullanıcı kimliği birlikte kullanılabilir.

Kullanıcı izolasyonu veriye kimin erişebileceğini belirliyor, oturum izolasyonu ise kodun ve dosyaların nerede yaşadığını. Paylaşımlı sandbox kullanan bir tasarımda dosya düzeyindeki ayrışmayı uygulama katmanı kurgular.

Kaynaklar ve İleri Okuma

Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

2 Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Kategoriler
Ara
Paylaş
WhatsApp
İçindekiler
← Kubernetes PVC Unused Conditio...
Claude Opus 5.5 Copilot’... →
📩

Gitmeden önce!

Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

📬 Haftalık bülten: Teknoloji + AI haberleri
Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.