Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, bir Azure App Service uygulamasının, adına akış olarak da adlandırılan oturum açmış kullanıcının kimliğine bürünerek bir arka uç Azure SQL veritabanına nasıl bağlanacağı gösterilmektedir. Bu akışı yapılandırmak için, Microsoft Entra kimlik sağlayıcısını kullanarak App Service yerleşik kimlik doğrulamasını etkinleştirirsiniz.
Bu bağlantı yöntemi , Öğretici: Yönetilen kimlikle verilere erişme ve kurumsal senaryolarda aşağıdaki avantajlara sahip olan yönetilen kimlik yaklaşımından daha gelişmiştir:
- Yönetilen kimlik yaklaşımında olduğu gibi arka uç hizmetlerine yönelik bağlantı gizli dizilerini ortadan kaldırır.
- Arka uç veritabanına veya diğer Azure hizmetlerine, kime ne kadar erişim izni verilip ve edilmediği konusunda daha fazla denetim sağlar.
- Uygulamanın veri sunusunu oturum açmış kullanıcıya göre uyarlamasına olanak tanır.
Bu öğreticide, Microsoft Entra kimlik doğrulamasını Azure SQL Veritabanı arka ucu olan bir .NET web uygulamasına ekleyebilirsiniz. Şunları yapmayı öğreneceksiniz:
- Azure SQL Veritabanı için Microsoft Entra kimlik doğrulamasını etkinleştirin.
- Diğer SQL Veritabanı kimlik doğrulama seçeneklerini devre dışı bırakın.
- Microsoft Entra Id'yi uygulamanızın kimlik sağlayıcısı olarak ekleyin.
- SQL Veritabanı kullanıcı kimliğine bürünme iznini yapılandırın.
- App Service'i SQL Veritabanı için kullanılabilir bir erişim belirteci sağlayacak şekilde yapılandırın.
- Oturum açmış Microsoft Entra kullanıcısı adına Azure SQL veritabanınıza erişin.
Öğreticiyi tamamladığınızda, uygulamanız oturum açmış kullanıcı adına SQL Veritabanı'na güvenli bir şekilde bağlanır.
Not
- Microsoft Entra Id, şirket içi SQL Server için desteklenmez.
- Microsoft Entra kimlik doğrulaması, şirket içi Active Directory (AD) Etki Alanı Hizmetleri'nde (DS) Tümleşik Windows kimlik doğrulamasından farklıdır. AD DS ve Microsoft Entra Id tamamen farklı kimlik doğrulama protokolleri kullanır. Daha fazla bilgi için Bkz . Microsoft Entra Domain Services belgeleri.
Önkoşullar
Kullanıcılar ve gruplar ile doldurulmuş bir Microsoft Entra kiracısına erişim sahibi olun.
Öğretici: Azure App Service'te ASP.NET Core ve SQL Veritabanı uygulaması oluşturma öğreticisini tamamlayın ve bu öğretici için tamamlanmış uygulamayı kullanın.
Alternatif olarak, adımları uyarlayıp SQL Veritabanı ile kendi .NET uygulamanızı kullanın. Bu öğreticideki adımlar aşağıdaki .NET sürümlerini destekler:
- .NET Framework 4.8 ve üzeri
- .NET 6.0 ve üzeri
Azure Cloud Shell'de oturum açın veya ortamınızı Azure CLI'yi kullanacak şekilde hazırlayın.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
1. Microsoft Entra kimlik doğrulaması ile veritabanı sunucusunu yapılandırma
Bir Microsoft Entra kullanıcısını Azure SQL sunucusunun yöneticisi olarak atayarak Azure SQL veritabanına Microsoft Entra kimlik doğrulamasını etkinleştirin. Microsoft Entra yöneticisi, oluşturulan, içeri aktarılan, eşitlenen veya Microsoft Entra Kimliği'ne davet edilen bir kullanıcı olmalıdır. Microsoft Entra kullanıcısı, Azure aboneliği için Microsoft hesabı kullanıcısı ile aynı olmayabilir.
Microsoft Entra ID kullanıcısını Azure SQL sunucusunun yöneticisi olarak eklemek için aşağıdaki Azure CLI komutlarını çalıştırın.
Yönetici yapmak istediğiniz Microsoft Entra ID kullanıcısının nesne kimliğini almak için , veya parametresiyle kullanın
az ad user listdisplay-name.upnfilterÖrneğin, aşağıdaki komut, Ad Soyadı ile bir Microsoft Entra ID kullanıcısınındisplay-namebilgilerini listeler.az ad user list --display-name "Firstname Lastname"idSonraki adımda kullanmak üzere çıktıdaki değeri kopyalayın.İpucu
Microsoft Entra dizinindeki tüm kullanıcılara yönelik bilgileri göstermek için tek başına çalıştırabilirsiniz
az ad user list.parametresini kullanarak
az sql server ad-admin createMicrosoft Entra ID kullanıcısınıobject-idAzure SQL sunucunuzda yönetici olarak ekleyin. Aşağıdaki komutta yerine sunucunuzun kaynak grubu adını,<server-name>sunucunuzun adını.database.windows.netson ekini ve<entra-id>öncekiaz ad user listkomutunidçıktısını yazın<group-name>.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Veritabanı sunucusu kimlik doğrulamasını yalnızca Microsoft Entra kimlik doğrulamasıyla kısıtlayın. Bu adım SQL kullanıcı adı ve parola kimlik doğrulamasını devre dışı bırakır.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Microsoft Entra kullanıcısı oluşturma hakkında daha fazla bilgi için bkz. Microsoft Entra Id kullanarak kullanıcı ekleme veya silme.
- SQL Veritabanı için izin verilen Microsoft Entra kullanıcıları hakkında daha fazla bilgi için bkz. SQL Veritabanı'nda Microsoft Entra özellikleri ve sınırlamaları.
- Azure SQL sunucu yöneticisi ekleme hakkında daha fazla bilgi için bkz . Sunucunuz için Microsoft Entra yöneticisi sağlama.
2. Uygulamanız için Microsoft Entra Id kimlik doğrulamasını etkinleştirin
Microsoft Entra Id'yi uygulamanız için kimlik sağlayıcısı olarak ekleyin. Daha fazla bilgi için bkz . App Services uygulamanız için Microsoft Entra kimlik doğrulamasını yapılandırma.
Uygulamanızın Azure portalı sayfasında, sol gezinti menüsündeki Ayarlar'ın altında Kimlik Doğrulaması'nı seçin.
Kimlik Doğrulaması sayfasında Kimlik sağlayıcısı ekle'yi seçin veya Kimlik sağlayıcısı bölümünde Sağlayıcı ekle'yi seçin.
Kimlik sağlayıcısı ekle sayfasında sağlayıcı olarak Microsoft'u seçin.
İstemci gizli dizisi süre sonu için Önerilen: 180 gün gibi açılan liste seçeneklerinden birini seçin.
Tüm varsayılan ayarları koruyun ve Ekle'yi seçin.
Not
Uygulamanızın kimlik doğrulama ayarlarını yeniden yapılandırdığınızda belirteç deposundaki belirteçler yeni ayarlardan yeniden oluşturulamayabilir. Belirteçlerinizin yeniden oluşturuladığından emin olmak için oturumu kapatın ve uygulamanızda yeniden oturum açın. Tarayıcınızı özel modda kullanmak kolay bir yöntemdir. Uygulamalarınızdaki ayarları değiştirdikten sonra tarayıcıyı özel modda kapatıp yeniden açın.
3. SQL Veritabanı kullanıcı kimliğine bürünme özelliğini yapılandırma
Oturum açmış Microsoft Entra kullanıcısı adına uygulamanıza SQL Veritabanı'na erişim izinleri verin.
Uygulamanın Kimlik Doğrulaması sayfasında, Kimlik sağlayıcısı'nın altında uygulamanızın adını seçin.
Uygulama kayıt sayfası açılır. Bu kayıt, Microsoft Entra sağlayıcısını eklediğinizde otomatik olarak oluşturuldu.
Sol gezinti menüsünde Yönet'in altında API izinleri'ni seçin.
API izinleri sayfasında İzin ekle'yi seçin.
API izinleri iste ekranında Kuruluşumun kullandığı API'ler sekmesini seçin.
Arama kutusuna Azure SQL Veritabanı yazın ve sonucu seçin.
Uygulamanız ne tür izinler gerektiriyor bölümünde Temsilci izinleri'ni seçin, ardından user_impersonation yanındaki onay kutusunu seçin ve ardından İzin ekle'yi seçin.
Microsoft Entra'daki uygulama kaydı artık oturum açmış kullanıcının kimliğine bürünerek SQL Veritabanı'na bağlanmak için gerekli izinlere sahiptir.
4. App Service'i kullanılabilir bir erişim belirteci döndürecek şekilde yapılandırma
Uygulamanızı SQL Veritabanı için kullanılabilir bir erişim belirteci sağlayacak şekilde yapılandırmak için, uygulamanın Microsoft Entra sağlayıcısına loginParametersolarak scope eklersinizhttps://database.windows.net/user_impersonation. Aşağıdaki komut, özel kapsamlara sahip özelliğini Microsoft Entra kimlik sağlayıcısı login ayarlarına eklerloginParameters.
İstenen kapsamlar arasında App Service varsayılan olarak , profileve email kapsamlarını zaten istemektediropenid. Kapsam offline_access , belirteçleri yenileyebilmeniz için eklenir. Daha fazla bilgi için bkz. OpenID Connect kapsamları.
Kapsam, Azure SQL Veritabanı'na https://database.windows.net/user_impersonation başvurur ve belirteç alıcısı olarak SQL Veritabanı'nı belirten bir JSON Web Belirteci (JWT) sağlar. Bu komut, Cloud Shell'de zaten yüklü olan JSON işleme için kullanır jq .
authSettings=$(az webapp auth show --resource-group <group-name> --name <app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid profile email offline_access https://database.windows.net/user_impersonation"]}')
az webapp auth set --resource-group <group-name> --name <app-name> --body "$authSettings"
İpucu
Gerekli kapsamı Azure CLI yerine bir web arabirimi kullanarak yapılandırmak için, istenen kapsamlara ekleyerek yenileme belirteçleri sağlamak için Microsoft Entra sağlayıcısını yapılandırın'ı kullanın.https://database.windows.net/user_impersonation
Uygulamanız artık SQL Veritabanı tarafından kabul edilen bir erişim belirteci oluşturacak şekilde yapılandırıldı.
Not
Erişim belirteçlerinin süresi bir süre sonra dolar. Kullanıcıların uygulamanızla yeniden kimlik doğrulaması yapmalarına gerek kalmadan erişim belirteçlerinizi yenileme hakkında bilgi için bkz. Kimlik doğrulama belirteçlerini yenileme.
5. Uygulama kodunuzda erişim belirtecini kullanın
App Service kimlik doğrulaması tarafından sağlanan erişim belirtecini bağlantı nesnesine eklemek için uygulama kodunuzu güncelleştirin.
Not
Bu kod yerel olarak çalışmaz. Yerel hata ayıklama için daha fazla bilgi ve alternatifler için bkz. App Service kimlik doğrulamasını kullanırken yerel olarak hata ayıklama.
DatabaseContext.cs veya veritabanı bağlamını yapılandıran başka bir dosyadaki nesnenizde
DbContext, bağlantı nesnesine Microsoft Entra Id erişim belirtecini eklemek için varsayılan oluşturucuyu değiştirin.public MyDatabaseContext (DbContextOptions<MyDatabaseContext> options, IHttpContextAccessor accessor) : base(options) { var conn = Database.GetDbConnection() as SqlConnection; conn.AccessToken = accessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"]; }App Service'te kullanıcı adı ve parolayla SQL kimlik doğrulaması kullanan bir
defaultConnectionbağlantı dizeniz varsa, bağlantı gizli dizilerini kaldırmak için aşağıdaki komutu kullanın. ,<app-name>,<db-server-name>ve<db-name>değerlerini değerlerinizle değiştirin<group-name>.az webapp config connection-string set --resource-group <group-name> --name <app-name> --connection-string-type SQLAzure --settings defaultConnection="server=tcp:<db-server-name>.database.windows.net;database=<db-name>;"
6. Değişikliklerinizi yayımlama
GitHub çatalınızdaki kod değişikliklerinizi yapmak için tarayıcıda Visual Studio Code kullandıysanız soldaki menüden Kaynak Denetimi'ni seçin. gibi OBO connect bir işleme iletisi girin ve İşle'yi seçin.
İşleme, App Service'e GitHub Actions dağıtımını tetikler. Dağıtımın bitmesini birkaç dakika bekleyin.
Aşağıdaki komutları kullanarak değişikliklerinizi Git Bash'te de yayımlayabilirsiniz:
git commit -am "configure managed identity"
git push azure main
Kodunuz Visual Studio'daysa:
Yeni uygulama sayfası uygulamanızı gösterdiğinde, uygulama oturum açmış Microsoft Entra kullanıcısı adına Azure SQL veritabanına bağlanır. Uygulamanızı her zamanki gibi kullanabilmeniz ve düzenleyebilmeniz gerekir.
7. Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Bu kaynaklara artık ihtiyacınız kalmadığında aşağıdaki komutu çalıştırarak kaynak grubunu silin:
az group delete --name <group-name>
Bu komutun çalıştırılması biraz zaman alabilir.
Sık sorulan sorular
- Neden "'<belirteç tanımlı sorumlu>' kullanıcısı için oturum açma başarısız oldu" hatası alıyorum?
- Azure SQL Veritabanı'na diğer Microsoft Entra kullanıcılarını veya gruplarını nasıl eklerim?
- App Service kimlik doğrulaması kullanırken yerel olarak hata ayıklama Nasıl yaparım??
- Erişim belirteçlerinin süresi dolduğunda ne olur?
Neden "'<belirteç tanımlı sorumlu>' kullanıcısı için oturum açma başarısız oldu" hatası alıyorum?
Bir Login failed for user '<token-identified principal>' hatanın en yaygın nedenleri şunlardır:
- Microsoft Entra kimlik doğrulaması Azure SQL veritabanı için yapılandırılmadı. Bkz . Microsoft Entra kimlik doğrulaması ile veritabanı sunucusunu yapılandırma.
- İstek üst bilgisinde
X-MS-TOKEN-AAD-ACCESS-TOKENgeçerli belirteç yok. Bu kod yerel ortamlarda çalışmaz. Daha fazla bilgi ve alternatif için bkz. App Service kimlik doğrulamasını kullanırken yerel olarak hata ayıklama. - Kullanıcının veritabanına bağlanma izni yok. Kullanıcı ve izin eklemek için bkz. Azure SQL Veritabanı'nda diğer Microsoft Entra kullanıcılarını veya gruplarını ekleme.
Azure SQL Veritabanı'nda diğer Microsoft Entra kullanıcılarını veya gruplarını nasıl eklerim?
Daha fazla kullanıcı veya grup eklemek için sqlcmd veya SQL Server Management Studio (SSMS) kullanarak veritabanı sunucunuza bağlanın ve Microsoft Entra kimlikleriyle eşlenen bağımsız veritabanı kullanıcıları oluşturun.
Aşağıdaki Transact-SQL örnek SQL Server'a bir Microsoft Entra kimliği ekler ve kimliğe bazı veritabanı rolleri verir:
CREATE USER [<user-or-group-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_datawriter ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<user-or-group-name>];
GO
App Service kimlik doğrulaması kullanırken yerel olarak hata ayıklama Nasıl yaparım??
App Service kimlik doğrulaması bir Azure özelliği olduğundan, bu öğreticideki kod yerel ortamınızda çalışmaz. Azure'da çalışan bir uygulamanın aksine, yerel kodunuz App Service kimlik doğrulaması ara yazılımından yararlanamaz. Yerel hata ayıklama için aşağıdaki alternatifleri kullanabilirsiniz:
- Kimlik doğrulaması ile
Active Directory Interactiveyerel ortamınızdan SQL Veritabanı'na bağlanın. Bu kimlik doğrulama akışı kullanıcının kendisinde oturum açmaz, ancak veritabanı yetkilendirmesini yerel olarak test edebilmeniz için oturum açmış kullanıcıyla arka uç veritabanına bağlanır. - erişim belirtecini, istek üst bilgisi yerine kodunuz içine
X-MS-TOKEN-AAD-ACCESS-TOKENel ile kopyalayın. - Visual Studio'dan dağıtım yapıyorsanız App Service uygulamanızın uzaktan hata ayıklamasını kullanın.
Erişim belirteçlerinin süresi dolduğunda ne olur?
Erişim belirtecinizin süresi bir süre sonra sona erer. Kullanıcıların uygulamanızla yeniden kimlik doğrulaması yapmalarına gerek kalmadan erişim belirteçlerinizi yenileme hakkında bilgi için bkz . Kimlik sağlayıcısı belirteçlerini yenileme.
İlgili içerik
- Öğretici: Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma
- Öğretici: Microsoft Graph'a güvenli bir .NET uygulamasından uygulama olarak erişme
- Eğitim: Sanal Ağ tümleştirmesi ile arka uç iletişimini yalıtma
- Mevcut özel DNS adını Azure App Service'e eşleme