Şirket içinde barındırılan .NET uygulamalarından Azure kaynaklarında kimlik doğrulaması

Azure dışında barındırılan uygulamalar (örneğin, şirket içinde veya üçüncü taraf veri merkezinde), Azure kaynaklarına erişirken Azure'da kimlik doğrulaması yapmak için bir uygulama hizmet sorumlusu kullanmalıdır. Uygulama hizmeti sorumlusu nesneleri, Azure'da uygulama kayıt işlemi kullanılarak oluşturulur. Uygulama hizmet sorumlusu oluşturulduğunda, uygulamanız için bir istemci kimliği ve istemci gizli dizisi oluşturulur. İstemci kimliği, istemci gizli anahtarı ve kiracı kimliğiniz daha sonra ortam değişkenlerinde depolanır, böylece azure kimlik kitaplığı tarafından uygulamanızın çalışma zamanında Azure'da kimliğini doğrulamak için kullanılabilir.

Uygulamanın barındırılacağı her ortam için farklı bir uygulama kaydı oluşturulmalıdır. Bu, her hizmet sorumlusu için ortama özgü kaynak izinlerinin yapılandırılmasına olanak tanır ve bir ortama dağıtılan bir uygulamanın başka bir ortamın parçası olan Azure kaynaklarıyla konuşmadığından emin olun.

1 - Uygulamayı Azure'a kaydetme

Bir uygulama Azure portalı veya Azure CLI kullanılarak Azure'a kaydedilebilir.

Azure portalında oturum açın ve şu adımları izleyin.

Yönergeler Ekran görüntüsü
Azure portalında:
  1. Azure portalının üst kısmındaki arama çubuğuna uygulama kayıtlarını girin.
  2. Arama çubuğunun altında görüntülenen menünün Hizmetler başlığı altında Uygulama kayıtları etiketli öğeyi seçin.
Uygulama kayıtları sayfasını bulmak ve sayfaya gitmek için Azure portalındaki üst arama çubuğunun nasıl kullanılacağını gösteren ekran görüntüsü.
Uygulama kayıtları sayfasında + Yeni kayıt'ı seçin. Uygulama kayıtları sayfasındaki Yeni kayıt düğmesinin konumunu gösteren ekran görüntüsü.
Uygulamayı kaydet sayfasında formu aşağıdaki gibi doldurun:
  1. Ad → Azure'da uygulama kaydı için bir ad girin. Bu adın, uygulama kaydının ait olduğu uygulama adını ve ortamı (test, üretim) içermesi önerilir.
  2. Desteklenen hesap türleri yalnızca bu kuruluş dizinindeki Hesaplar →.
Uygulamanızı kaydetmek ve uygulama hizmet sorumlusunu oluşturmak için Kaydet'i seçin.
Uygulamaya bir ad vererek ve desteklenen hesap türlerini yalnızca bu kuruluş dizininde hesap olarak belirterek Uygulamayı kaydet sayfasının nasıl doldurulacağını gösteren ekran görüntüsü.
Uygulamanızın Uygulama kaydı sayfasında:
  1. Uygulama (istemci) kimliği → Bu, uygulamanın yerel geliştirme sırasında Azure'a erişmek için kullanacağı uygulama kimliğidir. Bu değeri bir metin düzenleyicisinde geçici bir konuma kopyalayın; bunun için sonraki bir adımda ihtiyacınız olacaktır.
  2. Dizin (kiracı) kimliği → Bu değer, Azure'da kimlik doğrulaması yaparken uygulamanız tarafından da gerekli olacaktır. Bu değeri bir metin düzenleyicisinde geçici bir konuma kopyalayın, gelecekteki bir adımda da gerekli olacaktır.
  3. İstemci kimlik bilgileri → Uygulamanızın Azure'da kimlik doğrulaması yapıp Azure hizmetlerini kullanabilmesi için önce uygulamanın istemci kimlik bilgilerini ayarlamanız gerekir. Uygulamanızın kimlik bilgilerini eklemek için Sertifika veya gizli dizi ekle'yi seçin.
