Aracılığıyla paylaş


Microsoft Entra ID ile Azure Batch hizmetlerinin kimliğini doğrulama

Azure Batch, Microsoft'un çok kiracılı bulut tabanlı dizini ve kimlik yönetimi hizmeti olan Microsoft Entra Id ile kimlik doğrulamasını destekler. Azure, kendi müşterilerinin, hizmet yöneticilerinin ve kuruluş kullanıcılarının kimliğini doğrulamak için Microsoft Entra ID’yi kullanır.

Bu makalede, Azure Batch ile Microsoft Entra kimlik doğrulamasını kullanmanın iki yolu açıklar:

  • Tümleşik kimlik doğrulaması , bir uygulamayla etkileşim kuran bir kullanıcının kimliğini doğrular. Uygulama bir kullanıcının kimlik bilgilerini toplar ve Batch kaynaklarına erişimin kimliğini doğrulamak için bu kimlik bilgilerini kullanır.

  • Hizmet sorumlusu katılımsız bir uygulamanın kimliğini doğrular. Hizmet sorumlusu, uygulamanın ilkesini ve izinlerini tanımlar ve uygulamayı çalışma zamanında Batch kaynaklarına erişecek şekilde temsil eder.

Microsoft Entra Kimliği hakkında daha fazla bilgi için Microsoft Entra belgelerine bakın.

Kimlik doğrulaması için uç noktaları toplama

Batch uygulamalarının kimliğini Microsoft Entra Id ile doğrulamak için kodunuzda Microsoft Entra uç noktasını ve Batch kaynak uç noktasını eklemeniz gerekir.

Microsoft Entra uç noktası

Temel Microsoft Entra yetkilisi uç noktasıdır https://login.microsoftonline.com/. Microsoft Entra Kimliği ile kimlik doğrulaması yapmak için, kimlik doğrulaması için kullanılacak Microsoft Entra kiracısını tanımlayan kiracı kimliğiyle bu uç noktayı kullanın:

https://login.microsoftonline.com/<tenant-id>

Kiracı kimliğinizi Azure portalındaki ana Microsoft Entra Id sayfasından alabilirsiniz. Ayrıca sol gezinti bölmesinde Özellikler'i seçebilir ve Özellikler sayfasında Kiracı Kimliği'nigörebilirsiniz.

Azure portalındaki Kiracı Kimliğinin ekran görüntüsü.

Önemli

  • Hizmet sorumlusu kullanarak kimlik doğrulaması yaptığınızda kiracıya özgü Microsoft Entra uç noktası gereklidir.

  • Tümleşik kimlik doğrulaması kullanarak kimlik doğrulaması yaptığınızda kiracıya özgü uç nokta önerilir, ancak isteğe bağlıdır. Belirli bir kiracı sağlanmayan genel bir kimlik bilgisi toplama arabirimi sağlamak için Microsoft Entra ortak uç noktasını da kullanabilirsiniz. Ortak uç nokta şudur: https://login.microsoftonline.com/common.

Microsoft Entra uç noktaları hakkında daha fazla bilgi için bkz . Kimlik doğrulaması ve yetkilendirme.

Batch kaynak uç noktası

Batch hizmetine yönelik isteklerin kimliğini doğrulamak için bir belirteç almak için Batch kaynak uç noktasını https://batch.core.windows.net/ kullanın.

Uygulamanızı bir kiracıya kaydetme

Microsoft Entra kimlik doğrulamasını kullanmanın ilk adımı, uygulamanızı bir Microsoft Entra kiracısına kaydetmektir. Uygulamanızı kaydettikten sonra, kodunuzdan Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) çağırabilirsiniz. MSAL, uygulamanızdan Microsoft Entra Kimliği ile kimlik doğrulaması için bir API sağlar. Tümleşik kimlik doğrulaması veya hizmet sorumlusu kullanmanız farkmeksizin uygulamanızı kaydetmeniz gerekir.

Uygulamanızı kaydettiğinizde, uygulamanızla ilgili bilgileri Microsoft Entra Id'ye verirsiniz. Microsoft Entra Id daha sonra uygulamanızı çalışma zamanında Microsoft Entra Id ile ilişkilendirmek için kullandığınız istemci kimliği olarak da adlandırılan bir uygulama kimliği sağlar. Uygulama kimliği hakkında daha fazla bilgi için bkz . Microsoft Entra Id'de uygulama ve hizmet sorumlusu nesneleri.

