Yapay zeka ajanlarının yetkilendirme süreçlerinde karşılaşılan en önemli sorunlardan biri, bir kullanıcının vekil olarak hareket edecek bir ajanına nasıl güvenilir bir şekilde yetki devri yapacağıdır. OAuth 2.0 Token Exchange (RFC 8693) standardı, bu ihtiyacı karşılamak üzere tasarlanmıştır ve IBM Vault gibi araçlarla entegre edilebilir hale getirilmiştir.
Bu makalede, Vault’u bir OIDC sağlayıcısı olarak yapılandırarak, ajanlarınıza vekalet yetkisi verme sürecini ayrıntılı şekilde ele alacağız. IBM Vault’un sunduğu esneklik sayesinde, hem geliştiriciler hem de sistem yöneticileri için güvenli ve ölçeklenebilir çözümler oluşturabilirsiniz.
Vekalet Yetkisinin Temelleri: OAuth 2.0 Token Exchange Nedir?
OAuth 2.0 Token Exchange standardı (RFC 8693), bir kullanıcının vekil olarak hareket edecek bir ajanına geçici erişim yetkileri sağlamasını mümkün kılar. Bu süreçte üç temel unsur yer alır:
- Konu Token (Subject Token): Kullanıcının doğrudan kimliğini temsil eden bir token.
- Aktör Token (Actor Token): Vekil ajan tarafından talep edilen ve belirli yetkilerle donatılan token.
- Hedef Token (Target Token): Vekil ajanın nihai olarak erişmek istediği kaynağa yönelik token.
IBM Vault, OIDC sağlayıcısı olarak yapılandırıldığında, bu token değişimini destekleyen özel bir secrets engine üzerinden gerçekleştirilebilir. Bu sayede, ajanlarınız kullanıcı adına güvenilir bir şekilde işlem yapabilir.
IBM Vault’u OIDC Sağlayıcısı Olarak Yapılandırma
IBM Vault’un identity secrets engine modülü, OIDC token’ları oluşturmak ve yönetmek için kullanılır. Ancak vekalet yetkisi sağlamak için ek yapılandırmalar gerekmektedir. İşte adım adım izlemeniz gereken süreç:
1. Adım: Kullanıcı Doğrulaması ve Konu Token’ının Alınması
Kullanıcı, vekil ajanına yetki vermek istediğinde, öncelikle bir OIDC sağlayıcısına (örneğin IBM Vault) kimlik doğrulaması yapmalıdır. Bu işlem sırasında, kullanıcıya ait vekil ajanlarının bir listesini içeren özel bir may_act scope tanımlanmalıdır.
Aşağıdaki Terraform kodu, Vault içinde may-act adında bir OIDC scope’unu nasıl oluşturabileceğinizi göstermektedir:
locals {
may_act_scope_name = "may-act"
may_act_claim = jsonencode([
for agent, info in var.client_agents : {
client_id = agent,
sub = vault_identity_entity.client_agents[agent].id
}
])
}
resource "vault_identity_oidc_scope" "may_act" {
name = local.may_act_scope_name
template = <<EOT
{
"client_id": "${vault_identity_oidc_client.agent.client_id}",
"may_act": ${local.may_act_claim}
}
EOT
description = "Kullanıcı adına vekil olarak hareket edebilecek ajanların listesini içeren claim"
}Bu yapılandırma sayesinde, Vault’dan alınacak token’larda may_act adında bir claim bulunacaktır. Bu claim, hangi ajanların kullanıcı adına hareket edebileceğini belirten bir JSON dizisinden oluşur.
Örnek olarak alınan bir konu token’ı aşağıdaki gibidir:
{
"at_hash": "gBJNAqZ6z7Yz7UG-z69Leg",
"aud": "Sy0uWliApQrPApxpLp7gYVD0wAjvQNse",
"c_hash": "PLTNZjVHMxhDWOLIeZ_sQA",
"client_id": "Sy0uWliApQrPApxpLp7gYVD0wAjvQNse",
"exp": 1776796482,
"iat": 1776792882,
"iss": "$VAULT_ADDR/v1/identity/oidc/provider/agent",
"may_act": [
{
"client_id": "test-client",
"sub": "83b1d088-c7d5-b8a4-dd7b-99baca521f8d"
}
],
"namespace": "root",
"sub": "50099deb-d0cf-911b-4310-64a173c542a6"
}Bu token, vekil ajanlarının kullanıcı adına hangi işlemleri gerçekleştirebileceğini tanımlar. Çoklu vekiller söz konusu olduğunda, farklı may_act claim’leriyle farklı OIDC scope’ları oluşturulabilir.
2. Adım: Aktör Token’ının Oluşturulması ve Yetkilendirme
Konu token’ı alındıktan sonra, vekil ajan vekil olarak hareket etmek için bir aktör token’ı talep eder. Bu token, identity secrets engine üzerinden oluşturulur ve aşağıdaki gibi bir JWT yapısına sahiptir:
{
"aud": "test-client",
"client_id": "test-client",
"exp": 1776881849,
"iat": 1776795449,
"iss": "$VAULT_ADDR/v1/identity/oidc",
"namespace": "root",
"scope": "helloworld:read",
"sub": "83b1d088-c7d5-b8a4-dd7b-99baca521f8d"
}Aktör token’ının sub alanı, Vault entity ID’sini içerir ve bu ID, vekil ajanın kimliğini doğrular. Örneğin, Kubernetes ya da AppRole gibi farklı kimlik doğrulama yöntemlerine bağlı entity’ler tanımlanabilir.
Vault’un entity yapısını incelemek için aşağıdaki komutu kullanabilirsiniz:
$ vault read identity/entity/id/83b1d088-c7d5-b8a4-dd7b-99baca521f8d
Key Value
--- -----
aliases [map[canonical_id:83b1d088-c7d5-b8a4-dd7b-99baca521f8d ...]]
creation_time 2026-04-20T16:50:33.077473683Z
id 83b1d088-c7d5-b8a4-dd7b-99baca521f8d
metadata map[service_account_name:test-client ...]
name test-clientBu entity, vekil ajanın Vault içindeki rollerine ve yetkilerine bağlı olarak token oluşturulmasını sağlar. Aktör token’ı, vekil ajanın nihai olarak erişmek istediği kaynağa yönelik hedef token’ın oluşturulmasında kullanılır.
IBM Vault’un Avantajları ve Gelecek Senaryoları
IBM Vault’un sunduğu bu yapılandırma, sadece ajanlar arasında değil, aynı zamanda mikro hizmet mimarilerinde de kimlik devri süreçlerini güvenli bir şekilde yönetmenize olanak tanır. Özellikle:
- Esnek Kimlik Yönetimi: Farklı doğrulama yöntemlerine (Kubernetes, AppRole, JWT vb.) entegre edilebilir.
- Standart Uyumluluğu: OAuth 2.0 Token Exchange (RFC 8693) gibi endüstri standartlarını destekler.
- Ölçeklenebilirlik: Kurumsal düzeyde binlerce ajan ve kullanıcı için token yönetimini kolaylaştırır.
Gelecekte, yapay zeka ajanlarının daha karmaşık yetkilendirme senaryolarında kullanılabilmesi için bu tür token değişim protokollerinin benimsenmesi kaçınılmazdır. IBM Vault gibi araçlar, bu geçiş sürecinde geliştiricilere ve sistem yöneticilerine kritik bir rol oynamaktadır.
Bu rehberden yola çıkarak, kendi projelerinizde OAuth 2.0 Token Exchange standardını uygulayabilir ve ajanlarınızın yetkilendirme süreçlerini daha güvenli ve verimli hale getirebilirsiniz. Uygulama örnekleri ve detaylı konfigürasyon dosyalarına GitHub deposundan ulaşabilirsiniz.
Yapay zeka özeti
Learn how RFC 8693 OAuth 2.0 Token Exchange enables secure AI agent identity delegation using IBM Vault and the Agent2Agent protocol.