Aracılığıyla paylaş


Sistem tarafından atanan yönetilen kimliği kullanarak Azure kaynaklarına Azure tarafından barındırılan .NET uygulamalarının kimliğini doğrulama

Azure tarafından barındırılan bir uygulamanın kimliğini diğer Azure kaynaklarda doğrulamak için önerilen yaklaşım, yönetilen kimlikkullanmaktır. Bu yaklaşım, Azure App Service, Azure Container Apps ve Azure Sanal Makineler'de barındırılan uygulamalar dahil olmak üzere çoğu Azure hizmeti içindesteklenir. kimlik doğrulamasına genel bakış sayfasında farklı kimlik doğrulama teknikleri ve yaklaşımları hakkında daha fazla bilgi edinin. İlerideki bölümlerde şunları öğreneceksiniz:

  • Temel yönetilen kimlik kavramları
  • Uygulamanız için sistem tarafından atanan yönetilen kimlik oluşturma
  • Sistem tarafından atanan yönetilen kimliğe nasıl rol atanır
  • Uygulama kodunuzdan sistem tarafından atanan yönetilen kimliği kullanarak kimlik doğrulaması

Temel yönetilen kimlik kavramları

Yönetilen kimlik, gizli anahtarlar veya diğer uygulama gizli dizileri kullanılmadan uygulamanızın diğer Azure kaynaklarına güvenli bir şekilde bağlanmasını sağlar. Azure, kimliği ve bağlanmasına izin verilen kaynakları dahili olarak izler. Azure, uygulamanın diğer Azure kaynaklarına bağlanmasına izin vermek üzere Microsoft Entra belirteçlerini otomatik olarak almak için bu bilgileri kullanır.

Barındırılan uygulamanızı yapılandırırken göz önünde bulundurmanız gereken iki tür yönetilen kimlik vardır:

  • Sistem tarafından atanan yönetilen kimlikler doğrudan bir Azure kaynağında etkinleştirilir ve yaşam döngüsüne bağlıdır. Kaynak silindiğinde Azure sizin için kimliği otomatik olarak siler. Sistem tarafından atanan kimlikler, yönetilen kimlikleri kullanmaya yönelik minimalist bir yaklaşım sağlar.
  • Kullanıcı tarafından atanan yönetilen kimlikler tek başına Azure kaynakları olarak oluşturulur ve daha fazla esneklik ve özellik sunar. Bunlar, aynı kimliği ve izinleri paylaşması gereken birden çok Azure kaynağı içeren çözümler için idealdir. Örneğin, birden çok sanal makinenin aynı Azure kaynakları kümesine erişmesi gerekiyorsa, kullanıcı tarafından atanan yönetilen kimlik yeniden kullanılabilirlik ve iyileştirilmiş yönetim sağlar.

İpucu (if the context is advice or hint) or Bahşiş (if the context is gratuity).

Yönetilen kimlik en iyi uygulama önerileri makalesinde sistem tarafından atanan yönetilen kimlikleri ve kullanıcı tarafından atanan yönetilen kimlikleri seçme ve yönetme hakkında daha fazla bilgi edinin.

İlerideki bölümlerde, Azure tarafından barındırılan bir uygulama için sistem tarafından atanan yönetilen kimliği etkinleştirme ve kullanma adımları açıklanmaktadır. Kullanıcı tarafından atanan yönetilen kimlik kullanmanız gerekiyorsa daha fazla bilgi için kullanıcı tarafından atanan yönetilen kimlikler makalesini ziyaret edin.

Azure barındırma kaynağında sistem tarafından atanan yönetilen kimliği etkinleştirme

Uygulamanızla sistem tarafından atanan yönetilen kimliği kullanmaya başlamak için azure app service, Azure Container App veya Azure Sanal Makinesi gibi uygulamanızı barındıran Azure kaynağında kimliği etkinleştirin.

Azure portalını veya Azure CLI'yı kullanarak Azure kaynağı için sistem tarafından atanan yönetilen kimliği etkinleştirebilirsiniz.

  1. Azure portalında, uygulama kodunuzu barındıran azure App Service veya Azure Container App örneği gibi bir kaynağa gidin.

  2. Kaynağın Genel Bakış sayfasında Ayarlar bölümünü genişletin ve navigasyon menüsünden Kimlik'i seçin.

  3. Kimlik sayfasında, Durum kaydırıcısını Açıkkonumuna getirin.

  4. Değişikliklerinizi uygulamak için Kaydet'i seçin.

    Kapsayıcı uygulamasında sistem tarafından atanan yönetilen kimliği etkinleştirmeyi gösteren ekran görüntüsü.

Yönetilen kimliğe roller atayın

Ardından, uygulamanızın hangi rollere ihtiyacı olduğunu belirleyin ve bu rolleri yönetilen kimliğe atayın. Yönetilen kimliğe aşağıdaki kapsamlarda rol atayabilirsiniz:

  • Kaynak: Atanan roller yalnızca o belirli kaynağa uygulanır.
  • Kaynak grubu: Atanan roller, kaynak grubunda yer alan tüm kaynaklara uygulanır.
  • abonelik : Atanan roller, abonelikte yer alan tüm kaynaklar için geçerlidir.

