İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Güvenlik & Kimlik
  • Cosmos DB’de RBAC Sonrası 403 Hatası: Nedenleri ve Çözümü
Bulut Altyapı Güvenlik & Kimlik 403 Forbidden, Cosmos DB RBAC, Data plane rolü, DefaultAzureCredential, managed identity Aşkın KILIÇ 16/08/2026 4 Yorumlar

Cosmos DB’de RBAC Sonrası 403 Hatası: Nedenleri ve Çözümü

Cosmos DB'de RBAC Sonrası 403 Hatası: Nedenleri ve Çözümü
📑 İçindekiler
  1. 403 hatasını doğru okumak
  2. En sık karşılaşılan beş neden
  3. 1. Control plane rolü atayıp data plane erişimi beklemek
  4. 2. Hiç veri rolü ataması yapılmamış olabilir
  5. 3. Kapsam (scope) çok dar
  6. 4. Atama henüz yayılıyor olabilir
  7. 5. DisableLocalAuth açık ama kod hala anahtar kullanıyor
  8. Hızlı tanı sırası
  9. Güvenli geçiş için doğru sıra
  10. Toparlarken
  11. İlgili İçerikler
  12. Kaynaklar ve İleri Okuma

⏱️ 4 dk okuma📅 16 Ağustos 2026

Azure Cosmos DB hesabınızda yönetilen kimliğe geçtiniz, veri rolünü atadınız, kodu DefaultAzureCredential ile güncellediniz ve anahtar tabanlı erişimi kapattınız. Dağıtımdan sonra her istekten aynı yanıt geliyor: Response status code does not indicate success: 403 (Forbidden). Bu yazıda, RBAC’e geçtikten sonra sık karşılaşılan 403 senaryolarına, hatanın nasıl doğru okunacağına ve uygulamanın en kısa sürede tekrar çalışır hale nasıl getirileceğine bakılıyor.

403 hatasını doğru okumak

RBAC geçişi sırasında alınan 403 çoğu zaman kimlik doğrulamanın başarılı olduğu anlamına gelir. Yani Cosmos DB, isteği yapan kimliği tanımıştır; sorun bu kimliğin ilgili işlemi gerçekleştirmek için yetkilendirilmemiş olmasıdır.

Bu ayrım aramaya nereden başlanacağını belirler. Bozuk bir kimlik bilgisi veya hatalı bir managed identity peşinde koşmak yerine eksik rol ataması, yanlış principal, dar kapsam ve benzeri yetkilendirme sorunlarına odaklanmak gerekir.

Yine de suçu doğrudan RBAC’e yüklemeden önce tam hata mesajını ve substatus kodunu okuyun. Cosmos DB, ağ kısıtlamaları ve diğer yapılandırma sorunları için de 403 döndürebilir; detaylar çoğu zaman yönü gösterir.

En sık karşılaşılan beş neden

1. Control plane rolü atayıp data plane erişimi beklemek

En yaygın hata bu ayrımı gözden kaçırmaktan doğar: control plane ve data plane iki ayrı sistemdir. Uygulamaya Contributor gibi bir Azure yönetim rolü vermek; hesabı yapılandırma, ağ ayarlarını yönetme veya hesap anahtarlarını okuma gibi işlemlere izin verir. Ama veri düzleminde okuma, yazma ya da sorgulama yetkisi vermez. Onun için ayrı bir Azure Cosmos DB veri düzlemi rolü ataması gerekir.

İlk adım, data plane üzerindeki mevcut atamaları listelemek:

az cosmosdb sql role assignment list \
--account-name "$ACCOUNT" \
--resource-group "$RESOURCE_GROUP"

Uygulamanın principalId değeri bu listede yoksa sorun ortaya çıkmıştır: yanlış türde bir rol atanmıştır. Doğrusunu az cosmosdb sql role assignment create komutuyla oluşturabilirsiniz.

2. Hiç veri rolü ataması yapılmamış olabilir