Uygulama kaydı tamamlandıktan sonra Uygulama kaydı sayfasının ekran görüntüsü. Bu ekran görüntüsünde, uygulama kimliğinin ve kiracı kimliğinin gelecekteki bir adımda gerekli olacak konumu gösterilir. Ayrıca, uygulama için bir uygulama gizli dizisi eklemek için kullanılacak bağlantının konumunu da gösterir.
Sertifikalar ve gizli diziler sayfasında + Yeni istemci gizli dizisi'ni seçin. Sertifikalar ve gizli diziler sayfasında yeni bir istemci gizli dizisi oluşturmak için kullanılacak bağlantının konumunu gösteren ekran görüntüsü.
İstemci gizli dizisi ekle iletişim kutusu sayfanın sağ tarafından açılır. Bu iletişim kutusunda:
  1. Açıklama → Geçerli değerini girin.
  2. Süresi doluyor → 24 aylık bir değer seçin.
Gizli diziyi eklemek için Ekle'yi seçin.

ÖNEMLİ: Gizli dizinin son kullanma tarihinden önce takviminizde bir anımsatıcı ayarlayın. Bu şekilde, bu gizli dizi sona ermeden önce yeni bir gizli dizi ekleyebilir ve uygulamalarınızı güncelleştirebilir ve uygulamanızda hizmet kesintisini önleyebilirsiniz.
Uygulama kayıt işlemi tarafından oluşturulan uygulama hizmeti sorumlusu için yeni bir istemci gizli dizisinin eklendiği sayfayı gösteren ekran görüntüsü.
Sertifikalar ve gizli diziler sayfasında, istemci gizli dizisinin değeri gösterilir.

Bu değeri bir metin düzenleyicisinde geçici bir konuma kopyalayın; çünkü sonraki bir adımda buna ihtiyacınız olacaktır.

ÖNEMLİ: Bu değeri yalnızca bu kez görürsünüz. Bu sayfadan ayrıldıktan veya sayfayı yeniledikten sonra bu değeri bir daha göremezsiniz. Bu istemci gizli dizisini geçersiz kılınmadan başka bir istemci gizli dizisi ekleyebilirsiniz, ancak bu değeri bir daha görmezsiniz.
Oluşturulan istemci gizli dizisini içeren sayfayı gösteren ekran görüntüsü.

2 - Uygulama hizmet sorumlusuna rol atama

Ardından, uygulamanızın hangi kaynaklar üzerinde hangi rollere (izinlere) ihtiyacı olduğunu belirlemeniz ve bu rolleri uygulamanıza atamanız gerekir. Rollere kaynak, kaynak grubu veya abonelik kapsamında bir rol atanabilir. Bu örnekte, çoğu uygulama tüm Azure kaynaklarını tek bir kaynak grubunda gruplandırdığından kaynak grubu kapsamında hizmet sorumlusu için rollerin nasıl atandığı gösterilmektedir.

Yönergeler Ekran görüntüsü
Azure portalının üst kısmındaki arama kutusunu kullanarak kaynak grubu adını arayarak uygulamanızın kaynak grubunu bulun.

İletişim kutusundaki Kaynak Grupları başlığının altındaki kaynak grubu adını seçerek kaynak grubunuza gidin.
Rol (izinler) atamak istediğiniz kaynak grubunu bulmak ve bu gruba gitmek için Azure portalındaki en üstteki arama kutusunun nasıl kullanılacağını gösteren ekran görüntüsü.
Kaynak grubunun sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin. Erişim denetimi (IAM) menü öğesinin konumunu gösteren kaynak grubu sayfasının ekran görüntüsü.
Erişim denetimi (IAM) sayfasında:
  1. Rol atamaları sekmesini seçin.
  2. Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.
Rol atamaları sekmesine ve bir kaynak grubuna rol atamaları eklemek için kullanılan düğmenin konumunu gösteren ekran görüntüsü.
Rol ataması ekle sayfasında, kaynak grubu için atanabilecek tüm roller listelenir.
  1. Listeyi daha yönetilebilir bir boyuta filtrelemek için arama kutusunu kullanın. Bu örnekte Depolama Blobu rolleri için filtreleme gösterilmektedir.
  2. Atamak istediğiniz rolü seçin.
