İngilizce dilinde oku

Aracılığıyla paylaş


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.

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:

Çalıştığı yere bağlı olarak bir uygulama için önerilen belirteç tabanlı kimlik doğrulama stratejilerini gösteren diyagram.

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 DefaultAzureCredentialbir 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_IDve 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.

DefaultAzureCredentialkullanmak 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:

.NET CLI
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.csiçinde, bir istemci sınıfını kaydetmek ve DefaultAzureCredentialiçin aşağıdaki adımları tamamlayın:

  1. Azure.Identity yönergeleri aracılığıyla Microsoft.Extensions.Azure ve using ad alanlarını ekleyin.
  2. İlgili Addön ekli uzantı yöntemini kullanarak Azure hizmet istemcisini kaydedin.
  3. DefaultAzureCredential örneğini UseCredential yöntemine geçirin.

Mesela:

c#
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.

c#
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.