Bazen atama hiç yapılmamış ya da beklediğinizden farklı bir principal’a düşmüştür. Klasik senaryo şu: rolü kendi geliştirici kimliğinize verdiniz ama uygulamanın managed identity’sine hiç atamadınız. Sonuç: yerelde sorunsuz çalışan uygulama, Azure’da ilk çağrıda 403 döner.

Uygulamanın gerçekten hangi principalId ile çalıştığını doğrulayın, sonra bu ID’nin atamasının olup olmadığını kontrol edin:

# Uygulamanın kullandığı managed identity
az webapp identity show \
--name my-app \
--resource-group "$RESOURCE_GROUP" \
--query principalId -o tsv

Bu değeri önceki komutun çıktısıyla karşılaştırın. Listede yoksa çözüm nettir: doğru principal için atamayı oluşturun.

3. Kapsam (scope) çok dar

Her rol ataması bir kapsama bağlıdır. Atamayı tek bir container’a yaptıysanız ve uygulama farklı bir veritabanına ya da container’a erişmeye çalışıyorsa, tam da erişim vermediğiniz yolda 403 alırsınız. Rol vardır ama yeterince geniş değildir.

Atamanın scope değerine bakın. Belirli bir veritabanı veya container’ı işaret ediyorsa ve uygulama daha fazlasına dokunuyorsa kapsamı genişletin. Uygulamayı ilk kez çalıştırıyorsanız hesap kökü (/) düzeyinde başlamak, her şey yeşile döndükten sonra daraltmak pratik bir yaklaşımdır.

4. Atama henüz yayılıyor olabilir

Yeni oluşturulmuş bir rol ataması anında etkinleşmeyebilir. 403 hatası, atamayı oluşturduğunuz veya değiştirdiğiniz hemen ardından başladıysa kod ya da izinlerde değişiklik yapmadan önce yayılma için biraz zaman tanıyın ve tekrar deneyin.

5. DisableLocalAuth açık ama kod hala anahtar kullanıyor

disableLocalAuth: true ayarını yaptığınız anda Cosmos DB anahtar ve bağlantı dizesi kabul etmeyi bırakır; tüm istekler Entra ID üzerinden geçmek zorundadır. Uygulamanızın bir köşesinde, unutulmuş bir arka plan işinde, bir health check’te ya da eski bir yapılandırma değerinde hala anahtarla client oluşturuluyorsa o yol 403 dönerken diğer her şey sorunsuz çalışabilir.

Kodda ve yapılandırmada bağlantı dizelerini ve AccountKey kullanımlarını arayın. Tüm client’lar TokenCredential ile kurulmalıdır:

// disableLocalAuth açıkken bu satır 403 döner
var client = new CosmosClient(connectionString);
// Doğru kullanım
var client = new CosmosClient(
accountEndpoint: "https://my-cosmos-account.documents.azure.com:443/",
tokenCredential: new DefaultAzureCredential());

Hızlı tanı sırası

Bir 403 ile karşılaşıldığında aşağıdaki sırayı takip etmek işleri hızlandırır. Liste kabaca hangi nedenin ne sıklıkta çözüm olduğuna göre düzenlenmiştir:

  1. Yalnızca Azure RBAC değil, gerçek bir veri düzlemi rol atamanız var mı?
  2. Atama, uygulamanın gerçekten kullandığı principal üzerinde mi?
  3. Kapsam, uygulamanın eriştiği tüm veritabanı ve container’ları kapsıyor mu?
  4. Atama çok yeni mi? Bozulmuş olduğuna hükmetmeden önce birkaç dakika bekleyip tekrar deneyin.
  5. Herhangi bir kod yolu hala anahtar veya bağlantı dizesi kullanıyor mu?

Çoğu vakada çözüm ilk iki adımı geçmeden bulunur.

Güvenli geçiş için doğru sıra

403 uçurumundan kaçınmanın en iyi yolu tüm anahtarları aynı anda kapatmamak. Anahtarlar açıkken RBAC’i tam olarak çalışır hale getirin, sonra anahtarları devre dışı bırakın:

  1. Uygulamanın kimliğine veri düzlemi rolünü atayın.
  2. Kodu DefaultAzureCredential kullanacak şekilde güncelleyip dağıtın.
  3. Uygulamanın bu kimlikle veriyi okuyup yazdığını doğrulayın; anahtarlar hala açık olsun.
  4. Ancak bu adımdan sonra disableLocalAuth: true olarak ayarlayın.

