Öğretici: Yönetilen kimlik kullanarak App Service’tan Azure SQL Veritabanı bağlantısını güvenli hale getirme
App Service, Azure’da yüksek oranda ölçeklenebilen, kendi kendine düzeltme eki uygulayan bir web barındırma hizmeti sunar. Ayrıca, uygulamanız için Azure SQL Veritabanı’na ve diğer Azure hizmetlerine erişimi güvenli hale getirmeye yönelik anahtar teslim bir çözüm olan yönetilen kimliği sağlar. App Service içindeki yönetilen kimlikler, bağlantı dizelerindeki kimlik bilgileri gibi uygulamanızdaki gizli dizileri ortadan kaldırarak uygulamanızı daha güvenli hale getirir. Bu öğreticide, aşağıdaki öğreticilerden birini kullanarak, örnek web uygulamasına yönetilen kimlik ekleyen bir uygulama olacak:
- Öğretici: Azure SQL Veritabanı ile Azure'da bir ASP.NET uygulaması Azure SQL Veritabanı
- Öğretici: ASP.NET Core ve Azure SQL Veritabanı uygulama Azure App Service
İşiniz bittiğinde, örnek uygulamanız kullanıcı adı ve parolaya gerek kalmadan SQL Veritabanıa güvenli bir şekilde bağlanacaktır.