Sonraki ekrana gitmek için İleri'yi seçin.
Kaynak grubuna eklenecek rol atamalarını filtrelemeyi ve seçmeyi gösteren ekran görüntüsü.
Sonraki Rol ataması ekle sayfası, rolü hangi kullanıcıya atayabileceğinizi belirtmenize olanak tanır.
  1. Erişim ata altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın.
  2. Üyeler'in altında + Üyeleri seç'i seçin.
Azure portalının sağ tarafında bir iletişim kutusu açılır.
Bir Microsoft Entra grubuna rol atamak için seçecek radyo düğmesini ve rolün atanacak grubu seçmek için kullanılan bağlantıyı gösteren ekran görüntüsü.
Üye seç iletişim kutusunda:
  1. Seç metin kutusu, aboneliğinizdeki kullanıcı ve grupların listesini filtrelemek için kullanılabilir. Gerekirse, uygulamanın listeyi filtrelemesi için oluşturduğunuz hizmet sorumlusunun ilk birkaç karakterini yazın.
  2. Uygulamanızla ilişkili hizmet sorumlusunu seçin.
Devam etmek için iletişim kutusunun alt kısmındaki Seç'i seçin.
Üye seç iletişim kutusunda uygulamanın Microsoft Entra grubunu filtrelemeyi ve seçmeyi gösteren ekran görüntüsü.
Hizmet sorumlusu artık Rol ataması ekle ekranında seçili olarak gösterilir.

Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve ardından işlemi tamamlamak için Gözden geçir + yeniden ata'yı seçin.
Tamamlanan Rol ataması ekle sayfasını ve işlemi tamamlamak için kullanılan Gözden Geçir ve ata düğmesinin konumunu gösteren ekran görüntüsü.

3 - Uygulama için ortam değişkenlerini yapılandırma

nesnesi çalışma DefaultAzureCredential zamanında bir dizi ortam değişkeninde hizmet sorumlusu kimlik bilgilerini arar. Araçlarınıza ve ortamınıza bağlı olarak .NET ile çalışırken ortam değişkenlerini yapılandırmanın birden çok yolu vardır.

Hangi yaklaşımı seçerseniz seçin, hizmet sorumlusuyla çalışırken aşağıdaki ortam değişkenlerini yapılandırın:

  • AZURE_CLIENT_ID Uygulama kimliği değerini →.
  • AZURE_TENANT_ID kiracı kimliği değerini →.
  • AZURE_CLIENT_SECRET → Uygulama için oluşturulan parola/kimlik bilgisi.

Uygulamanız IIS'de barındırılıyorsa, uygulamalar arasındaki ayarları yalıtmak için uygulama havuzu başına ortam değişkenleri ayarlamanız önerilir.

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='ASPNETCORE_ENVIRONMENT',value='Production']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_CLIENT_ID',value='00000000-0000-0000-0000-000000000000']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_TENANT_ID',value='11111111-1111-1111-1111-111111111111']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_CLIENT_SECRET',value='=abcdefghijklmnopqrstuvwxyz']" /commit:apphost

Bu ayarları doğrudan dosyanın içindeki applicationHost.config öğesini kullanarak applicationPools da yapılandırabilirsiniz:

<applicationPools>
   <add name="CorePool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic">
      <environmentVariables>
         <add name="ASPNETCORE_ENVIRONMENT" value="Development" />
         <add name="AZURE_CLIENT_ID" value="00000000-0000-0000-0000-000000000000" />
         <add name="AZURE_TENANT_ID" value="11111111-1111-1111-1111-111111111111" />
         <add name="AZURE_CLIENT_SECRET" value="=abcdefghijklmnopqrstuvwxyz" />
      </environmentVariables>
   </add>
</applicationPools>

4 - Uygulamanızda DefaultAzureCredential uygulama

DefaultAzureCredential , Microsoft Entra'da kimlik doğrulaması yapmak için düşünceli, 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.

Kimlik bilgilerinin arandığı DefaultAzureCredential sıra ve konumlar DefaultAzureCredential konumunda bulunur.

kullanmak DefaultAzureCredentialiç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. içinde Program.cs, bir istemci sınıfını ve DefaultAzureCredentialkaydetmek için aşağıdaki adımları tamamlayın:

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

Örneğin:

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());
});

Bunun bir alternatifi UseCredential de doğrudan örnekleme DefaultAzureCredential yapmaktır:

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.