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.
Azure App Service, Azure'da yüksek oranda ölçeklenebilir, otomatik güncellenen bir web barındırma hizmeti sağlar. App Service ayrıca uygulamanız için yönetilen bir kimlik de sağlar. Bu, Azure SQL ve diğer Azure hizmetlerine erişimin güvenliğini sağlamaya yönelik anahtar teslimi bir çözümdür. App Service'teki yönetilen kimlikler, bağlantı dizelerindeki kimlik bilgileri gibi gizli dizileri ortadan kaldırarak uygulamanızı daha güvenli hale getirir.
Bu öğreticide, Azure SQL arka ucuna sahip örnek bir .NET uygulamasına yönetilen kimliğin nasıl ekleneceği gösterilmektedir. İşlemi tamamladıktan sonra uygulamanız, kullanıcı adı ve parolaya gerek kalmadan Azure SQL veritabanına güvenli bir şekilde bağlanabilir.
Bu eğitimde, siz:
- Yönetilen kimlikleri etkinleştirin.
- Yönetilen kimliğe Azure SQL Veritabanı erişimi verin.
- Entity Framework'u SQL Veritabanı ile Microsoft Entra kimlik doğrulamasını kullanacak şekilde yapılandırın.
- Microsoft Entra kimlik doğrulamasını kullanarak Visual Studio'dan SQL Veritabanı'na bağlanın.
Node.js, Python ve Java çerçevelerinde Azure Veritabanı MySQL veya PostgreSQL kullanma hakkında yönergeler için bkz: Öğretici: Yönetilen kimlik kullanarak gizli bilgiler olmadan App Service'ten Azure veritabanlarına bağlanma.
Not
Microsoft Entra Kimliği ve yönetilen kimlikler, ş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
-
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Arka uç olarak SQL kimlik doğrulaması ile Azure SQL Veritabanı kullanan temel bir Azure App Service ASP.NET MVC veya ASP.NET Core MVC create-read-update-delete (CRUD) uygulamasına sahip olun. Bu öğreticideki adımlar aşağıdaki .NET sürümlerini destekler:
- .NET Framework 4.8 ve üzeri
- .NET 6.0 ve üzeri
Geliştirme ortamınızda uygulamanızda hata ayıklamak için bilgisayarınızdan Azure'a istemci bağlantısına izin verin. Azure portalını kullanarak sunucu düzeyinde IP güvenlik duvarı kurallarını yönetme adımlarını izleyerek istemci IP adresini ekleyebilirsiniz.
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 başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
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. 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ü 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.
Microsoft Entra kullanıcısına veritabanı yöneticisi erişimi verme
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. Bu kullanıcı, Azure aboneliğinizin Microsoft hesabı kullanıcısı ile aynı olmayabilir.
- 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.
Azure Cloud Shell'in Bash ortamında veya Azure CLI'da yerel olarak oturum açtıktan sonra aşağıdaki komutları çalıştırın.
Microsoft Entra ID kullanıcısını yönetici yapmak istediğinizde nesne kimliğini almak için
az ad user list
,display-name
,filter
veyaupn
parametresiyle kullanın. Microsoft Entra dizinindeki tüm kullanıcıların bilgilerini göstermek içinaz ad user list
komutunu tek başına çalıştırın.Örneğin, aşağıdaki komut, Adı Soyadı
display-name
olan bir Microsoft Entra ID kullanıcısının bilgilerini listeler.az ad user list --display-name "Firstname Lastname"
Örnek çıktı aşağıda verilmişti:
"businessPhones": [], "displayName": "Firstname Lastname", "givenName": null, "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": null, "mail": "firstname@contoso.com", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": null, "userPrincipalName": "firstname@contoso.com"
parametresini kullanarak
az sql server ad-admin create
Microsoft Entra ID kullanıcısını Azure SQL sunucusunaobject-id
yönetici olarak ekleyin. Aşağıdaki komutta<server-name>
'yi sunucu adınızdan.database.windows.net
sonekini çıkararak değiştirin ve<entra-id>
'yi öncekiaz ad user list
komutunun çıktısındakiid
değerle değiştirin.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Uygulama için yönetilen kimlik bağlantısını ayarlama
Aşağıdaki adımlar, uygulamanızı sistem tarafından atanan yönetilen kimliği kullanarak Azure SQL Veritabanı'na bağlanacak şekilde yapılandırabilir. Kullanıcı atamalı bir kimlik kullanmak istiyorsanız bkz. öğretici: Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma.
Uygulama için yönetilen kimliği etkinleştirme
Azure uygulamanız için yönetilen kimliği etkinleştirmek için az webapp identity assign komutunu kullanın ve yerine <app-name>
uygulama adınız yazın. Sistem tarafından atanan kimliğin adı her zaman uygulama adıyla aynıdır.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
İşte bir çıktı örneği:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Dağıtım yuvasında yönetilen kimliği etkinleştirmek için, önceki komuta ekleyin --slot <slot-name>
ve içindeki <slot-name>
yuvanın adını kullanın. Bir dağıtım yuvası için sistem tarafından atanan kimliğin adı <app-name>/slots/<slot-name>
'dır.
Ayrıca, kimliği bir Microsoft Entra grubuna ekleyebilir ve ardından SQL Veritabanı'na erişim kimliği yerine Microsoft Entra grubuna verebilirsiniz. Microsoft Entra grubuna izin atamak için grubun görünen adını kullanın. Aşağıdaki komutlar, örnek yönetilen kimliği adlı myAzureSQLDBAccessGroup
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
Yönetilen kimliğe izin ver
Kimliğe uygulamanızın ihtiyaç duyduğu en düşük izinleri verin.
Bir PowerShell komut satırı açın ve aşağıdaki SQLCMD komutunu kullanarak SQL Veritabanı'nda oturum açın.
<server-name>
sunucu adınızla,<db-name>
veritabanı adınızla ve öncekiaz ad user list
komutunun çıktısındaki yönetici kullanıcınınuserPrincipalName
ile<admin-user>
değiştirin.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
Oturum açmak için istemleri izleyin.
SQL isteminde aşağıdaki komutları çalıştırarak uygulamaya veritabanında gereken en düşük izinleri verin.
<identity-name>
öğesini, Uygulama adıyla aynı olan Microsoft Entra ID içindeki yönetilen kimliğin adıyla değiştirin.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
Not
Arka uç yönetilen kimlik hizmetleri, hedef kaynağın belirtecini yalnızca süresi dolduğunda güncelleştiren bir belirteç önbelleği tutar. İlk olarak uygulamanızla belirteç aldıktan sonra SQL Veritabanı izinlerinizi değiştirmeye çalışırsanız, önbelleğe alınan belirtecin süresi dolana kadar güncelleştirilmiş izinlere sahip yeni bir belirteç almazsınız.
Özgün bağlantı dizesini kaldırma
web.config veya appsettings.json yaptığınız tüm değişiklikler yönetilen kimlikle çalışır. Uygulamanızı ilk kez dağıtırken kullandığınız özgün bağlantı dizesini kaldırabilirsiniz. Bağlantı dizesini silmek için aşağıdaki Azure CLI komutunu çalıştırın ve yerine <app-name>
uygulamanızın adını ve <connection-string-name>
bağlantı dizenizin adını yazın.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Geliştirme ortamınızı ayarlama
Seçtiğiniz geliştirme ortamını ayarlayın ve Azure'da oturum açın. Microsoft Entra kimlik doğrulaması için geliştirme ortamınızı ayarlama hakkında daha fazla bilgi için bkz . .NET için Azure Identity istemci kitaplığı.
Windows için Visual Studio, Microsoft Entra kimlik doğrulamasıyla tümleşiktir.
- Visual Studio'da geliştirme ve hata ayıklamayı etkinleştirmek için üstteki menüden Dosya>Hesabı Ayarları'nı seçerek Microsoft Entra kullanıcınızı Visual Studio'ya ekleyin ve ardından Oturum aç veya Ekle'yi seçin.
- Azure hizmet kimlik doğrulaması için Microsoft Entra kullanıcısını ayarlamak için üstteki menüden Araçlar>Seçenekleri'ni ve ardından Azure Hizmet Kimlik Doğrulama>Hesabı Seçimi'ni seçin. Eklediğiniz Microsoft Entra kullanıcısını seçin ve Tamam'ı seçin.
Projenizi değiştirme ve uygulamanızı yayımlama
Azure SQL veritabanı destekli web uygulamanız, veritabanına bağlanmak için bir veritabanı bağlamı kullanır. Uygulamayla çalışmak için Microsoft Entra kimlik doğrulamasını kullanmak için, veritabanı bağlamını modern Microsoft.Data.SqlClient ADO.NET sağlayıcısına bağlı olan Entity Framework SQL Server sağlayıcısına başvuracak şekilde güncelleştirmeniz gerekir.
Entity Framework sağlayıcısı yerleşik System.Data.SqlClient
SQL Server sağlayıcısının yerini alır ve Microsoft Entra ID kimlik doğrulama yöntemleri için destek içerir. Daha fazla bilgi için bkz . Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
, Microsoft.Data.SqlClient
'i veritabanı bağlamı için yerel olarak kullanmak üzere çalışır, ancak System.Data.SqlClient
Azure App Service'te sağlayıcı olarak sabit kodlandığı için, MicrosoftSqlDbConfiguration
'ü genişleterek System.Data.SqlClient
referanslarını bunun yerine Microsoft.Data.SqlClient
'e yönlendirmeniz gerekir. Adımlar, ASP.NET veya ASP.NET Core uygulamanız olmasına bağlı olarak farklılık gösterir.
- ASP.NET Core uygulaması
-
uygulama
ASP.NET
ASP.NET Core uygulaması varsayılan olarak Entity Framework Core kullanır.
Visual Studio Paket Yöneticisi Konsolu'ndaMicrosoft.Data.SqlClient NuGet paketini ekleyin.
Install-Package Microsoft.Data.SqlClient
appsettings.json içinde, bağlantı dizesinin değerini şu kodla değiştirin ve
<server-name
ve<database-name>
'yi sunucu adınız ve veritabanı adınızla değiştirin."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
Not
Active Directory Varsayılan kimlik doğrulamayı hem yerel makinenizde hem de Azure App Service'te kullanabilirsiniz. Sürücü, Microsoft Entra Id'den birkaç farklı yolla belirteç alabilir.
Uygulama dağıtılırsa sürücü, uygulamanın sistem tarafından atanan yönetilen kimliğinden bir belirteç alır. Bağlantı dizenize eklerseniz
User Id=<client-id-of-user-assigned-managed-identity>;
sürücü, kullanıcı tarafından atanan yönetilen kimlikle de kimlik doğrulaması yapabilir.DefaultAzureCredential
sınıfı belirteci bellekte önbelleğe alır ve süre dolmadan önce Microsoft Entra Id'den alır. Belirteci yenilemek için herhangi bir özel koda ihtiyacınız yoktur.Artık Visual Studio'da hata ayıklarken Azure SQL Veritabanı'na bağlanmak için ihtiyacınız olan her şeye sahipsiniz. Kodunuz, geliştirme ortamınızı ayarlarken yapılandırdığınız Microsoft Entra kullanıcısını kullanır.
Uygulamanızı çalıştırın. Tarayıcınızdaki CRUD uygulaması, Microsoft Entra kimlik doğrulamasını kullanarak Azure SQL veritabanına doğrudan bağlanır. Bu kurulum, Visual Studio'dan veritabanı geçişlerini çalıştırmanıza olanak tanır.
Aşağıdaki Git komutlarını kullanarak değişikliklerinizi yayımlayın:
git commit -am "configure managed identity" git push azure main
Uygulamayı test edin
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.
Artık to-do listesini 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.
İlgili içerik
- Kılavuz: Uygulamanızın güvenliğini sağlamak için özel bir etki alanı ve yönetilen sertifika kullanın
- Öğretici: Oturum açmış kullanıcı adına bir App Service uygulamasının SQL Veritabanı'na bağlanması
- Eğitim: Yönetilen kimlik kullanarak gizlilik bilgisi olmadan App Service üzerinden Azure veritabanlarına bağlanma
- Öğretici: Key Vault kullanarak yönetilen kimlikleri desteklemeyen Azure hizmetlerine bağlanma
- Öğretici: Sanal Ağ tümleştirmesi ile arka uç iletişimlerini yalıtma