Batch uygulamanızı kaydetmek için Uygulamayı kaydetme adımlarını izleyin.

Uygulamanızı kaydettikten sonra, uygulamanın Genel Bakış sayfasında Uygulama (istemci) kimliğini görebilirsiniz.

Azure portalında gösterilen Uygulama Kimliğinin ekran görüntüsü.

Tümleşik kimlik doğrulamayı yapılandırma

Tümleşik kimlik doğrulamasıyla kimlik doğrulaması yapmak için uygulamanıza Batch hizmeti API'sine bağlanma izni vermeniz gerekir. Bu adım, uygulamanızın Batch hizmeti API'sine yapılan çağrıların kimliğini doğrulamak için Microsoft Entra Id kullanmasını sağlar.

Uygulamanızı kaydettikten sonra, uygulamaya Batch hizmetine erişim vermek için şu adımları izleyin:

  1. Azure portalında uygulama kayıtlarını arayın ve seçin.
  2. Uygulama kayıtları sayfasında uygulamanızı seçin.
  3. Uygulamanızın sayfasında, sol gezinti bölmesinden API izinleri'ni seçin.
  4. API izinleri sayfasında İzin ekle'yi seçin.
  5. API izinlerini iste sayfasında Azure Batch'i seçin.
  6. Azure Batch sayfasındaki İzinleri seç'in altında, user_impersonation yanındaki onay kutusunu ve ardından İzin ekle'yi seçin.

API izinleri sayfası artık Microsoft Entra uygulamanızın hem Microsoft Graph'ahem de Azure Batch'e erişimi olduğunu gösterir. Bir uygulamayı Microsoft Entra Id ile kaydettiğinizde Microsoft Graph'a izinler otomatik olarak verilir.

Hizmet sorumlusu yapılandırma

Katılımsız çalışan bir uygulamanın kimliğini doğrulamak için bir hizmet sorumlusu kullanırsınız. Uygulamanız bir hizmet sorumlusu kullanarak kimlik doğrulaması yaparken, hem uygulama kimliğini hem de gizli anahtarı Microsoft Entra Kimliği'ne gönderir.

Uygulamanızı kaydettikten sonra Azure portalında bir hizmet sorumlusu yapılandırmak için şu adımları izleyin:

  1. Uygulamanız için gizli dizi isteyin.
  2. Uygulamanıza Azure rol tabanlı erişim denetimi (Azure RBAC) atayın.

Uygulamanız için gizli dizi isteme

Kodunuzda kullanmak üzere gizli anahtar oluşturmak ve kopyalamak için şu adımları izleyin:

  1. Azure portalında uygulama kayıtlarını arayın ve seçin.
  2. Uygulama kayıtları sayfasında uygulamanızı seçin.
  3. Uygulamanızın sayfasında, sol gezinti bölmesinden Sertifikalar ve gizli diziler'i seçin.
  4. Sertifikalar ve gizli diziler sayfasında Yeni istemci gizli dizisi'ni seçin.
  5. İstemci gizli dizisi ekle sayfasında bir açıklama girin ve gizli dizi için bir süre sonu seçin.
  6. Gizli diziyi oluşturmak ve Sertifikalar ve gizli diziler sayfasında görüntülemek için Ekle'yi seçin.
  7. Gizli dizi Değerini güvenli bir yere kopyalayın çünkü bu sayfadan ayrıldıktan sonra bu gizli diziye yeniden erişemezsiniz. Anahtarınıza erişiminizi kaybederseniz yeni bir anahtar oluşturabilirsiniz.

Uygulamanıza Azure RBAC atama

Uygulamanıza Azure RBAC rolü atamak için bu adımları izleyin. Ayrıntılı adımlar için bkz . Azure portalını kullanarak Azure rolleri atama.

  1. Azure portalında uygulamanızın kullandığı Batch hesabına gidin.
  2. Sol gezinti bölmesinden Erişim denetimi (IAM) öğesini seçin.
  3. Erişim denetimi (IAM) sayfasında Rol ataması ekle'yi seçin.
  4. Rol ataması ekle sayfasında Rol sekmesini seçin ve ardından uygulamanız için Katkıda Bulunan veya Okuyucu rolünü seçin.
  5. Üyeler sekmesini seçin ve Üyeler'in altında Üyeleri seç'i seçin.
  6. Üye seç ekranında, uygulamanızı arayıp seçin ve ardından Seç'i seçin.
  7. Rol ataması ekle sayfasında Gözden geçir ve ata'yı seçin.

