Menyambungkan ke Azure dengan koneksi layanan Azure Resource Manager
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Catatan
Kami meluncurkan pengalaman pembuatan koneksi layanan Azure baru. Menerimanya di organisasi Anda tergantung pada berbagai faktor, dan Anda mungkin masih melihat pengalaman pengguna yang lebih lama.
Koneksi layanan Azure Resource Manager memungkinkan Anda menyambungkan ke sumber daya Azure seperti Azure Key Vault dari alur Anda. Koneksi ini memungkinkan Anda menggunakan alur untuk menyebarkan ke sumber daya Azure, seperti aplikasi Azure App Service, tanpa perlu mengautentikasi setiap kali.
Anda memiliki beberapa opsi autentikasi untuk menyambungkan ke Azure dengan koneksi layanan Azure Resource Manager. Kami merekomendasikan untuk menggunakan federasi identitas beban kerja dengan pendaftaran aplikasi atau identitas terkelola. Federasi identitas beban kerja menghilangkan kebutuhan akan rahasia dan manajemen rahasia.
Opsi yang direkomendasikan:
- Pendaftaran aplikasi (otomatis) dengan federasi identitas beban kerja
- Identitas terkelola yang membuat kredensial federasi identitas beban kerja dan terhubung ke identitas terkelola yang ditetapkan pengguna yang ada. Gunakan opsi ini saat Anda tidak memiliki izin untuk membuat pendaftaran aplikasi.
- Pendaftaran aplikasi atau identitas yang dikelola (manual) dengan federasi identitas untuk beban kerja atau rahasia. Konfigurasi manual lebih memakan waktu daripada konfigurasi otomatis dan hanya boleh digunakan jika Anda sudah mencoba opsi otomatis.
Catatan
Ada opsi autentikasi koneksi layanan Azure Resource Manager lainnya yang tidak menggunakan federasi identitas beban kerja. Opsi ini tersedia untuk kompatibilitas ke belakang dan kasus batas, namun tidak disarankan. Jika Anda menyiapkan koneksi layanan untuk pertama kalinya, gunakan federasi identitas beban kerja. Jika Anda memiliki koneksi layanan yang sudah ada, coba mengonversi koneksi layanan Anda untuk menggunakan federasi identitas beban kerja terlebih dahulu.
- Pendaftaran aplikasi otomatis dengan rahasia
- identitas terkelola yang ditugaskan oleh agen
-
Terbitkan profil
Membuat pendaftaran aplikasi dengan federasi identitas beban kerja (otomatis)
Anda dapat menggunakan pendekatan ini jika semua item berikut ini benar untuk skenario Anda:
- Anda memiliki peran Pemilik untuk langganan Azure Anda.
- Anda tidak tersambung ke Azure Stack atau lingkungan Azure US Government .
- Tugas ekstensi Marketplace apa pun yang Anda gunakan diperbarui untuk mendukung federasi identitas beban kerja.
Dengan pilihan ini, Azure DevOps secara otomatis meminta langganan, grup manajemen, atau Pembelajaran Mesin ruang kerja yang ingin Anda sambungkan dan membuat federasi identitas beban kerja untuk autentikasi.
Di proyek Azure DevOps, buka Pengaturan proyek>Koneksi layanan.
Untuk informasi selengkapnya, lihat Membuka pengaturan proyek.
Pilih Koneksi layanan baru, lalu pilih Azure Resource Manager dan Berikutnya.
Pilih Pendaftaran aplikasi (otomatis) dengan federasi identitas Beban Kerja kredensial.
Pilih tingkat Cakupan. Pilih Langganan, Grup Manajemen, atau Pembelajaran Mesin Ruang Kerja. Grup manajemen adalah kontainer yang membantu Anda mengelola akses, kebijakan, dan kepatuhan di beberapa langganan. Ruang Kerja Pembelajaran Mesin adalah tempat untuk membuat artefak pembelajaran mesin.
Untuk cakupan Langganan, masukkan parameter berikut:
Parameter Deskripsi Langganan Harus diisi. Pilih langganan Azure. Grup sumber daya Opsional. Pilih grup sumber daya Azure. Untuk cakupan Grup Manajemen, pilih grup manajemen Azure.
Untuk cakupan ruang kerja Pembelajaran Mesin, masukkan parameter berikut:
Parameter Deskripsi Langganan Harus diisi. Pilih langganan Azure. Grup Sumber Daya Harus diisi. Pilih grup sumber daya yang berisi ruang kerja. Ruang Kerja Pembelajaran Mesin Harus diisi. Pilih ruang kerja Azure Pembelajaran Mesin.
Masukkan nama koneksi Layanan.
Secara opsional, masukkan deskripsi untuk koneksi layanan.
Pilih Berikan izin akses ke semua alur untuk mengizinkan semua alur menggunakan koneksi layanan ini. Jika Anda tidak memilih opsi ini, Anda harus memberikan akses secara manual ke setiap alur yang menggunakan koneksi layanan ini.
Pilih Simpan.
Membuat koneksi layanan untuk identitas terkelola yang ditetapkan pengguna yang sudah ada
Gunakan opsi ini untuk membuat kredensial identitas beban kerja secara otomatis untuk identitas terkelola yang ditetapkan pengguna yang ada. Anda harus memiliki identitas terkelola yang ditetapkan pengguna sebelum memulai.
Di proyek Azure DevOps, buka Pengaturan proyek>Koneksi layanan.
Untuk informasi selengkapnya, lihat Membuka pengaturan proyek.
Pilih Koneksi layanan baru, lalu pilih Azure Resource Manager dan Berikutnya.
Pilih Identitas terkelola.
Di Langkah 1: Detail identitas terkelola:
- Pilih Langganan untuk Identitas Terkelola. Ini adalah langganan Azure yang berisi identitas terkelola Anda.
- Pilih Grup sumber daya untuk Identitas Terkelola. Ini adalah grup sumber daya yang berisi identitas terkelola Anda.
- Pilih Identitas Terkelola. Ini adalah identitas terkelola dalam grup sumber daya yang akan Anda gunakan untuk mengakses sumber daya.
Di Langkah 2: Cakupan Azure:
Pilih Tingkat Cakupan. Pilih Langganan, Grup Manajemen, atau Pembelajaran Mesin Ruang Kerja. Grup manajemen adalah kontainer yang membantu Anda mengelola akses, kebijakan, dan kepatuhan di beberapa langganan. Ruang Kerja Pembelajaran Mesin adalah tempat untuk membuat artefak pembelajaran mesin.
Untuk cakupan Langganan, masukkan parameter berikut:
Parameter Deskripsi Langganan untuk koneksi layanan Harus diisi. Pilih nama langganan Azure yang akan diakses identitas terkelola Anda. Grup sumber daya untuk koneksi layanan Opsional. Masukkan untuk membatasi akses identitas terkelola ke satu grup sumber daya. Untuk cakupan Grup Manajemen, masukkan parameter berikut:
Parameter Deskripsi Grup Manajemen Harus diisi. Pilih grup manajemen Azure. Untuk cakupan ruang kerja Pembelajaran Mesin, masukkan parameter berikut:
Parameter Deskripsi Langganan Harus diisi. Pilih nama langganan Azure. Grup sumber daya untuk koneksi layanan Opsional. Pilih grup sumber daya yang berisi ruang kerja. Ruang kerja ML Workspace Harus diisi. Masukkan nama ruang kerja Azure Pembelajaran Mesin yang sudah ada.
Di bagian Langkah 3: Detail koneksi layanan: masukkan atau pilih parameter berikut:
Parameter Deskripsi Nama Koneksi Layanan Harus diisi. Nama yang Anda gunakan untuk merujuk ke koneksi layanan ini di properti tugas. Bukan nama langganan Azure Anda. Referensi Manajemen Layanan Opsional. Informasi konteks dari database ITSM. Keterangan Opsional. Masukkan deskripsi koneksi layanan. Di bagian Keamanan , pilih Berikan izin akses ke semua alur untuk mengizinkan semua alur menggunakan koneksi layanan ini. Jika Anda tidak memilih opsi ini, Anda harus memberikan akses secara manual ke setiap alur yang menggunakan koneksi layanan ini.
Pilih Simpan untuk memvalidasi dan membuat koneksi layanan.
Mengonversi koneksi layanan yang ada untuk menggunakan federasi identitas beban kerja
Anda dapat dengan cepat mengonversi koneksi layanan Azure Resource Manager yang ada untuk menggunakan federasi identitas beban kerja untuk autentikasi alih-alih rahasia. Anda dapat menggunakan alat konversi koneksi layanan di Azure DevOps jika koneksi layanan Anda memenuhi persyaratan berikut:
- Azure DevOps awalnya membuat koneksi layanan. Jika Anda membuat koneksi layanan secara manual, Anda tidak dapat mengonversi koneksi layanan dengan menggunakan alat konversi koneksi layanan karena Azure DevOps tidak memiliki izin untuk mengubah kredensialnya sendiri.
- Hanya satu proyek yang menggunakan koneksi layanan. Anda tidak dapat mengonversi koneksi lintas layanan proyek.
Untuk mengonversi koneksi layanan:
Di proyek Azure DevOps, buka Pengaturan proyek>Koneksi layanan.
Untuk informasi selengkapnya, lihat Membuka pengaturan proyek.
Pilih koneksi layanan yang ingin Anda konversi untuk menggunakan identitas beban kerja.
Pilih Konversi.
Jika Anda memiliki kredensial yang sudah ada dengan rahasia kedaluwarsa, Anda akan melihat opsi lain untuk dikonversi.
Pilih Konversi lagi untuk mengonfirmasi bahwa Anda ingin membuat koneksi layanan baru.
Konversi mungkin memakan waktu beberapa menit. Jika Anda ingin mengembalikan koneksi, Anda harus mengembalikannya dalam waktu tujuh hari.
Mengonversi beberapa koneksi layanan dengan skrip
Gunakan skrip untuk memperbarui beberapa koneksi layanan sekaligus untuk sekarang menggunakan federasi identitas beban kerja untuk autentikasi.
Contoh skrip PowerShell ini memerlukan dua parameter: organisasi Azure DevOps (misalnya: https://dev.azure.com/fabrikam-tailspin
) dan proyek Azure DevOps (misalnya: Space game web agent
). Skrip kemudian mengambil koneksi layanan terkait untuk proyek dan organisasi Azure DevOps Anda.
Saat mengonversi koneksi layanan untuk menggunakan federasi identitas beban kerja, Anda diminta untuk mengonfirmasi pembaruan untuk setiap koneksi yang belum menggunakannya. Setelah konfirmasi, skrip memperbarui koneksi layanan ini melalui REST API Azure DevOps untuk menggunakan federasi identitas beban kerja.
Skrip memerlukan PowerShell 7.3 atau yang lebih baru dan Azure CLI untuk dijalankan. Simpan skrip ke .ps1
file dan jalankan menggunakan PowerShell 7.
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation
.LINK
https://aka.ms/azdo-rm-workload-identity-conversion
.EXAMPLE
./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#>
#Requires -Version 7.3
param (
[parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
[string]
[ValidateNotNullOrEmpty()]
$Project,
[parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
[uri]
[ValidateNotNullOrEmpty()]
$OrganizationUrl
)
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard"
#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798" # application id of Azure DevOps
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')
#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
| Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
Write-Warning "No convertible service connections found"
exit 1
}
foreach ($serviceEndpoint in $serviceEndpoints) {
# Prompt user to confirm conversion
$choices = @(
[System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
)
$prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
$decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)
if ($decision -eq 0) {
Write-Host "$($choices[$decision].HelpMessage)"
} elseif ($decision -eq 1) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
continue
} elseif ($decision -ge 2) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
exit
}
# Prepare request body
$serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
$serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
$serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
$serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
$putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
# Convert service connection
az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
| ConvertFrom-Json | Set-Variable updatedServiceEndpoint
$updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
if (!$updatedServiceEndpoint) {
Write-Debug "Empty response"
Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
exit 1
}
Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}
Memulihkan koneksi layanan yang sudah ada yang menggunakan kunci rahasia
Anda dapat mengembalikan koneksi layanan otomatis yang dikonversi dengan rahasianya selama tujuh hari. Setelah tujuh hari, buat rahasia baru secara manual.
Jika Anda membuat dan mengonversi koneksi layanan secara manual, Anda tidak dapat mengembalikan koneksi layanan dengan menggunakan alat konversi koneksi layanan karena Azure DevOps tidak memiliki izin untuk memodifikasi kredensialnya sendiri.
Untuk mengembalikan koneksi layanan:
Di proyek Azure DevOps, buka Koneksi Layanan Alur>.
Pilih koneksi layanan yang sudah ada untuk dikembalikan.
Pilih Kembalikan konversi ke skema asli.
Pilih Kembalikan lagi untuk mengonfirmasi pilihan Anda.
Membuat koneksi layanan yang menggunakan prinsipal layanan yang ada
Jika Anda ingin menggunakan sekumpulan izin akses yang telah ditentukan sebelumnya dan Anda belum memiliki perwakilan layanan yang ditentukan untuk tujuan ini, ikuti salah satu tutorial ini untuk membuat perwakilan layanan baru:
- Menggunakan portal untuk membuat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya
- Menggunakan Azure PowerShell untuk membuat perwakilan layanan Azure yang memiliki sertifikat
Untuk membuat koneksi layanan yang menggunakan perwakilan layanan yang ada:
Di proyek Azure DevOps, buka Pengaturan proyek>Koneksi layanan.
Untuk informasi selengkapnya, lihat Membuka pengaturan proyek.
Pilih Koneksi layanan baru, lalu pilih Azure Resource Manager dan Berikutnya.
Pilih Perwakilan layanan (manual) dan Berikutnya.
Dari dialog Koneksi layanan Azure Baru, pilih Lingkungan. Jika Anda memilih Azure Stack, masukkan URL lingkungan, yang merupakan sesuatu seperti
https://management.local.azurestack.external
.Pilih Tingkat Cakupan. Pilih Langganan atau Grup Manajemen. Grup manajemen adalah kontainer yang membantu Anda mengelola akses, kebijakan, dan kepatuhan di beberapa langganan.
Untuk cakupan Langganan, masukkan parameter berikut:
Parameter Deskripsi ID Langganan Harus diisi. Masukkan ID langganan Azure. Nama Langganan Harus diisi. Masukkan nama langganan Azure. Untuk cakupan Grup Manajemen, masukkan parameter berikut:
Parameter Deskripsi Id Grup Manajemen Harus diisi. Masukkan ID grup manajemen Azure. Nama Grup Manajemen Harus diisi. Masukkan nama grup manajemen Azure.
Di bagian Autentikasi , masukkan atau pilih parameter berikut:
Parameter Deskripsi Id Perwakilan Layanan Harus diisi. Masukkan ID perwakilan layanan. Informasi masuk Pilih Kunci Perwakilan Layanan atau Sertifikat. Jika Anda memilih Kunci Perwakilan Layanan, masukkan kunci (kata sandi). Jika Anda memilih Sertifikat, masukkan sertifikat. Id Penyewa Harus diisi. Masukkan ID penyewa. Verifikasi Pilih untuk memvalidasi pengaturan yang Anda masukkan. Di bagian Detail, masukkan parameter berikut:
Parameter Deskripsi Nama Koneksi Harus diisi. Nama yang Anda gunakan untuk merujuk ke koneksi layanan ini di properti tugas. Bukan nama langganan Azure Anda. Keterangan Opsional. Masukkan deskripsi koneksi layanan. Keamanan Pilih Berikan izin akses ke semua alur untuk mengizinkan semua alur menggunakan koneksi layanan ini. Jika Anda tidak memilih opsi ini, Anda harus memberikan akses secara manual ke setiap alur yang menggunakan koneksi layanan ini. Pilih Verifikasi dan simpan untuk memvalidasi dan membuat koneksi layanan.
Di proyek Azure DevOps, buka Pengaturan proyek>Koneksi layanan.
Untuk informasi selengkapnya, lihat Membuka pengaturan proyek.
Pilih Koneksi layanan baru, lalu pilih Azure Resource Manager.
Pada dialog Tambahkan koneksi layanan Azure Resource Manager, isi bidang sebagai berikut:
Masukkan Nama koneksi.
Pilih Lingkungan. Jika Anda memilih Azure Stack, masukkan URL lingkungan, yang merupakan sesuatu seperti
https://management.local.azurestack.external
.Pilih tingkat Cakupan, **Langganan, atau Grup Manajemen. Grup manajemen adalah kontainer yang membantu Anda mengelola akses, kebijakan, dan kepatuhan di beberapa langganan.
Untuk cakupan Langganan, masukkan parameter berikut:
Parameter Deskripsi ID Langganan Harus diisi. Masukkan ID langganan Azure. Nama Langganan Harus diisi. Masukkan nama langganan Azure. Untuk cakupan Grup Manajemen, masukkan parameter berikut:
Parameter Deskripsi Id Grup Manajemen Harus diisi. Masukkan ID grup manajemen Azure. Nama Grup Manajemen Harus diisi. Masukkan nama grup manajemen Azure.
Masukkan Id Perwakilan layanan.
Pilih jenis kredensial:
- Kunci perwakilan layanan: Masukkan kunci perwakilan layanan (kata sandi).
- Sertifikat: Masukkan konten file .perm termasuk bagian sertifikat dan kunci privat.
Masukkan Id Penyewa.
Pilih Verifikasi koneksi untuk memvalidasi koneksi layanan.
Secara opsional, pilih Izinkan semua alur untuk menggunakan koneksi ini. Jika Anda tidak memilih opsi ini, Anda harus memberikan akses secara manual ke setiap alur yang menggunakan koneksi layanan ini.
Pilih Simpan untuk membuat koneksi layanan.
Setelah koneksi layanan baru dibuat:
- Jika Anda menggunakan koneksi layanan di UI, pilih nama koneksi yang Anda tetapkan di pengaturan langganan Azure alur Anda.
- Jika Anda menggunakan koneksi layanan dalam file YAML, salin nama koneksi dan tempelkan ke dalam kode Anda sebagai nilai untuk
azureSubscription
.
Jika perlu, ubah perwakilan layanan untuk mengekspos izin yang sesuai.
Untuk informasi selengkapnya tentang mengautentikasi dengan menggunakan perwakilan layanan, lihat Menggunakan kontrol akses berbasis peran untuk mengelola akses ke sumber daya langganan Azure Anda atau posting blog Mengotomatiskan penyebaran grup sumber daya Azure dengan menggunakan perwakilan layanan di Visual Studio.
Untuk informasi selengkapnya, lihat Memecahkan masalah koneksi layanan Azure Resource Manager.
Bantuan dan dukungan
- Jelajahi tips pemecahan masalah.
- Dapatkan saran tentang Stack Overflow.
- Posting pertanyaan Anda, cari jawaban, atau sarankan fitur di Komunitas Pengembang Azure DevOps.
- Dapatkan dukungan untuk Azure DevOps.