Bagikan melalui


Buat perwakilan layanan Azure dengan Azure CLI

Alat otomatis yang menggunakan layanan Azure harus selalu memiliki izin terbatas untuk memastikan bahwa sumber daya Azure aman. Oleh karena itu, alih-alih memiliki aplikasi yang masuk sebagai pengguna dengan hak istimewa penuh, Azure menawarkan perwakilan layanan. Principal layanan Azure adalah identitas yang dibuat untuk digunakan dengan aplikasi, layanan yang dihosting, dan tools otomatis. Identitas ini digunakan untuk mengakses sumber daya.

Dalam tutorial ini, Anda akan belajar cara:

  • Membuat "Service Principal"
  • Masuk menggunakan prinsipal layanan dan kata sandi
  • Masuk menggunakan perwakilan layanan dan sertifikat
  • Kelola peran entitas layanan
  • Membuat sumber daya Azure menggunakan prinsipal layanan
  • Mengatur ulang kredensial entitas layanan

Prasyarat

  • Dalam langganan, Anda harus memiliki User Access Administrator atau Role Based Access Control Administrator atau izin yang lebih tinggi, untuk membuat entitas layanan. Untuk daftar peran yang tersedia untuk kontrol akses berbasis peran Azure (Azure RBAC), lihat Peran bawaan Azure.

Membuat "Service Principal"

Gunakan perintah referensi Azure CLI az ad sp create-for-rbac untuk membuat perwakilan layanan. Contoh ini tidak menentukan --name parameter, sehingga nama yang berisi stempel waktu dibuat secara otomatis.

az ad sp create-for-rbac

Konsol keluaran

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Jika Anda tidak mematuhi konvensi penamaan sumber daya dan berencana untuk membuat peran dan cakupan untuk principal layanan baru Anda nanti, perintah az ad sp create-for-rbac tanpa parameter adalah solusi yang dapat diterima. Namun, tanpa peran dan cakupan, perwakilan layanan baru tidak memiliki akses ke sumber daya. Itu hanya ada.

Saat Anda membuat perwakilan layanan tanpa parameter, selesaikan juga langkah-langkah berikut:

Nota

Jika akun Anda tidak memiliki izin untuk membuat perwakilan layanan, az ad sp create-for-rbac mengembalikan pesan kesalahan yang berisi "Hak istimewa yang tidak memadai untuk menyelesaikan operasi". Hubungi admin Microsoft Entra Anda untuk membuat prinsipal layanan.

Dalam direktori ID Microsoft Entra di mana pengaturan Pengguna dapat mendaftarkan aplikasi telah diatur ke Tidak, Anda harus menjadi anggota salah satu peran bawaan ID Microsoft Entra berikut (yang memiliki tindakan: microsoft.directory/applications/createAsOwner atau microsoft.directory/applications/create):

Untuk informasi selengkapnya tentang pengaturan pengguna di ID Microsoft Entra, lihat Membatasi siapa yang dapat membuat aplikasi.

Membuat perwakilan layanan dengan peran dan cakupan

Sebagai praktik terbaik, selalu tetapkan perwakilan layanan tertentu --role dan --scopes saat Anda membuat perwakilan layanan. Ikuti langkah-langkah ini:

  1. Tentukan peran yang benar.

    Saat menentukan peran, selalu gunakan prinsip hak istimewa paling sedikit. Misalnya, jangan berikan izin perwakilan contributor layanan Anda ke langganan jika perwakilan layanan hanya perlu mengakses penyimpanan Azure dalam grup sumber daya. Pertimbangkan peran khusus seperti kontributor penyimpanan blob data. Untuk daftar lengkap peran yang tersedia di Azure RBAC, lihat Peran bawaan Azure.

  2. Dapatkan nilai untuk parameter cakupan.

    Temukan dan salin ID Sumber Daya sumber daya Azure yang perlu diakses oleh perwakilan layanan baru. Informasi ini biasanya ditemukan di portal Azure pada halaman Properti atau Titik Akhir dari setiap sumber daya. Berikut adalah contoh --scopes umum, tetapi bergantung pada ID Sumber Daya untuk format dan nilai aktual.

    Ruang Lingkup Contoh
    Langganan /subscriptions/mySubscriptionID
    Grup sumber daya /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Mesin virtual /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Layanan berkas akun penyimpanan /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    fasilitas pemrosesan data /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Untuk contoh cakupan lainnya, lihat Memahami cakupan untuk Azure RBAC.

  3. Buat service principal (perwakilan layanan).

    Dalam contoh ini, perwakilan layanan baru bernama myServicePrincipalName1 dibuat dengan izin pembaca untuk semua sumber daya dalam grup sumber daya RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    Parameter --scopes menerima daftar cakupan yang dibatasi spasi. Dalam contoh ini, perwakilan layanan baru yang bernama myServicePrincipalName2 dibuat dengan izin pembaca untuk semua sumber daya dalam grup sumber daya myRG1. Perwakilan layanan ini juga diberikan izin pembaca ke myVM yang terletak di myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Jika Anda memutuskan bahwa Anda memberikan terlalu sedikit atau terlalu banyak izin ke perwakilan layanan baru Anda, ubah izin dengan mengelola peran perwakilan layanan.

Membuat entitas layanan menggunakan variabel

Anda juga dapat membuat entitas layanan menggunakan variabel:

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Untuk daftar lengkap properti perwakilan layanan, gunakan az ad sp list dan lihat Dapatkan perwakilan layanan yang sudah ada.

Peringatan

Saat Anda membuat perwakilan layanan Azure menggunakan perintah az ad sp create-for-rbac, output menyertakan kredensial yang harus Anda lindungi. Pastikan Anda tidak menyertakan kredensial ini dalam kode Anda atau periksa kredensial ke kontrol sumber Anda. Sebagai alternatif, pertimbangkan untuk menggunakan identitas terkelola jika tersedia untuk menghindari kebutuhan untuk menggunakan kredensial.

Langkah Selanjutnya

Sekarang setelah Anda mempelajari cara membuat perwakilan layanan Azure, lanjutkan ke langkah berikutnya untuk mempelajari cara menggunakan perwakilan layanan dengan autentikasi berbasis kata sandi.