Uygulamanız artık Batch hesabının Erişim denetimi (IAM) sayfasının Rol atamaları sekmesinde görünmelidir.

Özel bir rolü atama

Özel rol, kullanıcıya işleri, görevleri ve daha fazlasını göndermek için ayrıntılı izin verir. Kullanıcıların havuz oluşturma veya düğümleri değiştirme gibi maliyeti etkileyen işlemler gerçekleştirmesini önlemek için özel roller kullanabilirsiniz.

Aşağıdaki Azure Batch RBAC işlemleri için bir Microsoft Entra kullanıcısına, grubuna veya hizmet sorumlusuna izin vermek veya reddetmek için özel bir rol kullanabilirsiniz:

  • Microsoft.Batch/batchAccounts/pools/write
  • Microsoft.Batch/batchAccounts/pools/delete
  • Microsoft.Batch/batchAccounts/pools/read
  • Microsoft.Batch/batchAccounts/jobSchedules/write
  • Microsoft.Batch/batchAccounts/jobSchedules/delete
  • Microsoft.Batch/batchAccounts/jobSchedules/read
  • Microsoft.Batch/batchAccounts/jobs/write
  • Microsoft.Batch/batchAccounts/jobs/delete
  • Microsoft.Batch/batchAccounts/jobs/read
  • Microsoft.Batch/batchAccounts/certificates/write
  • Microsoft.Batch/batchAccounts/certificates/delete
  • Microsoft.Batch/batchAccounts/certificates/read
  • Herhangi bir okuma işlemi için Microsoft.Batch/batchAccounts/read
  • Herhangi bir işlem için Microsoft.Batch/batchAccounts/listKeys/action

Özel roller, Batch paylaşılan anahtar hesabı kimlik bilgileri için değil, Microsoft Entra Id ile kimliği doğrulanmış kullanıcılara yöneliktir. Batch hesabı kimlik bilgileri Batch hesabına tam izin verir. Otomatik havuzu kullanan işler için havuz düzeyinde izinler gerekir.

Not

Alanda belirli rol atamalarının belirtilmesi actions gerekirken, diğerlerinin alanda dataActions belirtilmesi gerekir. Daha fazla bilgi için bkz . Azure kaynak sağlayıcısı işlemleri.

Aşağıdaki örnekte Azure Batch özel rol tanımı gösterilmektedir:

{
 "properties":{
    "roleName":"Azure Batch Custom Job Submitter",
    "type":"CustomRole",
    "description":"Allows a user to submit jobs to Azure Batch but not manage pools",
    "assignableScopes":[
      "/subscriptions/88888888-8888-8888-8888-888888888888"
    ],
    "permissions":[
      {
        "actions":[
          "Microsoft.Batch/*/read",
          "Microsoft.Authorization/*/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Support/*",
          "Microsoft.Insights/alertRules/*"
        ],
        "notActions":[

        ],
        "dataActions":[
          "Microsoft.Batch/batchAccounts/jobs/*",
          "Microsoft.Batch/batchAccounts/jobSchedules/*"
        ],
        "notDataActions":[

        ]
      }
    ]
  }
}

Özel rol oluşturma hakkında daha fazla bilgi için bkz . Azure özel rolleri.

Kod örnekleri

Bu bölümdeki kod örnekleri, tümleşik kimlik doğrulaması veya hizmet sorumlusu kullanarak Microsoft Entra Id ile kimlik doğrulamasının nasıl yapılacağını gösterir. Kod örneklerinde .NET ve Python kullanılır, ancak kavramlar diğer diller için benzerdir.

Not

Microsoft Entra kimlik doğrulama belirtecinin süresi bir saat sonra dolar. Uzun ömürlü bir BatchClient nesnesi kullandığınızda, her zaman geçerli bir belirtece sahip olduğunuzdan emin olmak için her istekte MSAL'den bir belirteç almak en iyisidir.

