Aracılığıyla paylaş


Eğitim: Bir App Service uygulamasını oturum açan kullanıcı adına SQL Veritabanı'na bağlama

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.

Öğretici senaryosu için mimari diyagramı.

Not

Önkoşullar

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.

  1. 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ın display-name bilgilerini listeler.

    az ad user list --display-name "Firstname Lastname"
    

    id Sonraki 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 .

  2. parametresini kullanarak az sql server ad-admin create Microsoft Entra ID kullanıcısını object-id Azure SQL sunucunuzda yönetici olarak ekleyin. Aşağıdaki komutta yerine sunucunuzun kaynak grubu adını, <server-name> sunucunuzun adını .database.windows.net son ekini ve <entra-id> önceki az ad user list komutun id çı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>
    
  3. 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>
    

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.

  1. Uygulamanızın Azure portalı sayfasında, sol gezinti menüsündeki Ayarlar'ın altında Kimlik Doğrulaması'nı seçin.

  2. 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.

  3. Kimlik sağlayıcısı ekle sayfasında sağlayıcı olarak Microsoft'u seçin.

  4. İstemci gizli dizisi süre sonu için Önerilen: 180 gün gibi açılan liste seçeneklerinden birini seçin.

  5. Tüm varsayılan ayarları koruyun ve Ekle'yi seçin.

    Kimlik sağlayıcısı ekleme sayfasını gösteren ekran görüntüsü.

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.

  1. 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.

  2. Sol gezinti menüsünde Yönet'in altında API izinleri'ni seçin.

  3. API izinleri sayfasında İzin ekle'yi seçin.

  4. API izinleri iste ekranında Kuruluşumun kullandığı API'ler sekmesini seçin.

  5. Arama kutusuna Azure SQL Veritabanı yazın ve sonucu seçin.

  6. 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.

    Temsilci izinleri, user_impersonation ve İzin ekle düğmesinin seçili olduğu API izinlerini isteme sayfasının ekran görüntüsü.

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.

  1. DatabaseContext.cs veya veritabanı bağlamını yapılandıran başka bir dosyadaki nesnenizdeDbContext, 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"];
    }
    
  2. App Service'te kullanıcı adı ve parolayla SQL kimlik doğrulaması kullanan bir defaultConnection bağ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:

  1. Çözüm Gezgini'nde projenize sağ tıklayın ve Yayımla'yı seçin.

    Visual Studio'da Çözüm Gezgini yayımlamayı gösteren ekran görüntüsü.

  2. Yayımla sayfasında Yayımla'yı seçin.

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.

Yayımladıktan sonra web uygulamasını gösteren ekran görüntüsü.

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?

Bir Login failed for user '<token-identified principal>' hatanın en yaygın nedenleri şunlardır:

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 Interactive yerel 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-TOKEN el 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.