Aracılığıyla paylaş


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

Şirket içi veya üçüncü taraf veri merkezi gibi Azure dışında barındırılan uygulamalar, Azure hizmetlerinde kimlik doğrulaması yapmak için Microsoft Entra ID aracılığıyla bir uygulama hizmet sorumlusu kullanmalıdır. İlerideki bölümlerde şunları öğrenirsiniz:

  • Hizmet sorumlusu oluşturmak için bir uygulamayı Microsoft Entra'ya kaydetme
  • Kapsam İzinlerine Rol Nasıl Atanır
  • Uygulama kodunuzdan bir hizmet sorumlusu kullanarak kimliği nasıl doğrularsınız?

Ayrılmış uygulama hizmet sorumlularını kullanmak, Azure kaynaklarına erişirken en az ayrıcalık ilkesine uymanızı sağlar. İzinler, geliştirme sırasında uygulamanın belirli gereksinimleriyle sınırlıdır ve diğer uygulamalar veya hizmetler için amaçlanan Azure kaynaklarına yanlışlıkla erişimi önler. Bu yaklaşım, uygulama geliştirme ortamında aşırı ayrıcalıklı olmadığından emin olarak üretime taşındığında karşılaşılan sorunları önlemeye de yardımcı olur.

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.

Uygulamayı Azure'a kaydetme

Uygulama hizmet sorumlusu nesneleri, Azure portalı veya Azure CLI kullanılarak Azure'da bir uygulama kaydı aracılığıyla oluşturulur.

  1. Azure portalında arama çubuğunu kullanarak Uygulama kayıtları sayfasına gidin.

  2. Uygulama kayıtları sayfasında "+ Yeni kayıt" seçeneğine tıklayın.

  3. Bir uygulamayı kaydetme sayfasında:

    • Adı alanı için uygulama adını ve hedef ortamı içeren açıklayıcı bir değer girin.
    • Desteklenen hesap türleriiçin, yalnızca bu kuruluş dizinindeki hesaplar (Yalnızca Microsoft Müşteri Liderliğinde - Tek kiracı) veya gereksinimlerinize en uygun seçeneğiseçin.
  4. Uygulamanızı kaydetmek ve hizmet sorumlusunu oluşturmak için kaydet'i seçin.

    Azure portalında uygulama kaydının nasıl oluşturulacağını gösteren ekran görüntüsü.

  5. Uygulamanızın Uygulama kaydı sayfasında Uygulama (istemci) kimliği ve Dizin (kiracı) kimliği kopyalayın ve bunları uygulama kodu yapılandırmalarınızda daha sonra kullanmak üzere geçici bir konuma yapıştırın.

  6. Uygulamanızın kimlik bilgilerini ayarlamak için Sertifika veya gizli dizi ekle'yi seçin.

  7. Sertifikalar ve sırlar sayfasında + Yeni istemci sırrı'nı seçin.

  8. Açılan İstemci gizli anahtarı ekle panelinde:

    • Açıklamaiçin Geçerli bir değer girin.
    • Süresi Doluyor değeri için varsayılan önerilen 180 gün değerini bırakın.
    • Sırrı eklemek için Ekle'yi seçin.
  9. Sertifikaları & gizli anahtarları sayfasında, istemci gizli anahtarının Değer özelliğini gelecek adımda kullanmak üzere kopyalayın.

    Not

    İstemci gizli anahtarı değeri, uygulama kaydı oluşturulduktan sonra yalnızca bir kez görüntülenir. Bu istemci sırrını geçersiz kılmadan daha fazla istemci sırrı ekleyebilirsiniz, ancak bu değeri tekrar görüntülemenin bir yolu yoktur.

Uygulama hizmet sorumlusuna rol atama