Not
Bu öğreticide ele alan adımlar aşağıdaki sürümleri destekler:
- .NET Framework 4.7.2 ve üzeri
- .NET Core 2.2 ve üzeri
Öğreneceklerin:
- Yönetilen kimlikleri etkinleştirme
- Yönetilen kimliğe SQL Veritabanı erişimi verme
- Azure ENTITY FRAMEWORK kimlik doğrulamasını SQL Veritabanı
- Bağlan AD SQL Veritabanı kullanarak Visual Studio sanal ağdan sanal ağlara erişim
Not
Azure AD kimlik doğrulaması, şirket içi Active Directory 'de tümleşik Windows kimlik AD DS. AD DS ve Azure AD tamamen farklı kimlik doğrulama protokolleri kullanır. Daha fazla bilgi için Azure AD Domain Services bakın.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
Bu makale Öğretici: SQL Veritabanı veya Öğretici: SQL Veritabanı ile Azure'da bir ASP.NET uygulaması derleme:ASP.NET Core ve SQL Veritabanı uygulaması derleme makalesinde Azure App Service. Henüz kullanmadıysanız, önce iki öğreticiden birini izleyin. Alternatif olarak, adımları kendi .NET uygulamanıza uyarlamak için aşağıdaki SQL Veritabanı.
Arka uç olarak uygulamanıza SQL Veritabanı hata ayıklamak için bilgisayarınızdan istemci bağlantısına izin verilisiniz. Yoksa, sunucu düzeyinde IP güvenlik duvarı kurallarını yönetme adımlarını kullanarak istemci IP'sini Azure portal.
Ortamınızı Azure CLI için hazırlayın.
Azure Cloud Shell'Da Bash ortamını kullanın.
Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantılarını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları 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.
Azure AD kullanıcıya veritabanı erişimi izni ver
İlk olarak, bir Azure AD SQL Veritabanı sunucusunun Active Directory yöneticisi olarak ataarak Azure AD kimlik doğrulamasını etkinleştirin. Bu kullanıcı, Azure Microsoft hesabı kaydolan kullanıcıdan farklıdır. Oluşturduğunuz, aktarmış, eşitlene veya Azure AD'ye davet etmiş bir kullanıcı olması gerekir. İzin verilen Azure AD kullanıcıları hakkında daha fazla bilgi için bkz. Azure AD özellikleri ve sınırlamaları SQL Veritabanı.
Azure AD kiracınız henüz bir kullanıcıya sahip değilse, Azure Active Directory kullanarak kullanıcı ekleme veya silme adımlarını Azure Active Directory.
ve yerine kullanarak Azure AD kullanıcılarının nesne
az ad user listkimliğini <user-principal-name> bulun. Sonuç bir değişkene kaydedilir.azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)İpucu
Azure AD'de tüm kullanıcı asıl adlarının listesini görmek için
az ad user list --query [].userPrincipalNameçalıştırın.Aşağıdaki komutta komutunu kullanarak bu Azure AD kullanıcısını Active Directory
az sql server ad-admin createyöneticisi Cloud Shell. Aşağıdaki komutta yerine <server-name> sunucu adını yazın (soneki.database.windows.netolmadan).az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
Active Directory yöneticisi ekleme hakkında daha fazla bilgi için bkz. Sunucunuz için Azure Active Directory yöneticisi sağlama
Visual Studio'yu ayarlama
Visual Studio için Windows, Azure AD kimlik doğrulaması ile tümleşiktir. Visual Studio'de geliştirme ve hata ayıklamayı etkinleştirmek için, menüden Dosya Hesabı Visual Studio'ı seçerek Azure AD kullanıcınızı Ayarlar'a ekleyin ve Hesap > ekle'ye tıklayın.
Azure hizmet kimlik doğrulaması için Azure AD kullanıcısını ayarlamak için menüden Araçlar Seçenekler'i ve ardından Azure Hizmet Kimlik > Doğrulaması Hesabı Seçimi'ne > tıklayın. Ekley istediğiniz Azure AD kullanıcı adını seçin ve Tamam'a tıklayın.
Artık Azure AD kimlik doğrulamasını kullanarak arka uç olarak SQL Veritabanı uygulama geliştirmeye ve hata ayıklamaya hazır olursanız.
Projenizi değiştirme
Projeniz için takip edersiniz adımlar bunun bir proje mi yoksa ASP.NET proje mi ASP.NET Core bağlıdır.
Bu Visual Studio, Paket Yöneticisi Konsolu'nu açın ve Microsoft.Azure.Services.AppAuthenticationNuGet paketini ekleyin:
Install-Package Microsoft.Azure.Services.AppAuthentication -Version 1.4.0Bu Web.config dosyasının üst kısmından çalışarak aşağıdaki değişiklikleri yapın:
içinde
<configSections>aşağıdaki bölüm bildirimini ekleyin:<section name="SqlAuthenticationProviders" type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />kapanış
</configSections>etiketinin altına için aşağıdaki XML kodunu<SqlAuthenticationProviders>ekleyin.<SqlAuthenticationProviders> <providers> <add name="Active Directory Interactive" type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, Microsoft.Azure.Services.AppAuthentication" /> </providers> </SqlAuthenticationProviders>adlı bağlantı dizesini bulun
MyDbConnectionve değeriniconnectionStringile"server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active Directory Interactive"değiştirin. ve <server-name> yerine sunucu adını ve veritabanı adını <db-name> yazın.
Not
Az önce kaydettirmiş olduğunuz SqlAuthenticationProvider, daha önce yüklemiş olduğu AppAuthentication kitaplığının üzerine dayalıdır. Varsayılan olarak, sistem tarafından atanan bir kimlik kullanır. Kullanıcı tarafından atanan kimliklerden faydalanmanız için ek bir yapılandırma sağlamanız gerekir. AppAuthentication kitaplığı için bağlantı dizesi desteğine bakın.
SQL Veritabanı'a bağlanmak için ihtiyacınız olan her şey SQL Veritabanı. Hata ayıklama sırasında Visual Studio kodunuz, Azure AD'yi ayarlama'da yapılandırılan AzureAD Visual Studio. Daha sonra, SQL Veritabanı yönetilen kimliğinden bağlantılara izin vermek için App Service ayarlayabilirsiniz.
Uygulamayı
Ctrl+F5yeniden çalıştırmak için yazın. Tarayıcınızdaki aynı CRUD uygulaması artık Azure AD kimlik doğrulamasını Azure SQL Veritabanı doğrudan uygulamaya bağlanıyor. Bu kurulum, veritabanından veritabanı geçişlerini Visual Studio.
Yönetilen kimlik bağlantısını kullanma
Daha sonra, App Service yönetilen kimlikle SQL Veritabanı bağlanacak şekilde yapılandırabilirsiniz.
Not
Bu bölümdeki yönergeler sistem tarafından atanan bir kimlik için olduğunda, Kullanıcı tarafından atanan bir kimlik yalnızca kolayca kullanılabilir. Bunu yapmak için: az webapp identity assign commandistenen kullanıcı tarafından atanan kimliği atamak için değişikliğini yapmanız gerekir. sonra, SQL kullanıcı oluştururken, site adı yerine kullanıcı tarafından atanan kimlik kaynağının adını kullandığınızdan emin olun.
Uygulamada yönetilen kimliği etkinleştir
Azure uygulamanızda bir yönetilen kimlik etkinleştirmek için Cloud Shell’de az webapp identity assign komutunu kullanın. Aşağıdaki komutta, öğesini değiştirin <app-name> .
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Not
Dağıtım yuvasıiçin yönetilen kimliği etkinleştirmek üzere, --slot <slot-name> içinde yuva adını ekleyin ve kullanın <slot-name> .
Çıkış örneği:
{
"additionalProperties": {},
"principalId": "21dfa71c-9e6f-4d17-9e90-1d28801c9735",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"type": "SystemAssigned"
}
Yönetilen kimliğe izin ver
Not
isterseniz, kimliği bir azure ad grubunaekleyebilir, sonra kimlik yerine azure ad grubuna SQL Veritabanı erişim izni verebilirsiniz. Örneğin, aşağıdaki komutlar önceki adımdan yönetilen kimliği Myazuresqldbaccessgroup adlı yeni bir gruba ekler:
groupid=$(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
Cloud Shell’de SQLCMD komutunu kullanarak SQL Veritabanı oturumunu açın. <server-name> <db-name> Uygulamanızın kullandığı veritabanı adı Ile ve <aad-user-name> <aad-password> Azure AD Kullanıcı kimlik bilgilerinizle birlikte sunucu adınızla değiştirin.
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30istediğiniz veritabanına yönelik SQL isteminde, uygulamanızın ihtiyaç duyacağı izinleri vermek için aşağıdaki komutları çalıştırın. Örneğin,
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>]; GO<identity-name> , Azure AD 'de yönetilen kimliğin adıdır. Kimlik sistem tarafından atanmışsa, ad App Service uygulamanızın adı ile her zaman aynıdır. Bir dağıtım yuvasıiçin, sistem tarafından atanan kimliğin adı <app-name> /Slots/ <slot-name> olur. Bir Azure AD grubuna izinler vermek için, bunun yerine grubun görünen adını kullanın (örneğin, Myazuresqldbaccessgroup).
Cloud Shell istemine geri dönmek için
EXITyazın.Not
Yönetilen kimliklerin arka uç Hizmetleri, bir hedef kaynağın belirtecini yalnızca süresi dolarsa güncelleştiren bir belirteç önbelleği de sağlar . SQL Veritabanı izinlerinizi yapılandırırken bir hata yaparsanız ve uygulamanızla belirteç almaya çalıştıktan sonra izinleri değiştirmeye çalışırsanız, önbelleğe alınan belirtecin süresi dolana kadar güncelleştirilmiş izinlerle yeni bir belirteç alınmaz.
Not
Azure Active Directory ve yönetilen kimlikler şirket içi SQL Server için desteklenmez.
Bağlantı dizesini değiştirme
Web.config veya appsettings. json ' da yaptığınız aynı değişikliklerin yönetilen kimlikle çalışıp çalışmadığını unutmayın. bu nedenle tek şey, uygulamayı ilk kez dağıtmaya Visual Studio oluşturulan App Service var olan bağlantı dizesinin kaldırılması olur. Aşağıdaki komutu kullanın, ancak <app-name> uygulamanızın adıyla değiştirin.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection
Değişikliklerinizi yayımlama
Bundan sonra tek yapmanız gereken, değişikliklerinizi Azure'da yayımlamaktır.
öğreticiden ulaşdıysanız : Azure 'da SQL Veritabanı ASP.NET uygulama oluşturma, değişikliklerinizi Visual Studio yayımlayın. Çözüm Gezgini’nde DotNetAppSqlDb projenize sağ tıklayıp Yayımla’yı seçin.

Yayımlama sayfasında Yayımla'ya tıklayın.
Önemli
App Service adınızın mevcut uygulamakayıtlarıyla eşleşmediğinden emin olun. Bu, sorumlu KIMLIK çakışmalarına neden olur.
Yeni web sayfası yapılacaklar listenizi gösterdiğinde uygulamanızın yönetilen kimliğini kullanarak veritabanına bağlanmakta olduğu anlamına gelir.

Bundan sonra yapılacaklar listesini daha önce olduğu gibi düzenleyebilirsiniz.
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Bu kaynakların gelecekte gerekli olacağını düşünmüyorsanız, Cloud Shell’de aşağıdaki komutu çalıştırarak kaynak grubunu silin:
az group delete --name myResourceGroup
Bu komutun çalıştırılması bir dakika sürebilir.
Sonraki adımlar
Öğrendikleriniz:
- Yönetilen kimlikleri etkinleştirme
- Yönetilen kimliğe SQL Veritabanı erişimi verme
- SQL Veritabanı ile Azure AD kimlik doğrulamasını kullanmak için Entity Framework yapılandırma
- Azure AD kimlik doğrulaması kullanarak Visual Studio SQL Veritabanı Bağlan
