Mengautentikasi layanan Azure Batch dengan ID Microsoft Entra

Azure Batch mendukung autentikasi dengan MICROSOFT Entra ID, layanan manajemen identitas dan direktori berbasis cloud multi-penyewa Microsoft. Azure menggunakan ID Microsoft Entra untuk mengautentikasi pelanggan, administrator layanan, dan pengguna organisasinya sendiri.

Artikel ini menjelaskan dua cara untuk menggunakan autentikasi Microsoft Entra dengan Azure Batch:

  • Autentikasi terintegrasi mengautentikasi pengguna yang berinteraksi dengan aplikasi. Aplikasi mengumpulkan kredensial pengguna dan menggunakan kredensial tersebut untuk mengotorisasi akses ke sumber daya Batch.

  • Perwakilan layanan mengautentikasi aplikasi tanpa pengawas. Perwakilan layanan menentukan kebijakan dan izin untuk aplikasi dan mewakili aplikasi untuk mengakses sumber daya Batch saat runtime.

Untuk informasi selengkapnya tentang ID Microsoft Entra, lihat dokumentasi Microsoft Entra.

Mengumpulkan titik akhir untuk autentikasi

Untuk mengautentikasi aplikasi Batch dengan ID Microsoft Entra, Anda perlu menyertakan titik akhir Microsoft Entra dan titik akhir sumber daya Batch dalam kode Anda.

Titik akhir Microsoft Entra

Titik akhir otoritas Microsoft Entra dasar adalah https://login.microsoftonline.com/. Untuk mengautentikasi dengan ID Microsoft Entra, gunakan titik akhir ini dengan ID penyewa yang mengidentifikasi penyewa Microsoft Entra yang akan digunakan untuk autentikasi:

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

Anda bisa mendapatkan ID penyewa dari halaman ID Microsoft Entra utama di portal Azure. Anda juga dapat memilih Properti di navigasi kiri dan melihat ID Penyewa di halaman Properti .

Screenshot of the Tenant ID in the Azure portal.

Penting

  • Titik akhir Microsoft Entra khusus penyewa diperlukan saat Anda mengautentikasi dengan menggunakan perwakilan layanan.

  • Saat Anda mengautentikasi dengan menggunakan autentikasi terintegrasi, titik akhir khusus penyewa direkomendasikan, tetapi opsional. Anda juga dapat menggunakan titik akhir umum Microsoft Entra untuk menyediakan antarmuka pengumpulan kredensial generik saat penyewa tertentu tidak disediakan. Titik akhir umum adalah https://login.microsoftonline.com/common.

Untuk informasi selengkapnya tentang titik akhir Microsoft Entra, lihat Autentikasi vs. otorisasi.

Titik akhir sumber daya Batch

Gunakan titik https://batch.core.windows.net/ akhir sumber daya Batch untuk memperoleh token untuk mengautentikasi permintaan ke layanan Batch.

Daftarkan aplikasi Anda dengan penyewa

Langkah pertama dalam menggunakan autentikasi Microsoft Entra adalah mendaftarkan aplikasi Anda di penyewa Microsoft Entra. Setelah mendaftarkan aplikasi, Anda dapat memanggil Microsoft Authentication Library (MSAL) dari kode Anda. MSAL menyediakan API untuk mengautentikasi dengan MICROSOFT Entra ID dari aplikasi Anda. Mendaftarkan aplikasi Anda diperlukan apakah Anda menggunakan autentikasi terintegrasi atau perwakilan layanan.

Saat mendaftarkan aplikasi, Anda memberikan informasi tentang aplikasi Anda ke ID Microsoft Entra. ID Microsoft Entra kemudian menyediakan ID aplikasi, juga disebut ID klien, yang Anda gunakan untuk mengaitkan aplikasi Anda dengan ID Microsoft Entra saat runtime. Untuk informasi selengkapnya tentang ID aplikasi, lihat Objek aplikasi dan perwakilan layanan di ID Microsoft Entra.

Untuk mendaftarkan aplikasi Batch Anda, ikuti langkah-langkah di Mendaftarkan aplikasi.

Setelah mendaftarkan aplikasi, Anda dapat melihat ID Aplikasi (klien) di halaman Gambaran Umum aplikasi.

Screenshot of the Application ID shown in the Azure portal.