Dördüncü adımda bir şey bozulursa, kimlik yolunun saniyeler önce çalıştığını bildiğiniz için tüm rol yapılandırmasını sorgulamak yerine doğrudan beşinci şüpheliye, yani unutulmuş bir anahtar kullanımına odaklanabilirsiniz. Bu sıralama, kafa karıştırıcı bir hatayı belirgin bir hataya dönüştürür.

Toparlarken

Cosmos DB üzerinde şifresiz kimlik doğrulama ilk 403 hatasında ürkütücü görünse de hata modları sınırlıdır ve her biri kısa sürede çözülebilir. Kimlik doğrulama ile yetkilendirmenin farklı sorunlar, control plane ile data plane’in farklı sistemler olduğu içselleştirildiğinde hata bir gizem olmaktan çıkar, kontrol listesine dönüşür.

Pratik bir öneri: hala anahtar veya bağlantı dizesiyle çalışan bir uygulamayı seçip önce üretim dışı bir ortamda DefaultAzureCredential‘a taşıyın. Kimlik yolu kanıtlanana kadar anahtarları açık tutun, sonra disableLocalAuth: true ile kapıyı kapatın.

İlgili İçerikler

  • Azure Cosmos DB’de Partition Key Değiştirme Yolları
  • Azure Cosmos DB Design Patterns: Çalışan Örnekler
  • AI Ajanları Cosmos DB vNext Emülatörüyle Buluşuyor

Kaynaklar ve İleri Okuma

  • devblogs.microsoft.com
  • I Enabled RBAC and Everything Broke. What Did I Do Wrong? – Azure Cosmos DB Blog
  • Which Azure Cosmos DB Role Does My App Need? – Azure Cosmos DB Blog
  • Azure Cosmos DB Blog
  • Cosmos DB Azure RBAC Entegrasyonu: İki Dünya Birleşiyor
  • Azure Storage API’larında Entra ID ve RBAC Dönemi: Pratikte Ne Değişti?
🤖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Ç
Aşkın KILIÇYazar

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

İlgili Yazılar

Announcing etcd 3.7.0-beta.0
Announcing etcd 3.7.0-beta.024 Tem 2026
Microsoft Foundry ile Ajan Maliyetini Sınırlama ve ROI
Microsoft Foundry ile Ajan Maliyetini Sınırlama ve ROI20 Eyl 2026
CodeQL 2.25.6 ile Sessiz Ama Güçlü Güvenlik Sıçraması
CodeQL 2.25.6 ile Sessiz Ama Güçlü Güvenlik Sıçraması10 Haz 2026
SQL MCP Server'ı App Service'te Çalıştırmak: Container'sız Yol
SQL MCP Server'ı App Service'te Çalıştırmak: Container'sız Yol13 May 2026

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

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

YouTube GitHub

Haftalık Bülten

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

Etiket 403 Forbidden Cosmos DB RBAC Data plane rolü DefaultAzureCredential managed identity
Önceki yazı

Ajan Ekonomisi: Pilotlardan Ölçülebilir Getirilere

Sonraki yazı

Azure DevOps Server Ağustos Yamaları: Neler Değişti?

İlginizi Çekebilir

Azure Cosmos DB Fabric Database Hub'da Tek Ekrandan İzleme
Aşkın KILIÇ 0

Azure Cosmos DB Fabric Database Hub’da Tek Ekrandan İzleme

29/09/2026
Agentic Autofix Copilot Memory ile Fix Kalıbını Öğreniyor
Aşkın KILIÇ 0

Agentic Autofix Copilot Memory ile Fix Kalıbını Öğreniyor

28/09/2026
C# ile Memory Dump Alma: Thread Pool Tıkanmasını Yakala
Aşkın KILIÇ 0

C# ile Memory Dump Alma: Thread Pool Tıkanmasını Yakala

27/09/2026

4 comments

comments user
Uğur H. 16/08/2026 07:25

