Membuat prinsipal layanan Azure dengan Microsoft Azure PowerShell
Peringatan
Modul AzureRM PowerShell telah resmi tidak digunakan lagi per 29 Februari 2024. Pengguna disarankan untuk bermigrasi dari AzureRM ke modul Az PowerShell untuk memastikan dukungan dan pembaruan yang berkelanjutan.
Meskipun modul AzureRM mungkin masih berfungsi, modul tersebut tidak lagi dipertahankan atau didukung, menempatkan penggunaan berkelanjutan berdasarkan kebijaksanaan dan risiko pengguna. Silakan merujuk ke sumber daya migrasi kami untuk panduan tentang transisi ke modul Az.
Jika Anda berencana mengelola aplikasi atau layanan dengan Azure PowerShell, Anda harus menjalankannya di bawah perwakilan layanan Azure Microsoft Entra, bukan kredensial Anda sendiri. Artikel ini akan menjelaskan cara membuat prinsipal keamanan dengan Azure PowerShell.
Catatan
Anda juga dapat membuat prinsipal layanan melalui portal Microsoft Azure. Untuk informasi selengkapnya, baca Menggunakan portal untuk membuat aplikasi dan prinsipal layanan Active Directory yang dapat mengakses sumber daya.
Apa itu prinsipal layanan?
Perwakilan layanan Azure adalah identitas keamanan yang digunakan oleh aplikasi, layanan, dan alat otomatisasi yang dibuat pengguna untuk mengakses sumber daya Azure tertentu. Anggap saja sebagai 'identitas pengguna' (nama pengguna dan kata sandi atau sertifikat) dengan peran tertentu, dan izin yang dikontrol dengan ketat. Perwakilan layanan hanya perlu melakukan hal-hal tertentu, berbeda dengan identitas pengguna umum. Prinsipal layanan meningkatkan keamanan jika Anda hanya memberinya tingkat izin minimum yang diperlukan untuk melakukan tugas pengelolaan.
Memverifikasi tingkat izin Anda sendiri
Pertama, Anda harus memiliki izin yang memadai di ID Microsoft Entra dan langganan Azure Anda. Anda harus mampu membuat aplikasi di Active Directory dan menetapkan peran ke prinsipal layanan.
Cara termudah untuk memeriksa apakah akun Anda memiliki izin yang tepat adalah melalui portal. Lihat Memeriksa izin yang diperlukan di portal.
Membuat prinsipal layanan untuk aplikasi Anda
Setelah masuk ke akun Azure, Anda dapat membuat prinsipal layanan. Anda harus memiliki salah satu cara berikut untuk mengidentifikasi aplikasi yang disebarkan:
- Nama unik aplikasi yang Anda sebarkan, seperti "MyDemoWebApp" dalam contoh berikut, atau
- ID Aplikasi, GUID unik yang terkait dengan aplikasi, layanan, atau objek yang disebarkan
Mendapatkan informasi tentang aplikasi Anda
Cmdlet Get-AzureRmADApplication
dapat digunakan untuk mendapatkan informasi tentang aplikasi Anda.
Get-AzureRmADApplication -DisplayNameStartWith MyDemoWebApp
DisplayName : MyDemoWebApp
ObjectId : 775f64cd-0ec8-4b9b-b69a-8b8946022d9f
IdentifierUris : {http://MyDemoWebApp}
HomePage : http://www.contoso.com
Type : Application
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
AvailableToOtherTenants : False
AppPermissions :
ReplyUrls : {}
Buat perwakilan layanan untuk aplikasi Anda
Cmdlet New-AzureRmADServicePrincipal
digunakan untuk membuat prinsipal layanan.
$servicePrincipal = New-AzureRmADServicePrincipal -ApplicationId 00001111-aaaa-2222-bbbb-3333cccc4444
Secret : System.Security.SecureString
ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444, http://MyDemoWebApp}
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName : MyDemoWebApp
Id : 698138e7-d7b6-4738-a866-b4e3081a69e4
AdfsId :
Type : ServicePrincipal
Dari sini, Anda dapat langsung menggunakan properti $servicePrincipal.Secret di Connect-AzureRmAccount (lihat "Masuk menggunakan perwakilan layanan" di bawah), atau Anda dapat mengonversi SecureString ini menjadi string teks biasa untuk penggunaan berikutnya:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($servicePrincipal.Secret)
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($BSTR)
Masuk menggunakan prinsipal layanan
Anda kini dapat masuk sebagai perwakilan layanan untuk aplikasi Anda menggunakan appId yang Anda sediakan dan kata sandi yang dibuat secara otomatis. Anda juga memerlukan ID Penyewa untuk perwakilan layanan. ID Penyewa ditampilkan saat Anda masuk ke Azure dengan kredensial pribadi Anda. Untuk masuk dengan perwakilan layanan, gunakan perintah berikut:
$cred = New-Object System.Management.Automation.PSCredential ("00001111-aaaa-2222-bbbb-3333cccc4444", $servicePrincipal.Secret)
Connect-AzureRmAccount -Credential $cred -ServicePrincipal -TenantId 00000000-0000-0000-0000-000000000000
Setelah berhasil masuk, Anda akan melihat output seperti:
Environment : AzureCloud
Account : 00001111-aaaa-2222-bbbb-3333cccc4444
TenantId : 00000000-0000-0000-0000-000000000000
SubscriptionId :
SubscriptionName :
CurrentStorageAccount :
Selamat! Anda dapat menggunakan kredensial ini untuk menjalankan aplikasi Anda. Selanjutnya, Anda perlu menyesuaikan izin prinsipal layanan.
Mengelola peran
Catatan
Azure Role-Based Access Control (RBAC) adalah model untuk menentukan dan mengelola peran pengguna dan prinsipal layanan. Peran memiliki serangkaian izin yang terkait dengannya, yang menentukan sumber daya yang dapat dibaca, diakses, ditulis, atau dikelola oleh prinsipal. Untuk informasi selengkapnya tentang RBAC dan peran, lihat RBAC: Peran bawaan.
Azure PowerShell menyediakan cmdlet berikut untuk mengelola penetapan peran:
Peran default untuk perwakilan layanan adalah Kontributor. Peran ini mungkin bukan pilihan terbaik tergantung pada ruang lingkup interaksi aplikasi Anda dengan layanan Azure, mengingat izinnya yang luas. Peran Pembaca lebih ketat dan dapat menjadi pilihan yang baik untuk aplikasi baca-saja. Anda dapat melihat detail tentang izin khusus peran atau membuat peran khusus melalui portal Azure.
Dalam contoh ini, kami menambahkan peran Pembaca ke contoh sebelumnya, dan menghapus Kontributor:
New-AzureRmRoleAssignment -ResourceGroupName myRG -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4 -RoleDefinitionName Reader
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Authorization/roleAssignments/818892f2-d075-46a1-a3a2-3a4e1a12fcd5
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG
DisplayName : MyDemoWebApp
SignInName :
RoleDefinitionName : Reader
RoleDefinitionId : b24988ac-6180-42a0-ab88-20f7382dd24c
ObjectId : 698138e7-d7b6-4738-a866-b4e3081a69e4
ObjectType : ServicePrincipal
Remove-AzureRmRoleAssignment -ResourceGroupName myRG -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4 -RoleDefinitionName Contributor
Untuk melihat peran yang ditetapkan saat ini:
Get-AzureRmRoleAssignment -ResourceGroupName myRG -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Authorization/roleAssignments/0906bbd8-9982-4c03-8dae-aeaae8b13f9e
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG
DisplayName : MyDemoWebApp
SignInName :
RoleDefinitionName : Reader
RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId : 698138e7-d7b6-4738-a866-b4e3081a69e4
ObjectType : ServicePrincipal
Cmdlet Azure PowerShell lainnya untuk manajemen peran:
- Get-AzureRmRoleDefinition
- New-AzureRmRoleDefinition
- Remove-AzureRmRoleDefinition
- Set-AzureRmRoleDefinition
Mengubah kredensial prinsipal keamanan
Meninjau izin dan memperbarui kata sandi secara berkala merupakan praktik keamanan yang baik. Sebaiknya Anda juga mengelola dan mengubah kredensial keamanan saat aplikasi Anda berubah. Misalnya, kita dapat mengubah kata sandi prinsipal layanan dengan membuat kata sandi baru dan menghapus yang lama.
Menambahkan kata sandi baru untuk prinsipal layanan
New-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
Secret : System.Security.SecureString
StartDate : 11/16/2018 12:38:23 AM
EndDate : 11/16/2019 12:38:23 AM
KeyId : 00001111-aaaa-2222-bbbb-3333cccc4444
Type : Password
Mendapatkan daftar kredensial untuk prinsipal layanan
Get-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
StartDate EndDate KeyId Type
--------- ------- ----- ----
3/8/2017 5:58:24 PM 3/8/2018 5:58:24 PM 00001111-aaaa-2222-bbbb-3333cccc4444 Password
5/5/2016 4:55:27 PM 5/5/2017 4:55:27 PM ca9d4846-4972-4c70-b6f5-a4effa60b9bc Password
Menghapus kata sandi lama dari prinsipal layanan
Remove-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp -KeyId ca9d4846-4972-4c70-b6f5-a4effa60b9bc
Confirm
Are you sure you want to remove credential with keyId '00001111-aaaa-2222-bbbb-3333cccc4444' for
service principal objectId '698138e7-d7b6-4738-a866-b4e3081a69e4'.
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
Memverifikasi daftar kredensial untuk prinsipal layanan
Get-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
StartDate EndDate KeyId Type
--------- ------- ----- ----
3/8/2017 5:58:24 PM 3/8/2018 5:58:24 PM 00001111-aaaa-2222-bbbb-3333cccc4444 Password
Mendapatkan informasi tentang prinsipal layanan
$svcprincipal = Get-AzureRmADServicePrincipal -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4
$svcprincipal | Select-Object -Property *
ServicePrincipalNames : {http://MyDemoWebApp, 00001111-aaaa-2222-bbbb-3333cccc4444}
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName : MyDemoWebApp
Id : 698138e7-d7b6-4738-a866-b4e3081a69e4
Type : ServicePrincipal