.NET için Azure SDK ile Azure'da barındırılan uygulamaların Kimliğini Azure kaynaklarına doğrulama

Bir uygulama Azure'da Azure Uygulaması Hizmeti, Azure Sanal Makineler veya Azure Container Instances gibi bir hizmet kullanılarak barındırıldığında, bir uygulamanın Azure kaynaklarına kimliğini doğrulamak için önerilen yaklaşım yönetilen kimlik kullanmaktır.

Yönetilen kimlik, gizli anahtar veya başka bir uygulama gizli dizisi kullanmaya gerek kalmadan diğer Azure kaynaklarına bağlanabilecek şekilde uygulamanız için bir kimlik sağlar. Azure, uygulamanızın kimliğini ve bağlanmasına izin verilen kaynakları dahili olarak bilir. Azure, uygulama gizli dizilerini yönetmek zorunda kalmadan uygulamanın diğer Azure kaynaklarına bağlanmasına izin vermek üzere otomatik olarak Microsoft Entra belirteçlerini almak için bu bilgileri kullanır.

Yönetilen kimlik türleri

İki tür yönetilen kimlik vardır:

  • Sistem tarafından atanan yönetilen kimlikler - Bu tür yönetilen kimlikler tarafından sağlanır ve doğrudan bir Azure kaynağına bağlanır. Bir Azure kaynağında yönetilen kimliği etkinleştirdiğinizde, bu kaynak için sistem tarafından atanan bir yönetilen kimlik alırsınız. Sistem tarafından atanan yönetilen kimlik, ilişkili olduğu Azure kaynağının yaşam döngüsüne bağlıdır. Kaynak silindiğinde Azure sizin için kimliği otomatik olarak siler. Tek yapmanız gereken kodunuzu barındıran Azure kaynağı için yönetilen kimliği etkinleştirmek olduğundan, bu kullanımı en kolay yönetilen kimlik türüdür.
  • Kullanıcı tarafından atanan yönetilen kimlikler - Yönetilen kimliği tek başına Azure kaynağı olarak da oluşturabilirsiniz. Bu en sık, çözümünüzde aynı kimliği ve aynı izinleri paylaşması gereken birden çok Azure kaynağı üzerinde çalışan birden çok iş yükü olduğunda kullanılır. Örneğin, çözümünüz birden çok App Service ve sanal makine örneğinde çalışan bileşenlere sahipse ve tüm bunların aynı Azure kaynakları kümesine erişmesi gerekiyorsa, bu kaynaklar arasında kullanıcı tarafından atanan yönetilen kimlik oluşturma ve kullanma mantıklı olacaktır.

Bu makalede, bir uygulama için sistem tarafından atanan yönetilen kimliği etkinleştirme ve kullanma adımları ele alınacaktır. Kullanıcı tarafından atanan yönetilen kimlik kullanmanız gerekiyorsa, kullanıcı tarafından atanan yönetilen kimliğin nasıl oluşturulacağını görmek için Kullanıcı tarafından atanan yönetilen kimlikleri yönetme makalesine bakın.

1 - Uygulamayı barındıran Azure kaynağında yönetilen kimliği etkinleştirme

İlk adım, uygulamanızı barındıran Azure kaynağında yönetilen kimliği etkinleştirmektir. Örneğin, Azure Uygulaması Service kullanarak bir .NET uygulaması barındırılıyorsa, uygulamanızı barındıran App Service web uygulaması için yönetilen kimliği etkinleştirmeniz gerekir. Uygulamanızı barındırmak için bir sanal makine kullanıyorsanız VM'nizin yönetilen kimliği kullanmasını sağlarsınız.

Yönetilen kimliğin Azure portalı veya Azure CLI kullanarak Bir Azure kaynağı için kullanılmasını etkinleştirebilirsiniz.

Yönergeler Ekran görüntüsü
Azure portalında uygulama kodunuzu barındıran kaynağa gidin.

Örneğin, sayfanın üst kısmındaki arama kutusuna kaynağınızın adını yazabilir ve iletişim kutusunda seçerek kaynağınıza gidebilirsiniz.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource in Azure.
Kaynağınızın sayfasında sol taraftaki menüden Kimlik menü öğesini seçin.

Yönetilen kimliği destekleyebilecek tüm Azure kaynakları, menünün düzeni biraz farklılık gösterse bile bir Kimlik menü öğesine sahip olur.
A screenshot showing the location of the Identity menu item in the left-hand menu for an Azure resource.
Kimlik sayfasında:
  1. Durum kaydırıcısını Açık olarak değiştirin.
  2. Kaydet'e tıklayın.