Geçen ay tam bu sorunla boğuştum, RBAC kurulumunu doğru yaptım sandım ama veri rolünü atamayı unuttum. Saatler harcadım bulana kadar. Principal ID’nin managed identity ile eşleşip eşleşmediğini kontrol etmek ilk yapılması gereken şey kesinlikle.

Bu arada şu yazınız da güzeldi: Ajan Ekonomisi: Pilotlardan Ölçülebilir Getirilere — https://www.askinkilic.com.tr/ajan-ekonomisi-pilotlardan-olculebilir-getirilere/

Yanıtla
comments user
Ayşe T. 16/08/2026 07:55

Tam bu sorunla geçen hafta boğuştum, principal ID’yi uygulama yerine kullanıcıya atamıştım ve saatlerce nerede hata yaptığımı anlayamadım. “Kimlik doğrulama tamam ama yetkilendirme eksik” ayrımını net koymak çok işe yarıyor, çünkü hata mesajı ikisini ayırt etmiyor.

Yanıtla
comments user
Aslı S. 16/08/2026 17:38

Tam da geçen hafta bu sorunla boğuştum, “kimlik doğrulama tamam neden 403 yiyor” diye saatlerce harcadım. Meğer data plane rolünü değil management plane rolünü atamışım, bu ayrımı net anlatan Türkçe kaynak bulmak gerçekten zordu. Bu arada şu yazınız da güzeldi: Ajan Ekonomisi: Pilotlardan Ölçülebilir Getirilere — https://www.askinkilic.com.tr/ajan-ekonomisi-pilotlardan-olculebilir-getirilere/

Yanıtla
comments user
Gamze E. 16/08/2026 22:00

Geçen hafta tam olarak bu sorunla boğuştum, principal ID’yi yanlış almışım ve saatlerimi harcattı. Veri rolü ile yönetim rolünü karıştırmak da çok klasik bir hata, bunu yazıda görmek iyi oldu.

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Azure Content Understanding: İçerik Çıkarımı Neden Kritik
    30/09/2026 Azure Content Understanding: İçerik Çıkarımı Neden Kritik
  • Fabric IQ, Microsoft Copilot'a İş Bağlamını Taşıyor
    29/09/2026 Fabric IQ, Microsoft Copilot’a İş Bağlamını Taşıyor
  • GPT-6.1 Sol GitHub Copilot'ta: Daha Az Token, Daha Az Adım
    29/09/2026 GPT-6.1 Sol GitHub Copilot’ta: Daha Az Token, Daha Az Adım
  • Azure Cosmos DB Fabric Database Hub'da Tek Ekrandan İzleme
    29/09/2026 Azure Cosmos DB Fabric Database Hub’da Tek Ekrandan İzleme
  • SQL Server ve Azure SQL: SQLCon Europe 2026 Yenilikleri
    29/09/2026 SQL Server ve Azure SQL: SQLCon Europe 2026 Yenilikleri
  • NL2SQL’de Asıl Soru: Prompt mu, Veritabanı mı?
    15/05/2026 NL2SQL’de Asıl Soru: Prompt mu, Veritabanı mı?
  • 25 Dolar Altında Yapay Zeka Uygulaması mı? İşte Nasıl Yapılır!
    10/03/2026 25 Dolara Yapay Zeka Uygulaması Nasıl Yapılır?
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
    18/03/2026 Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure OpenAI azure sdk Azure SQL bulut bilişim CI/CD code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry otomasyon performans Pull Request RAG REST API SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

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
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 469 yazı 🏗️ Bulut Altyapı 378 yazı 🤖 Yapay Zeka 314 yazı 🔧 DevOps 260 yazı ☁️ Microsoft Azure 254 yazı 🔒 Güvenlik & Kimlik 214 yazı 🏢 Kurumsal Teknoloji 96 yazı 📊 Veri & Analitik 66 yazı 🐳 Konteyner & Kubernetes 61 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← Ajan Ekonomisi: Pilotlardan Öl...
    Azure DevOps Server Ağustos Ya... →
    📩

    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.
    GitHub RSS