Bunu .NET'te yapmak için Microsoft Entra Id'den belirteci alan bir yöntem yazın ve bu yöntemi bir BatchTokenCredentials nesnesine temsilci olarak geçirin. Batch hizmetine yapılan her istek, geçerli bir belirtecin sağlandığından emin olmak için temsilci yöntemini çağırır. Varsayılan olarak MSAL belirteçleri önbelleğe alır, bu nedenle gerektiğinde microsoft entra-only'dan yeni bir belirteç alınır. Microsoft Entra Id'deki belirteçler hakkında daha fazla bilgi için bkz . Güvenlik belirteçleri.

Kod örneği: Batch .NET ile Microsoft Entra tümleşik kimlik doğrulamayı kullanma

Batch .NET'ten tümleşik kimlik doğrulamasıyla kimlik doğrulaması yapmak için:

  1. Azure Batch .NET ve MSAL NuGet paketlerini yükleyin.

  2. Kodunuzda aşağıdaki using deyimleri bildirin:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Kiracı kimliği de dahil olmak üzere Microsoft Entra uç noktasına başvurun. Kiracı kimliğinizi Azure portalındaki Microsoft Entra Id'ye Genel Bakış sayfasından alabilirsiniz.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Batch hizmeti kaynak uç noktasına başvurun:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Batch hesabınıza başvurun:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Uygulamanız için uygulama (istemci) kimliğini belirtin. Uygulamanızın Azure portalındaki Genel Bakış sayfasından uygulama kimliğini alabilirsiniz.

    private const string ClientId = "<application-id>";
    
  7. Uygulamayı kaydettiğinizde sağladığınız yeniden yönlendirme URI'sini belirtin.

    private const string RedirectUri = "https://<redirect-uri>";
    
  8. Kimlik doğrulama belirtecini Microsoft Entra Id'den almak için bir geri çağırma yöntemi yazın. Aşağıdaki örnek, uygulamayla etkileşim kuran bir kullanıcının kimliğini doğrulamak için MSAL'yi çağırır. MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode yöntemi kullanıcıdan kimlik bilgilerini ister. Kullanıcı kimlik bilgilerini sağladıktan sonra uygulama devam eder.

    authorizationCode parametresi, kullanıcı kimlik doğrulamasından sonra yetkilendirme sunucusundan alınan yetkilendirme kodudur. WithRedirectUri kimlik doğrulamasından sonra yetkilendirme sunucusunun kullanıcıyı yeniden yönlendirdiğini yeniden yönlendirme URI'sini belirtir.

    public static async Task<string> GetTokenUsingAuthorizationCode(string authorizationCode, string redirectUri, string[] scopes)
    {
        var app = ConfidentialClientApplicationBuilder.Create(ClientId)
                    .WithAuthority(AuthorityUri)
                    .WithRedirectUri(RedirectUri)
                    .Build();
    
        var authResult = await app.AcquireTokenByAuthorizationCode(scopes, authorizationCode).ExecuteAsync();
        return authResult.AccessToken;
    }
    
  9. Öğesini yetkilendirme sunucusundan alınan yetkilendirme koduyla değiştirerek <authorization-code> aşağıdaki kodla bu yöntemi çağırın. Kapsam, .default kullanıcının kaynağın tüm kapsamlarına erişme iznine sahip olmasını sağlar.

    
    var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
    
  10. Temsilciyi parametre olarak alan bir BatchTokenCredentials nesnesi oluşturma. BatchClient nesnesini açmak için bu kimlik bilgilerini kullanın. Daha sonra Batch hizmetine karşı sonraki işlemler için BatchClient nesnesini kullanın:

    public static void PerformBatchOperations()
    {
        Func<Task<string>> tokenProvider = () => GetTokenUsingAuthorizationCode();
    
        using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
        {
            client.JobOperations.ListJobs();
        }
    }
    

Kod örneği: Batch .NET ile Microsoft Entra hizmet sorumlusu kullanma