Mengonfigurasi autentikasi terintegrasi

Untuk mengautentikasi dengan autentikasi terintegrasi, Anda perlu memberikan izin aplikasi Anda untuk terhubung ke API layanan Batch. Langkah ini memungkinkan aplikasi Anda menggunakan ID Microsoft Entra untuk mengautentikasi panggilan ke API layanan Batch.

Setelah Anda mendaftarkan aplikasi, ikuti langkah-langkah berikut untuk memberikan akses aplikasi ke layanan Batch:

  1. Di portal Azure, cari dan pilih pendaftaran aplikasi.
  2. Pada halaman Pendaftaran aplikasi, pilih aplikasi Anda.
  3. Di halaman aplikasi Anda, pilih Izin API dari navigasi kiri.
  4. Pada halaman izin API, pilih Tambahkan izin.
  5. Pada halaman Minta izin API, pilih Azure Batch.
  6. Pada halaman Azure Batch , di bawah Pilih izin, pilih kotak centang di samping user_impersonation, lalu pilih Tambahkan izin.

Halaman izin API sekarang menunjukkan bahwa aplikasi Microsoft Entra Anda memiliki akses ke Microsoft Graph dan Azure Batch. Izin diberikan kepada Microsoft Graph secara otomatis saat Anda mendaftarkan aplikasi dengan ID Microsoft Entra.

Mengonfigurasi perwakilan layanan

Untuk mengautentikasi aplikasi yang berjalan tanpa pengawasan, gunakan perwakilan layanan. Saat aplikasi Anda mengautentikasi dengan menggunakan perwakilan layanan, aplikasi mengirimkan ID aplikasi dan kunci rahasia ke ID Microsoft Entra.

Setelah Anda mendaftarkan aplikasi, ikuti langkah-langkah ini di portal Azure untuk mengonfigurasi perwakilan layanan:

  1. Mintalah rahasia untuk aplikasi Anda.
  2. Tetapkan kontrol akses berbasis peran Azure (Azure RBAC) ke aplikasi Anda.

Meminta rahasia untuk aplikasi Anda

Ikuti langkah-langkah ini untuk membuat dan menyalin kunci rahasia untuk digunakan dalam kode Anda:

  1. Di portal Azure, cari dan pilih pendaftaran aplikasi.
  2. Pada halaman Pendaftaran aplikasi, pilih aplikasi Anda.
  3. Pada halaman aplikasi Anda, pilih Sertifikat & rahasia dari navigasi kiri.
  4. Pada halaman Sertifikat & rahasia , pilih Rahasia klien baru.
  5. Pada halaman Tambahkan rahasia klien, masukkan deskripsi dan pilih periode kedaluwarsa untuk rahasia tersebut.
  6. Pilih Tambahkan untuk membuat rahasia dan menampilkannya di halaman Sertifikat & rahasia .
  7. Salin Nilai rahasia ke tempat yang aman, karena Anda tidak akan dapat mengaksesnya lagi setelah Anda meninggalkan halaman ini. Jika Anda kehilangan akses ke kunci, Anda dapat membuat yang baru.

Menetapkan Azure RBAC ke aplikasi Anda

Ikuti langkah-langkah ini untuk menetapkan peran Azure RBAC ke aplikasi Anda. Untuk langkah yang lebih detail, lihat Menetapkan peran Azure dengan menggunakan portal Azure.

  1. Di portal Azure, navigasikan ke akun Batch yang digunakan aplikasi Anda.
  2. Pilih Kontrol akses (IAM) dari navigasi kiri.
  3. Pada halaman Kontrol akses (IAM), pilih Tambahkan penetapan peran.
  4. Pada halaman Tambahkan penetapan peran, pilih tab Peran , lalu pilih peran Kontributor atau Pembaca untuk aplikasi Anda.
  5. Pilih tab Anggota , dan pilih Pilih anggota di bawah Anggota.
  6. Pada layar Pilih anggota, cari dan pilih aplikasi Anda, lalu pilih Pilih.
  7. Pilih Tinjau + tetapkan pada halaman Tambahkan penetapan peran.

Aplikasi Anda sekarang akan muncul di tab Penetapan peran di halaman Kontrol akses (IAM) akun Batch.

Menetapkan peran kustom