Bir onay iletişim kutusu, hizmetiniz için yönetilen kimliği etkinleştirmek istediğinizi doğrular. Evet yanıtını verin; Yönetilen kimlik Azure kaynağı için etkinleştirilir.
A screenshot showing how to enable managed identity for an Azure resource on the resource's Identity page.

2 - Yönetilen kimliğe rol atama

Ardından, uygulamanızın hangi rollere (izinlere) ihtiyacı olduğunu belirlemeniz ve yönetilen kimliği Azure'daki bu rollere atamanız gerekir. Yönetilen kimliğe kaynak, kaynak grubu veya abonelik kapsamında roller atanabilir. Bu örnekte, çoğu uygulama tüm Azure kaynaklarını tek bir kaynak grubunda gruplandırdığından kaynak grubu kapsamında rollerin nasıl atanacağı gösterilir.

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.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource group in Azure. This is the resource group that you'll assign roles (permissions) to.
Kaynak grubunun sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin. A screenshot showing the location of the Access control (IAM) menu item in the left-hand menu of an Azure resource group.
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.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
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 Blob rolleri için filtreleme gösterilmektedir.
  2. Atamak istediğiniz rolü seçin.
Sonraki ekrana gitmek için İleri'yi seçin.
A screenshot showing how to filter and select role assignments to be added to the resource group.
Sonraki Rol ataması ekle sayfası, rolü hangi kullanıcıya atayabileceğinizi belirtmenize olanak tanır.
  1. Erişim ata'nın altında Yönetilen kimlik'i seçin.
  2. Üyeler'in altında + Üyeleri seç'i seçin
Azure portalının sağ tarafında bir iletişim kutusu açılır.
A screenshot showing how to select managed identity as the type of user you want to assign the role (permission) on the add role assignments page.
Yönetilen kimlikleri seçin iletişim kutusunda:
  1. Yönetilen kimlik açılan listesi ve Seç metin kutusu, aboneliğinizdeki yönetilen kimliklerin listesini filtrelemek için kullanılabilir. Bu örnekte App Service seçilerek yalnızca App Service ile ilişkili yönetilen kimlikler görüntülenir.
  2. Uygulamanızı barındıran Azure kaynağının yönetilen kimliğini seçin.
Devam etmek için iletişim kutusunun alt kısmındaki Seç'i seçin.
A screenshot showing how to use the select managed identities dialog to filter and select the managed identity to assign the role to.
Yönetilen kimlik 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.
A screenshot of the final add role assignment screen where a user needs to select the Review + Assign button to finalize the role assignment.

3 - Uygulamanızda DefaultAzureCredential uygulama

DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında kullanılan kimlik doğrulama yöntemini belirler. Bu şekilde uygulamanız, ortama özgü kod uygulamadan farklı ortamlarda farklı kimlik doğrulama yöntemleri kullanabilir.

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

uygulamasını uygulamak DefaultAzureCredentialiçin önce ve isteğe bağlı olarak Microsoft.Extensions.Azure paketlerini uygulamanıza ekleyinAzure.Identity. Bunu komut satırını veya NuGet Paket Yöneticisi kullanarak yapabilirsiniz.

Uygulama projesi dizininde tercihinize göre bir terminal ortamı açın ve aşağıdaki komutu girin.

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Azure hizmetlerine genellikle SDK'dan karşılık gelen 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 dosyaya kaydedilmelidir Program.cs . Program.csiçinde, ve hizmetinizi DefaultAzureCredentialdoğru şekilde ayarlamak için aşağıdaki adımları izleyin.

  1. Azure.Identity ve Microsoft.Extensions.Azure ad alanlarını using deyimine ekleyin.
  2. İlgili yardımcı yöntemleri kullanarak Azure hizmetini kaydedin.
  3. yöntemine nesnesinin DefaultAzureCredential bir örneğini UseCredential geçirin.

Bunun bir örneği aşağıdaki kod kesiminde gösterilmiştir.

using Microsoft.Extensions.Azure;
using Azure.Identity;

// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
    x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
    x.UseCredential(new DefaultAzureCredential());
});

Alternatif olarak, aşağıda görüldüğü gibi ek Azure kayıt yöntemlerinin yardımı olmadan hizmetlerinizde daha doğrudan kullanabilirsiniz DefaultAzureCredential .

using Azure.Identity;

// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x => 
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Yukarıdaki kod yerel geliştirme sırasında yerel iş istasyonunuzda çalıştırıldığında, yerel geliştirme sırasında uygulamanın Kimliğini Azure kaynaklarına doğrulamak için kullanılabilen bir geliştirici kimlik bilgileri kümesi için bir uygulama hizmet sorumlusunun veya Visual Studio, VS Code, Azure CLI veya Azure PowerShell'in ortam değişkenlerine bakar.

Azure'a dağıtıldığında bu 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.