Ardından, uygulamanızın hangi kaynaklar üzerinde hangi rollere (izinlere) ihtiyacı olduğunu belirleyin ve bu rolleri oluşturduğunuz hizmet sorumlusuna atayın. Roller kaynak, kaynak grubu veya abonelik kapsamında 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 atandığı gösterilmektedir.

  1. Azure portalında uygulamanızı içeren kaynak grubunun Genel Bakış sayfasına gidin.

  2. Sol gezinti bölmesinden Erişim denetimi (IAM) seçin.

  3. Erişim denetimi (IAM) sayfasında + ekle'yi seçin ve ardından açılan menüden Rol ataması ekle seçin. Rol ataması ekle sayfasında rolleri yapılandırmak ve atamak için çeşitli sekmeler sağlanır.

  4. Rol sekmesinde, atamak istediğiniz rolü bulmak için arama kutusunu kullanın. Rolü seçin ve ardından İleriseçin.

  5. Üyeler sekmesinde:

    • değere erişimi atamak için, Kullanıcı, grup veya hizmet sorumlusunu seçin.
    • Üyeler değeri için + Üyeleri seç seçeneğini seçerek Üyeleri Seç açılır panelini açın.
    • Daha önce oluşturduğunuz hizmet sorumlusunu arayın ve filtrelenen sonuçlardan seçin. Grubu seçmek ve açılır menü panelini kapatmak için seç'i seçin.
    • Üyeler sekmesinin alt kısmında Gözden geçir ve ata'yi seçin.

    Hizmet sorumlusuna rol atamayı gösteren ekran görüntüsü.

  6. Gözden geçir + ata sekmesinde, sayfanın alt kısmında Gözden geçir + ata seçin.

Uygulama ortamı değişkenlerini ayarlama

Çalışma zamanında, Azure Identity kitaplığındakiDefaultAzureCredential, EnvironmentCredentialve ClientSecretCredentialgibi bazı kimlik bilgileri, ortam değişkenlerinde kurala göre hizmet sorumlusu 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.

Seçtiğiniz yaklaşımdan bağımsız olarak, hizmet sorumlusu için aşağıdaki ortam değişkenlerini yapılandırın:

  • AZURE_CLIENT_ID: Azure'da kayıtlı uygulamayı tanımlamak için kullanılır.
  • AZURE_TENANT_ID: Microsoft Entra kiracısının kimliği.
  • AZURE_CLIENT_SECRET: Uygulama için oluşturulan gizli kimlik bilgisi.

Visual Studio'da ortam değişkenleri projenizin Properties klasöründeki launchsettings.json dosyasında ayarlanabilir. Bu değerler uygulama başlatıldığında otomatik olarak çekilir. Ancak bu yapılandırmalar dağıtım sırasında uygulamanızla birlikte hareket etmediğinden, hedef barındırma ortamınızda ortam değişkenleri ayarlamanız gerekir.

"profiles": {
    "SampleProject": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7177;http://localhost:5177",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "<your-client-id>",
        "AZURE_TENANT_ID":"<your-tenant-id>",
        "AZURE_CLIENT_SECRET": "<your-client-secret>"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "<your-client-id>",
        "AZURE_TENANT_ID":"<your-tenant-id>",
        "AZURE_CLIENT_SECRET": "<your-client-secret>"
      }
    }
  }

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. İlerideki adımlarda, yerel olarak ve üretimde hizmet sorumlularıyla çalışırken ClientSecretCredential nasıl kullanılacağı gösterilmektedir.

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. ve ad alanlarını yönergeleri aracılığıyla ekleyin.
  2. İlgili Add ön ekli uzantı yöntemini kullanarak Azure hizmet istemcisini kaydedin.
  3. tenantId, clientIdve clientSecretile ClientSecretCredential yapılandırın.
  4. ClientSecretCredential örneğini UseCredential yöntemine geçirin.
builder.Services.AddAzureClients(clientBuilder =>
{
    var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
    var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
    var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");

    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));

    clientBuilder.UseCredential(new ClientSecretCredential(tenantId, clientId, clientSecret));
});

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

var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");

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