Peran khusus memberikan izin terperinci kepada pengguna untuk mengirimkan pekerjaan, tugas, dan lainnya. Anda dapat menggunakan peran kustom untuk mencegah pengguna melakukan operasi yang memengaruhi biaya, seperti membuat kumpulan atau memodifikasi simpul.

Anda dapat menggunakan peran kustom untuk memberikan atau menolak izin kepada pengguna, grup, atau perwakilan layanan Microsoft Entra untuk operasi RBAC Azure Batch berikut:

  • 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
  • Microsoft.Batch/batchAccounts/read, untuk operasi baca apa pun
  • Microsoft.Batch/batchAccounts/listKeys/action, untuk operasi apa pun

Peran kustom adalah untuk pengguna yang diautentikasi oleh ID Microsoft Entra, bukan untuk kredensial akun kunci bersama Batch. Kredensial akun Batch memberikan izin penuh ke akun Batch. Pekerjaan yang menggunakan autopool memerlukan izin tingkat kumpulan.

Catatan

Penetapan peran tertentu perlu ditentukan di actions bidang , sedangkan yang lain perlu ditentukan di dataActions bidang . Untuk informasi selengkapnya, lihat Operasi penyedia sumber daya Azure.

Contoh berikut menunjukkan definisi peran kustom Azure Batch:

{
 "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":[

        ]
      }
    ]
  }
}

Untuk informasi selengkapnya tentang membuat peran kustom, lihat Peran kustom Azure.

Contoh kode

Contoh kode di bagian ini menunjukkan cara mengautentikasi dengan ID Microsoft Entra dengan menggunakan autentikasi terintegrasi atau dengan perwakilan layanan. Contoh kode menggunakan .NET dan Python, tetapi konsepnya mirip untuk bahasa lain.

Catatan

Token autentikasi Microsoft Entra kedaluwarsa setelah satu jam. Ketika Anda menggunakan objek BatchClient berumur panjang, yang terbaik adalah mendapatkan token dari MSAL pada setiap permintaan untuk memastikan bahwa Anda selalu memiliki token yang valid.

Untuk melakukan ini di .NET, tulis metode yang mengambil token dari MICROSOFT Entra ID, dan teruskan metode tersebut ke objek BatchTokenCredentials sebagai delegasi. Setiap permintaan ke layanan Batch memanggil metode delegasi untuk memastikan bahwa token yang valid disediakan. Secara default MSAL menyimpan token, sehingga token baru diambil dari Microsoft Entra-only jika diperlukan. Untuk informasi selengkapnya tentang token di ID Microsoft Entra, lihat Token keamanan.

Contoh kode: Gunakan autentikasi terintegrasi Microsoft Entra dengan Batch .NET

Untuk mengautentikasi dengan autentikasi terintegrasi dari Batch .NET:

  1. Instal paket Azure Batch .NET dan MSAL NuGet.

  2. Deklarasikan pernyataan berikut using dalam kode Anda:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Referensikan titik akhir Microsoft Entra, termasuk ID penyewa. Anda bisa mendapatkan ID penyewa dari halaman Gambaran Umum ID Microsoft Entra di portal Azure.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Referensikan titik akhir sumber daya layanan Batch:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Referensikan akun Batch Anda:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Tentukan ID aplikasi (klien) untuk aplikasi Anda. Anda bisa mendapatkan ID aplikasi dari halaman Gambaran Umum aplikasi Anda di portal Azure.

    private const string ClientId = "<application-id>";
    
  7. Tentukan URI pengalihan yang Anda berikan saat mendaftarkan aplikasi.

    private const string RedirectUri = "https://<redirect-uri>";
    
  8. Tulis metode panggilan balik untuk memperoleh token autentikasi dari ID Microsoft Entra. Contoh berikut memanggil MSAL untuk mengautentikasi pengguna yang berinteraksi dengan aplikasi. Metode MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode meminta kredensial pengguna. Aplikasi berlanjut setelah pengguna memberikan kredensial.

    Parameter authorizationCode adalah kode otorisasi yang diperoleh dari server otorisasi setelah pengguna mengautentikasi. WithRedirectUri menentukan URI pengalihan tempat server otorisasi mengalihkan pengguna setelah autentikasi.

    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. Panggil metode ini dengan kode berikut, ganti <authorization-code> dengan kode otorisasi yang diperoleh dari server otorisasi. Cakupan .default memastikan bahwa pengguna memiliki izin untuk mengakses semua cakupan untuk sumber daya.

    
    var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
    
  10. Buat objek BatchTokenCredentials yang menganggap delegasi sebagai parameter. Gunakan kredensial tersebut untuk membuka objek BatchClient. Kemudian gunakan objek BatchClient untuk operasi berikutnya terhadap layanan Batch:

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

