Azure Kimlik kitaplığını kullanarak .NET uygulamalarının kimliğini Azure hizmetlerinde doğrulamaya genel bakış
Bir uygulamanın bir Azure kaynağına erişmesi gerektiğinde, uygulamanın Azure'da kimlik doğrulaması yapılması gerekir. Azure'a dağıtılan, şirket içinde dağıtılan veya yerel geliştirici iş istasyonunda geliştirme aşamasında olan tüm uygulamalar için bu durum geçerlidir. Bu makalede, Azure SDK istemci kitaplıklarını kullanırken Azure'da bir uygulamanın kimliğini doğrulamak için önerilen yaklaşımlar açıklanmaktadır.
Önerilen uygulama kimlik doğrulaması yaklaşımı
Uygulamaların Azure kaynaklarında kimlik doğrulaması yaparken bağlantı dizeleri yerine belirteç tabanlı kimlik doğrulaması kullanması önerilir. Azure Kimlik kitaplığı belirteç tabanlı kimlik doğrulamasını destekleyen sınıflar sağlar ve uygulamanın yerel geliştirme aşamasında, Azure'a dağıtıldığında veya şirket içi bir sunucuya dağıtıldığında uygulamaların Azure kaynaklarında sorunsuz bir şekilde kimlik doğrulaması yapmalarına olanak sağlar.
Bir uygulamanın Azure kaynaklarında kimlik doğrulaması yapmak için kullanması gereken belirteç tabanlı kimlik doğrulaması türü, uygulamanın nerede çalıştığına bağlıdır ve aşağıdaki diyagramda gösterilmiştir:
Bir uygulama şu durumlarda olur:
- Geliştirmeyerel olarak çalıştırılırsa, uygulama yerel geliştirme için bir uygulama hizmet sorumlusu kullanarak veya geliştiricinin Azure kimlik bilgilerini kullanarak Azure'da kimlik doğrulaması yapabilir. Her seçenek, yerel geliştirme sırasındakimlik doğrulamasında daha ayrıntılı olarak ele alınır.
- Azure üzerinde barındırılan, uygulamanın yönetilen kimlik kullanarak Azure kaynaklarında kimlik doğrulaması yapması gerekir. Bu seçenek, sunucu ortamlarındakimlik doğrulaması bölümünde daha ayrıntılı olarak ele alınmıştı.
- şirket içibarındırılan ve dağıtılan uygulama, Azure kaynaklarında bir uygulama hizmet sorumlusu kullanarak kimlik doğrulaması yapmalıdır. Bu seçenek, sunucu ortamlarındakimlik doğrulaması bölümünde daha ayrıntılı olarak ele alınmıştı.
DefaultAzureCredential
Azure Identity kitaplığı tarafından sağlanan DefaultAzureCredential sınıfı, uygulamaların çalıştırıldığı ortama bağlı olarak farklı kimlik doğrulama yöntemleri kullanmasına olanak tanır. Bu, uygulamaların yerel geliştirmeden test ortamlarına, kod değişikliği olmadan üretime yükseltilmesini sağlar. Her ortam için uygun kimlik doğrulama yöntemini yapılandırdığınızda DefaultAzureCredential
bu kimlik doğrulama yöntemini otomatik olarak algılar ve kullanır.
DefaultAzureCredential
kullanımı, farklı ortamlarda farklı kimlik doğrulama yöntemlerini kullanmak için koşullu mantığı veya özellik bayraklarını el ile kodlamak yerine tercih edilmelidir.
DefaultAzureCredential
kullanma hakkındaki ayrıntılar DefaultAzureCredential
bir uygulamada kullanın.
Belirteç tabanlı kimlik doğrulamasının avantajları
Belirteç tabanlı kimlik doğrulaması, bağlantı dizeleriyle kimlik doğrulamasına göre aşağıdaki avantajları sunar:
- Aşağıda açıklanan belirteç tabanlı kimlik doğrulama yöntemleri, Uygulamanın Azure kaynağında ihtiyaç duyduğu belirli izinleri oluşturmanıza olanak tanır. Bu, en az ayrıcalıkilkesini izler. Buna karşılık, bir bağlantı dizesi Azure kaynağına tam haklar verir.
- Bağlantı dizesi olan herkes veya herhangi bir uygulama bir Azure kaynağına bağlanabilirken, belirteç tabanlı kimlik doğrulama yöntemleri kaynağa erişimi yalnızca kaynağa erişmeyi amaçlanan uygulamalara kapsamlar.
- Yönetilen kimlik durumunda, depolanacak bir uygulama sırrı yoktur. Bu, gizliliği ihlal edilebilecek bir bağlantı dizesi veya uygulama gizli dizisi olmadığından uygulamayı daha güvenli hale getirir.
- Azure.Identity paketi Microsoft Entra belirteçlerini sizin için alır ve yönetir. Bu, belirteç tabanlı kimlik doğrulamasını bağlantı dizesi olarak kullanmayı kolaylaştırır.
Bağlantı dizelerinin kullanımı, üretim veya hassas verilere erişmeyen ilk kavram kanıtı uygulamaları veya geliştirme prototipleriyle sınırlı olmalıdır. Aksi takdirde, Azure kaynaklarında kimlik doğrulaması yapılırken Azure Kimlik kitaplığında bulunan belirteç tabanlı kimlik doğrulama sınıfları her zaman tercih edilmelidir.
Sunucu ortamlarında kimlik doğrulaması
Bir sunucu ortamında barındırılırken, her uygulamaya uygulamanın çalıştırıldığı ortam başına benzersiz bir uygulama kimliği atanmalıdır. Azure'da bir uygulama kimliği, uygulamaları tanımlamayı ve Azure'da kimlik doğrulamayı amaçlayan özel bir güvenlik sorumlusu türühizmet sorumlusuyla temsil edilir. Uygulamanız için kullanılacak hizmet sorumlusunun türü, uygulamanızın çalıştığı yere bağlıdır.
Kimlik doğrulama yöntemi | Açıklama |
---|---|
Azure'da barındırılan uygulamalar | Azure'da barındırılan uygulamalar Yönetilen Kimlik hizmet sorumlusu kullanmalıdır. Yönetilen kimlikler, Azure'da barındırılan bir uygulamanın kimliğini temsil etmek üzere tasarlanmıştır ve yalnızca Azure'da barındırılan uygulamalarla kullanılabilir. Örneğin, Azure App Service'te barındırılan bir .NET web uygulamasına yönetilen kimlik atanır. Ardından uygulamaya atanan Yönetilen Kimlik, uygulamanın kimliğini diğer Azure hizmetlerinde doğrulamak için kullanılır. |
Azure dışında barındırılan uygulamalar (örneğin, şirket içi uygulamalar) |
Azure hizmetlerine bağlanması gereken Azure dışında barındırılan uygulamalar (örneğin şirket içi uygulamalar) Uygulama hizmetleri yöneticisikullanmalıdır. Uygulama hizmet sorumlusu, Azure'daki uygulamanın kimliğini temsil eder ve uygulama kayıt işlemi aracılığıyla oluşturulur. Örneğin, Azure Blob Depolama'yı kullanan, yerinde barındırılan bir .NET web uygulaması düşünün. Uygulama kayıt işlemini kullanarak uygulama için bir Uygulama hizmet sorumlusu oluşturabilirsiniz. AZURE_CLIENT_ID , AZURE_TENANT_ID ve AZURE_CLIENT_SECRET , çalışma zamanında uygulama tarafından okunacak ortam değişkenleri olarak depolanır ve uygulamanın Uygulama hizmet sorumlusunu kullanarak Azure'da kimlik doğrulamasına izin verir.Azure dışında barındırılan uygulamalardan kimlik doğrulaması hakkında bilgi edinin |
Yerel geliştirme sırasında kimlik doğrulaması
Bir uygulama yerel geliştirme sırasında bir geliştiricinin iş istasyonunda çalıştırıldığında, uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapmaya devam etmelidir. Yerel geliştirme sırasında Azure'da uygulamaların kimliğini doğrulamaya yönelik iki ana strateji şunlardır:
Kimlik doğrulama yöntemi | Açıklama |
---|---|
Yerel geliştirme sırasında kullanılmak üzere ayrılmış uygulama hizmeti temsilcisi nesneleri oluşturun | Bu yöntemde, ayrılmış uygulama hizmet sorumlusu nesneleri yerel geliştirme sırasında kullanılmak üzere Uygulama kayıt işlemi kullanılarak ayarlanır. Hizmet sorumlusunun kimliği daha sonra yerel geliştirmede çalıştırıldığında uygulama tarafından erişilecek ortam değişkenleri olarak depolanır. Bu yöntem, yerel geliştirme sırasında geliştiriciler tarafından kullanılan hizmet sorumlusu nesnelerine uygulama için gereken belirli kaynak izinlerini atamanızı sağlar. Bu, uygulamanın yalnızca ihtiyaç duyduğu belirli kaynaklara erişmesini sağlar ve uygulamanın üretimde sahip olacağı izinleri çoğaltır. Bu yaklaşımın dezavantajı, bir uygulama üzerinde çalışan her geliştirici için ayrı hizmet sorumlusu nesneleri oluşturma gereksinimidir. |
Yerel geliştirme sırasında geliştiricinin kimlik bilgilerini kullanarak uygulamanın Kimliğini Azure'da doğrulama | Bu yöntemde bir geliştiricinin yerel iş istasyonunda Visual Studio, VS Code için Azure Araçları uzantısı, Azure CLI veya Azure PowerShell'den Azure'da oturum açması gerekir. Uygulama daha sonra geliştiricinin kimlik bilgilerine kimlik bilgisi deposundan erişebilir ve uygulamadan Azure kaynaklarına erişmek için bu kimlik bilgilerini kullanabilir. Bir geliştiricinin Azure hesabında yalnızca Visual Studio, VS Code veya Azure CLI'dan oturum açması gerektiğinden bu yöntem daha kolay kurulum avantajına sahiptir. Bu yaklaşımın dezavantajı, geliştirici hesabının büyük olasılıkla uygulama için gerekenden daha fazla izine sahip olmasıdır. Bu nedenle, bu yaklaşım, uygulamanın üretim ortamında çalışırken sahip olacağı izinleri doğru bir şekilde yansıtmaz. |
Uygulamada DefaultAzureCredential kullanma
DefaultAzureCredential, Microsoft Entra ID'ye kimlik doğrulaması için belirlenmiş ve sıralı bir mekanizma dizisidir. Her kimlik doğrulama mekanizması, TokenCredential sınıfından türetilen bir sınıftır ve kimlik bilgisi olarak bilinir. çalışma zamanında, DefaultAzureCredential
ilk kimlik bilgilerini kullanarak kimlik doğrulamayı dener. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Bu şekilde, uygulamanız ortama özgü kod yazmadan farklı ortamlarda farklı kimlik bilgilerini kullanabilir.
DefaultAzureCredential
kullanmak için Azure.Identity ve isteğe bağlı olarak Microsoft.Extensions.Azure paketlerini uygulamanıza ekleyin:
Seçtiğiniz bir terminalde uygulama projesi dizinine gidin ve aşağıdaki komutları çalıştırın:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure hizmetlerine çeşitli Azure SDK istemci kitaplıklarından özel istemci sınıfları kullanılarak erişilir. Bu sınıflar ve kendi özel hizmetleriniz, uygulamanıza bağımlılık ekleme yoluyla erişilebilmeleri için kaydedilmelidir.
Program.cs
içinde, bir istemci sınıfını kaydetmek ve DefaultAzureCredential
için aşağıdaki adımları tamamlayın:
-
Azure.Identity
yönergeleri aracılığıylaMicrosoft.Extensions.Azure
veusing
ad alanlarını ekleyin. - İlgili
Add
ön ekli uzantı yöntemini kullanarak Azure hizmet istemcisini kaydedin. -
DefaultAzureCredential
örneğiniUseCredential
yöntemine geçirin.
Mesela:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
UseCredential
'a bir alternatif, DefaultAzureCredential
'i doğrudan örneklemektir.
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Yukarıdaki kod yerel geliştirme iş istasyonunuzda çalıştırıldığında, bir uygulama hizmet sorumlusunun ortam değişkenlerinde veya bir dizi geliştirici kimlik bilgisi için Visual Studio gibi yerel olarak yüklenen geliştirici araçlarında arar. Her iki yaklaşım da yerel geliştirme sırasında azure kaynaklarında uygulamanın kimliğini doğrulamak için kullanılabilir.
Azure'a dağıtıldığında, aynı kod uygulamanızın kimliğini diğer Azure kaynaklarda da doğrulayabilir.
DefaultAzureCredential
, diğer hizmetlerde otomatik olarak kimlik doğrulaması yapmak için ortam ayarlarını ve yönetilen kimlik yapılandırmalarını alabilir.