Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Layanan Azure DevOps
Gunakan perwakilan layanan Microsoft Entra atau identitas terkelola untuk otomatisasi Azure DevOps yang berjalan tanpa pengguna. Identitas aplikasi ini tidak terikat pada akun milik karyawan, dan menggunakan token akses Microsoft Entra jangka pendek, bukan token akses pribadi (PATs).
Identitas terkelola dan perwakilan layanan memiliki persyaratan manajemen kredensial yang berbeda:
| Identitas | Paling cocok untuk | Manajemen kredensial |
|---|---|---|
| Identitas yang dikelola | Beban kerja yang dihosting di Azure | Azure mengelola identitas dan kredensialnya. Aplikasi Anda tidak menyimpan rahasia klien. |
| Service principal | Beban kerja di luar Azure atau beban kerja yang memerlukan identitas aplikasi portabel | Aplikasi Anda menggunakan federasi identitas beban kerja, sertifikat, atau rahasia klien. Anda mengelola sertifikat dan rahasia klien. |
Lebih suka identitas terkelola untuk beban kerja yang dihosting Azure. Untuk perwakilan layanan, lebih suka federasi identitas beban kerja atau sertifikat daripada rahasia klien saat lingkungan hosting mendukungnya.
Penting
Pertimbangkan untuk menggunakan token Microsoft Entra yang lebih aman dibandingkan dengan token akses pribadi yang memiliki risiko lebih tinggi. Untuk informasi selengkapnya, lihat Mengurangi penggunaan PAT. Tinjau panduan autentikasi untuk memilih mekanisme autentikasi yang tepat untuk kebutuhan Anda.
Memahami identitas aplikasi
Prinsipal layanan
Perwakilan layanan adalah representasi lokal dari suatu aplikasi di tenant Microsoft Entra. Mendaftarkan aplikasi akan membuat prinsipal layanan di tenant asalnya. Aplikasi multipenyewa juga dapat memiliki perwakilan layanan di setiap penyewa yang menyetujui aplikasi.
Perwakilan layanan dapat mengautentikasi dengan menggunakan:
- Kredensial identitas terfederasi, jika didukung oleh platform host.
- Sertifikat.
- Rahasia klien, yang harus Anda simpan dengan aman dan ganti secara berkala.
Identitas yang dikelola
Identitas terkelola adalah jenis perwakilan layanan khusus yang kredensialnya Azure kelola.
- Identitas terkelola yang ditetapkan sistem milik satu sumber daya Azure dan dihapus dengan sumber daya tersebut.
- Identitas terkelola yang ditetapkan pengguna adalah sumber daya Azure terpisah yang dapat ditetapkan ke beberapa sumber daya dan dikelola secara independen.
Prasyarat
- Organisasi Azure DevOps yang terhubung ke tenant Microsoft Entra.
- Prinsipal layanan atau identitas terkelola di tenant yang terhubung ke organisasi.
- Izin untuk menambahkan pengguna ke organisasi. Anggota Administrator Koleksi Proyek dapat menambahkan identitas. Administrator proyek atau tim dapat menambahkan identitas saat kebijakan undangan mengizinkannya.
- Izin dan tingkat akses yang diperlukan untuk sumber daya Azure DevOps yang diakses oleh identitas.
Buat Identitas
Pilih jenis identitas yang cocok dengan lingkungan hosting beban kerja.
Membuat "Service Principal"
- Di pusat admin Microsoft Entra, pilih Pendaftaran aplikasi>Pendaftaran baru.
- Masukkan nama deskriptif dan pilih jenis akun yang didukung untuk aplikasi Anda.
- Biarkan URI Pengalihan kosong untuk aplikasi layanan-ke-layanan.
- Tambahkan kredensial atau sertifikat identitas gabungan. Buat rahasia klien hanya ketika beban kerja tidak dapat menggunakan kredensial yang lebih kuat.
Penting
Registrasi aplikasi terdiri dari objek aplikasi dan objek perwakilan layanan utama. Saat Anda menambahkan identitas ke Azure DevOps, gunakan ID Objek prinsipal layanan dari Enterprise applications, bukan ID objek aplikasi dari Pendaftaran aplikasi.
Untuk informasi selengkapnya, lihat Objek perwakilan aplikasi dan layanan dan Membuat perwakilan layanan.
Buat identitas terkelola
Untuk mengaktifkan identitas terkelola yang ditetapkan sistem:
- Di portal Azure, buka sumber daya Azure yang menghosting beban kerja Anda.
- Pilih Sistem Identitas>yang ditetapkan.
- Atur Status ke Aktif, lalu pilih Simpan.
Untuk membuat dan menetapkan identitas terkelola yang ditetapkan pengguna:
- Di portal Azure, buat sumber daya Identitas Terkelola.
- Buka sumber daya Azure yang menghosting beban kerja Anda.
- Pilih Identitas>Ditetapkan pengguna>Tambahkan.
- Pilih identitas terkelola, lalu pilih Tambahkan.
Untuk informasi selengkapnya, lihat Mengelola identitas terkelola yang ditetapkan pengguna.
Menambahkan identitas ke Azure DevOps
Anda harus secara eksplisit menambahkan identitas aplikasi ke setiap organisasi Azure DevOps yang diaksesnya. Menambahkan identitas hanya ke grup Microsoft Entra tidak membuatnya tersedia di Azure DevOps.
Di Azure DevOps, pilih Pengaturan organisasi>Pengguna.
Pilih Tambahkan pengguna.
Masukkan nama tampilan perwakilan layanan atau identitas terkelola.
Pilih tingkat akses dan proyek yang diperlukan. Azure Repos akses memerlukan tingkat akses fungsi dasar atau yang lebih tinggi. Manfaat langganan Visual Studio tidak berlaku untuk identitas aplikasi.
Pilih Tambahkan. Azure DevOps tidak mengirim email undangan ke identitas aplikasi.
Untuk mengotomatiskan langkah ini, gunakan API Pemberian Hak Perwakilan Layanan.
Konfigurasi akses
Azure DevOps tidak menggunakan izin aplikasi Microsoft Entra untuk mengotorisasi identitas aplikasi. Tetapkan tingkat akses, Azure DevOps keanggotaan grup, dan izin sumber daya seperti yang Anda lakukan untuk anggota organisasi lain.
Ikuti praktik berikut:
- Tetapkan tingkat akses terendah yang mendukung skenario.
- Tambahkan identitas ke grup Azure DevOps khusus tujuan alih-alih menetapkan banyak izin secara langsung.
- Berikan akses hanya ke proyek dan sumber daya yang diperlukan.
- Tinjau izin identitas dan keanggotaan grup secara teratur.
Untuk penelusuran dan pengelolaan secara terprogram, lihat Service Principal Graph API.
Memperoleh dan menggunakan token akses
Minta token akses untuk sumber daya Azure DevOps, dan kirimkan Authorization di header sebagai token pembawa. Perlakukan token akses sebagai buram. Jangan bergantung pada masa berlaku yang tetap atau pada klaim yang didekode dari token. Gunakan kembali objek kredensial sehingga pustaka identitas Azure dapat menyimpan token dan memperoleh token baru jika diperlukan.
Contoh .NET berikut memerlukan Azure. Paket identitas.
Service principal dengan sertifikat
Atur AZURE_TENANT_ID, AZURE_CLIENT_ID, dan AZURE_CLIENT_CERTIFICATE_PATH dalam konfigurasi aman beban kerja.
using Azure.Core;
using Azure.Identity;
using System.Net.Http.Headers;
string RequiredSetting(string name) =>
Environment.GetEnvironmentVariable(name)
?? throw new InvalidOperationException($"Missing {name}.");
// Create a service-principal credential from a certificate.
var credential = new ClientCertificateCredential(
RequiredSetting("AZURE_TENANT_ID"),
RequiredSetting("AZURE_CLIENT_ID"),
RequiredSetting("AZURE_CLIENT_CERTIFICATE_PATH"));
var token = await credential.GetTokenAsync(new TokenRequestContext(
new[] { "https://app.vssps.visualstudio.com/.default" }));
// Call Azure DevOps with the Microsoft Entra token.
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Token);
var response = await client.GetAsync(
"https://dev.azure.com/{organization}/_apis/projects?api-version=7.1");
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Identitas terkelola yang ditetapkan pengguna
Atur AZURE_CLIENT_ID ke ID klien identitas terkelola yang ditetapkan pengguna. Tetapkan identitas tersebut ke sumber daya Azure yang menghosting aplikasi.
using Azure.Core;
using Azure.Identity;
using System.Net.Http.Headers;
var managedIdentityClientId =
Environment.GetEnvironmentVariable("AZURE_CLIENT_ID")
?? throw new InvalidOperationException("Missing AZURE_CLIENT_ID.");
// Select the user-assigned identity explicitly.
var credential = new ManagedIdentityCredential(
ManagedIdentityId.FromUserAssignedClientId(managedIdentityClientId));
var token = await credential.GetTokenAsync(new TokenRequestContext(
new[] { "https://app.vssps.visualstudio.com/.default" }));
// Call Azure DevOps with the Microsoft Entra token.
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Token);
var response = await client.GetAsync(
"https://dev.azure.com/{organization}/_apis/projects?api-version=7.1");
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Untuk identitas terkelola yang ditetapkan sistem, buat kredensial dengan ManagedIdentityId.SystemAssigned sebagai gantinya. Untuk opsi akuisisi token lainnya, lihat Memperoleh token Microsoft Entra.
Mengelola identitas aplikasi
Licensing
- Tetapkan tingkat akses langsung ke setiap identitas aplikasi.
- Setiap identitas memerlukan lisensi di setiap organisasi tempat identitas tersebut ditetapkan tingkat akses berbayar.
- Penagihan multi-organisasi dan manfaat langganan Visual Studio bagi pengguna tidak berlaku untuk identitas aplikasi.
Siklus hidup identitas
- Identitas aplikasi tidak memiliki alamat email dan tidak menerima undangan.
- Mereka tidak dapat masuk secara interaktif atau menggunakan portal web Azure DevOps.
- Mereka tidak dapat membuat kunci PAT atau SSH, membuat organisasi, atau menggunakan alur OAuth Azure DevOps.
- Menghapus identitas aplikasi dari Microsoft Entra ID tidak secara otomatis menghapus keanggotaan Azure DevOps. Hapus identitas kedaluarsa dari Azure DevOps sebagai bagian dari deprovisi.
Akses Bersyarat
Akses Bersyarat untuk identitas beban kerja dapat menargetkan prinsipal layanan berdasarkan kondisi yang didukung dan persyaratan lisensi yang berlaku. Ini tidak mendukung identitas terkelola. Kontrol pengguna seperti autentikasi multifaktor dan kepatuhan perangkat tidak berlaku untuk identitas non-pengguna.
Tanya jawab umum
Mengapa menggunakan identitas aplikasi alih-alih PAT?
Identitas aplikasi tidak terkait dengan siklus hidup pekerjaan pengguna. Ini meminta token akses berumur pendek dan dapat diatur secara terpisah dalam Microsoft Entra ID dan Azure DevOps. Identitas terkelola tidak memerlukan rahasia aplikasi. Perwakilan layanan masih memerlukan manajemen kredensial kecuali mereka menggunakan federasi identitas beban kerja.
Batas tarif apa yang berlaku?
Perwakilan layanan dan identitas terkelola memiliki batas tarif Azure DevOps yang sama dengan pengguna.
Bagaimana identitas aplikasi dikenai biaya?
Tetapkan tingkat akses berdasarkan fitur yang dibutuhkan identitas. Tingkat akses berbayar ditagih secara terpisah di setiap organisasi. Lisensi berbasis grup, penagihan pengguna multi-organisasi, dan manfaat langganan Visual Studio tidak berlaku.
Bisakah saya menambahkan identitas dari penyewa lain?
Prinsipal layanan atau objek identitas terkelola yang Anda tambahkan harus ada di tenant Microsoft Entra yang terhubung ke organisasi Azure DevOps. Anda tidak dapat menambahkan identitas terkelola langsung dari penyewa lain.
Mengapa identitas tidak dapat mengakses repositori Azure Repos?
Konfirmasikan bahwa identitas memiliki akses Dasar atau lebih tinggi, keanggotaan dalam proyek, dan izin untuk mengakses repositori. Akses pemangku kepentingan tidak termasuk Azure Repos.
Mengapa Azure DevOps tidak dapat menemukan perwakilan layanan saya?
Di pusat admin Microsoft Entra, pilih Aplikasi perusahaan, buka aplikasi, dan gunakan ID Objeknya. Jangan gunakan ID objek dari Pendaftaran aplikasi.
Mengapa Graph API mengembalikan daftar kosong atau tidak lengkap?
Ikuti nilai API continuationToken hingga tidak ada token kelanjutan yang dikembalikan. Perwakilan layanan mungkin muncul di halaman selanjutnya.
Bagaimana cara mengatasi TF401444: Sign-in required?
Tambahkan identitas aplikasi secara eksplisit ke organisasi Azure DevOps, tetapkan tingkat akses, dan berikan izin proyek dan sumber daya yang diperlukan.