Contoh kode: Gunakan perwakilan layanan Microsoft Entra dengan Batch .NET

Untuk mengautentikasi dengan perwakilan layanan dari Batch .NET:

  1. Instal paket Azure Batch .NET dan MSAL NuGet.

  2. Deklarasikan pernyataan berikut using dalam kode Anda:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Referensikan titik akhir Microsoft Entra, termasuk ID penyewa. Saat Anda menggunakan perwakilan layanan, Anda harus menyediakan titik akhir khusus penyewa. Anda bisa mendapatkan ID penyewa dari halaman Gambaran Umum ID Microsoft Entra di portal Azure.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Referensikan titik akhir sumber daya layanan Batch:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Referensikan akun Batch Anda:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Tentukan ID aplikasi (klien) untuk aplikasi Anda. Anda bisa mendapatkan ID aplikasi dari halaman Gambaran Umum aplikasi Anda di portal Azure.

    private const string ClientId = "<application-id>";
    
  7. Tentukan kunci rahasia yang Anda salin dari portal Azure.

    private const string ClientKey = "<secret-key>";
    
  8. Tulis metode panggilan balik untuk memperoleh token autentikasi dari ID Microsoft Entra. Metode ConfidentialClientApplicationBuilder.Create berikut memanggil MSAL untuk autentikasi tanpa pengawas.

    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. Panggil metode ini dengan menggunakan kode berikut. Cakupan .default memastikan bahwa aplikasi memiliki izin untuk mengakses semua cakupan untuk sumber daya.

       var token = await GetAccessToken(new string[] { "BatchResourceId/.default" });
    
  10. Buat objek BatchTokenCredentials yang menganggap delegasi sebagai parameter. Gunakan kredensial tersebut untuk membuka objek BatchClient. Kemudian gunakan objek BatchClient untuk operasi berikutnya terhadap layanan Batch:

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

Contoh kode: Menggunakan perwakilan layanan Microsoft Entra dengan Batch Python

Untuk mengautentikasi dengan perwakilan layanan dari Batch Python:

  1. Instal modul Python azure-batch dan azure-common.

  2. Referensi modul:

    from azure.batch import BatchServiceClient
    from azure.common.credentials import ServicePrincipalCredentials
    
  3. Untuk menggunakan perwakilan layanan, berikan titik akhir khusus penyewa. Anda bisa mendapatkan ID penyewa dari halaman Gambaran Umum ID Microsoft Entra atau halaman Properti di portal Azure.

    TENANT_ID = "<tenant-id>"
    
  4. Referensikan titik akhir sumber daya layanan Batch:

    RESOURCE = "https://batch.core.windows.net/"
    
  5. Referensikan akun Batch Anda:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    
  6. Tentukan ID aplikasi (klien) untuk aplikasi Anda. Anda bisa mendapatkan ID aplikasi dari halaman Gambaran Umum aplikasi Anda di portal Azure.

    CLIENT_ID = "<application-id>"
    
  7. Tentukan kunci rahasia yang Anda salin dari portal Microsoft Azure:

    SECRET = "<secret-key>"
    
  8. Buat objek ServicePrincipalCredentials:

    credentials = ServicePrincipalCredentials(
        client_id=CLIENT_ID,
        secret=SECRET,
        tenant=TENANT_ID,
        resource=RESOURCE
    )
    
  9. Gunakan kredensial utama layanan untuk membuka objek BatchServiceClient. Kemudian gunakan objek BatchServiceClient untuk operasi berikutnya terhadap layanan Batch.

        batch_client = BatchServiceClient(
        credentials,
        batch_url=BATCH_ACCOUNT_URL
    )
    

Untuk contoh Python tentang cara membuat klien Batch yang diautentikasi dengan menggunakan token Microsoft Entra, lihat Menyebarkan Gambar Kustom Azure Batch dengan sampel Skrip Python.

Langkah berikutnya