Aşağıdaki örnekte, birçok uygulama tüm ilgili Azure kaynaklarını tek bir kaynak grubu kullanarak yönettiğinden kaynak grubu kapsamında rollerin nasıl atandığı gösterilmektedir.

  1. Sistem tarafından atanan yönetilen kimlikle uygulamayı içeren kaynak grubunun Genel Bakış sayfasına gidin.

  2. Sol gezinti bölmesinde Erişim Denetimi (IAM) seçin.

  3. Erişim denetimi (IAM) sayfasında, üst menüden + Ekle'yi seçin ve ardından Rol ataması ekle seçeneğini seçerek Rol ataması ekle sayfasına gidin.

    Kimlik rolü atama sayfasına erişmeyi gösteren ekran görüntüsü.

  4. Rol ataması ekle sayfası, kimliklere rol atamak için sekmeli, çok adımlı bir iş akışı sunar. İlk Rol sekmesinde, kimliğe atamak istediğiniz rolü bulmak için üstteki arama kutusunu kullanın.

  5. Sonuçlardan rolü seçin ve ardından İleri seçeneğine tıklayarak Üyeler sekmesine geçin.

  6. Erişim Ata seçeneği için Yönetilen kimlik seçin.

  7. Üyeler seçeneği için + Üyeleri seç'ni seçerek Yönetilen kimlikleri seç panelini açın.

  8. Yönetilen kimlikleri seçin panelinde Abonelik kullanın ve yönetilen kimlik açılan listelerini kullanarak kimliklerinizin arama sonuçlarını filtreleyin. Uygulamanızı barındıran Azure kaynağı için etkinleştirdiğiniz sistem kimliğini bulmak için seçin arama kutusunu kullanın.

    Yönetilen kimlik atama işlemini gösteren ekran görüntüsü.

  9. Devam etmek için kimliği seçin ve panelin altındaki seçeneğini tıklayın.

  10. Sayfanın alt kısmındaki Gözden Geçir + Ata seçeneğini seçin.

  11. Son Gözden Geçir + Ata sekmesinde, iş akışını tamamlamak için Gözden Geçir + Ata'ü seçin.

Uygulamanızdan Azure hizmetlerinde kimlik doğrulaması

Azure Kimlik kitaplığı, farklı senaryoları ve Microsoft Entra kimlik doğrulama akışlarını desteklemeye uyarlanmış TokenCredential uygulamaları çeşitlikimlik bilgileri sağlar. Yönetilen kimlik yerel olarak çalıştırılırken kullanılamadığından, sonraki adımlar hangi senaryoda hangi kimlik bilgilerinin kullanılacağını gösterir:

  • Yerel geliştirme ortamı: Yalnızca yerel geliştirme sırasında, önceden yapılandırılmış, önceden yapılandırılmış bir kimlik bilgileri zinciri için DefaultAzureCredential adlı bir sınıf kullanın. DefaultAzureCredential Azure CLI veya Visual Studio gibi yerel araçlarınızdan veya IDE'nizden kullanıcı kimlik bilgilerini bulur. Ayrıca yeniden denemeler, yanıtlar için bekleme süreleri ve birden çok kimlik doğrulama seçeneği için destek için esneklik ve kolaylık sağlar. Daha fazla bilgi edinmek için Yerel geliştirme sırasında Azure hizmetlerinde kimlik doğrulaması makalesini ziyaret edin.
  • azure tarafından barındırılan uygulamalar : Uygulamanız Azure'da çalışırken, uygulamanız için yapılandırılan yönetilen kimliği güvenli bir şekilde bulmak için ManagedIdentityCredential kullanın. Bu tam kimlik bilgisi türünün belirtilmesi, diğer kullanılabilir kimlik bilgilerinin beklenmedik bir şekilde alınmasını engeller.

Kodu uygulama

Azure.Identity paketini ekleyin. ASP.NET Core projesinde Microsoft.Extensions.Azure paketini de yükleyin:

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ızda kullanılabilmesi için bağımlılık ekleme için kayıtlı olmalıdır. Program.cs'de, bağımlılık ekleme ve belirteç tabanlı kimlik doğrulaması için bir istemci sınıfı yapılandırmak üzere 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. UseCredential yöntemine uygun olan bir TokenCredential örneği geçirin:
    • Uygulamanız yerel olarak çalışırken DefaultAzureCredential kullanın.
    • Uygulamanız Azure'da çalışırken ManagedIdentityCredential kullanın.
builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));

    TokenCredential credential = null;

    if (builder.Environment.IsProduction())
    {
        // Managed identity token credential discovered when running in Azure environments
        credential = new ManagedIdentityCredential();
    }
    else
    {
        // Running locally on dev machine - DO NOT use in production or outside of local dev
        credential = new DefaultAzureCredential();
    }

    clientBuilder.UseCredential(credential);
});

UseCredential yönteminin alternatifi, kimlik bilgilerini doğrudan hizmet istemcisine sağlamaktır:

TokenCredential credential = null;

if (builder.Environment.IsProduction() || builder.Environment.IsStaging())
{
    // Managed identity token credential discovered when running in Azure environments
    credential = new ManagedIdentityCredential();
}
else
{
    // Running locally on dev machine - DO NOT use in production or outside of local dev
    credential = new DefaultAzureCredential();
}

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"), credential));

Yukarıdaki kod, çalıştığı ortama bağlı olarak farklı davranır:

  • Yerel geliştirme iş istasyonunuzda, DefaultAzureCredential bir uygulama hizmet sorumlusunun ortam değişkenlerini veya bir dizi geliştirici kimlik bilgisi için Visual Studio gibi yerel olarak yüklenen geliştirici araçlarını arar.
  • Azure'a dağıtıldığında ManagedIdentityCredential diğer hizmetlerde otomatik olarak kimlik doğrulaması yapmak için yönetilen kimlik yapılandırmalarınızı bulur.