Batch .NET'ten bir hizmet sorumlusuyla kimlik doğrulaması yapmak için:

  1. Azure Batch .NET ve MSAL NuGet paketlerini yükleyin.

  2. Kodunuzda aşağıdaki using deyimleri bildirin:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Kiracı kimliği de dahil olmak üzere Microsoft Entra uç noktasına başvurun. Hizmet sorumlusu kullandığınızda kiracıya özgü bir uç nokta sağlamanız gerekir. Kiracı kimliğinizi Azure portalındaki Microsoft Entra Id'ye Genel Bakış sayfasından alabilirsiniz.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Batch hizmeti kaynak uç noktasına başvurun:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Batch hesabınıza başvurun:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Uygulamanız için uygulama (istemci) kimliğini belirtin. Uygulamanızın Azure portalındaki Genel Bakış sayfasından uygulama kimliğini alabilirsiniz.

    private const string ClientId = "<application-id>";
    
  7. Azure portalından kopyaladığınız gizli dizi anahtarını belirtin.

    private const string ClientKey = "<secret-key>";
    
  8. Kimlik doğrulama belirtecini Microsoft Entra Id'den almak için bir geri çağırma yöntemi yazın. Aşağıdaki ConfidentialClientApplicationBuilder.Create yöntemi, katılımsız kimlik doğrulaması için MSAL'yi çağırır.

    public static async Task<string> GetAccessToken(string[] scopes)
    {
        var app = ConfidentialClientApplicationBuilder.Create(clientId)
                    .WithClientSecret(ClientKey)
                    .WithAuthority(new Uri(AuthorityUri))
                    .Build();
    
        var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
        return result.AccessToken;
    }
    
  9. Aşağıdaki kodu kullanarak bu yöntemi çağırın. Kapsam, .default uygulamanın kaynağın tüm kapsamlarına erişme iznine sahip olmasını sağlar.

       var token = await GetAccessToken(new string[] { $"{BatchResourceUri}/.default" });
    
  10. Temsilciyi parametre olarak alan bir BatchTokenCredentials nesnesi oluşturma. BatchClient nesnesini açmak için bu kimlik bilgilerini kullanın. Daha sonra Batch hizmetine karşı sonraki işlemler için BatchClient nesnesini kullanın:

    public static void PerformBatchOperations()
    {
        Func<Task<string>> tokenProvider = () => GetAccessToken();
    
        using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
        {
            client.JobOperations.ListJobs();
        }
    }
    

Kod örneği: Batch Python ile Microsoft Entra hizmet sorumlusu kullanma

Batch Python'dan hizmet sorumlusuyla kimlik doğrulaması yapmak için:

  1. azure-batch ve azure-common Python modüllerini yükleyin.

  2. Modüllere başvurun:

    from azure.batch import BatchServiceClient
    from azure.common.credentials import ServicePrincipalCredentials
    
  3. Hizmet sorumlusu kullanmak için kiracıya özgü bir uç nokta sağlayın. Kiracı kimliğinizi Azure portalındaki Microsoft Entra Id Genel Bakış sayfasından veya Özellikler sayfasından alabilirsiniz.

    TENANT_ID = "<tenant-id>"
    
  4. Batch hizmeti kaynak uç noktasına başvurun:

    RESOURCE = "https://batch.core.windows.net/"
    
  5. Batch hesabınıza başvurun:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    
  6. Uygulamanız için uygulama (istemci) kimliğini belirtin. Uygulamanızın Azure portalındaki Genel Bakış sayfasından uygulama kimliğini alabilirsiniz.

    CLIENT_ID = "<application-id>"
    
  7. Azure portalından kopyaladığınız gizli dizi anahtarını belirtin:

    SECRET = "<secret-key>"
    
  8. ServicePrincipalCredentials nesnesi oluşturun:

    credentials = ServicePrincipalCredentials(
        client_id=CLIENT_ID,
        secret=SECRET,
        tenant=TENANT_ID,
        resource=RESOURCE
    )
    
  9. BatchServiceClient nesnesini açmak için hizmet sorumlusu kimlik bilgilerini kullanın. Ardından Batch hizmetine karşı sonraki işlemler için BatchServiceClient nesnesini kullanın.

        batch_client = BatchServiceClient(
        credentials,
        batch_url=BATCH_ACCOUNT_URL
    )
    

Microsoft Entra belirteci kullanılarak kimliği doğrulanmış bir Batch istemcisinin nasıl oluşturulacağını gösteren bir Python örneği için bkz . Python Betiği ile Azure Batch Özel Görüntüsü Dağıtma örneği.

Sonraki adımlar