Mengotomatiskan menambahkan pengguna lab ke laboratorium di Azure DevTest Labs
Azure DevTest Labs memungkinkan Anda dengan cepat membuat lingkungan uji dev layanan mandiri dengan menggunakan portal Microsoft Azure. Namun, jika Anda memiliki beberapa tim dan beberapa instans DevTest Labs, mengotomatiskan proses pembuatan dapat menghemat waktu. Templat Azure Resource Manager memungkinkan Anda membuat lab, VM lab, gambar kustom, rumus, dan menambahkan pengguna secara otomatis. Artikel ini secara khusus berfokus pada penambahan pengguna ke instans DevTest Labs.
Untuk menambahkan pengguna ke laboratorium, Anda menambahkan pengguna ke peran Pengguna DevTest Labs untuk laboratorium. Artikel ini memperlihatkan kepada Anda cara mengotomatisasi menambahkan pengguna ke laboratorium menggunakan salah satu cara berikut:
- Templat Azure Resource Manager
- Cmdlet Azure PowerShell
- Azure CLI.
Menggunakan templat Azure Resource Manager
Contoh templat Resource Manager berikut ini menentukan pengguna untuk ditambahkan ke peran Pengguna DevTest Labs dari laboratorium.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The objectId of the user, group, or service principal for the role."
}
},
"labName": {
"type": "string",
"metadata": {
"description": "The name of the lab instance to be created."
}
},
"roleAssignmentGuid": {
"type": "string",
"metadata": {
"description": "Guid to use as the name for the role assignment."
}
}
},
"variables": {
"devTestLabUserRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/111111111-0000-0000-11111111111111111')]",
"fullDevTestLabUserRoleName": "[concat(parameters('labName'), '/Microsoft.Authorization/', parameters('roleAssignmentGuid'))]",
"roleScope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.DevTestLab/labs/', parameters('labName'))]"
},
"resources": [
{
"apiVersion": "2016-05-15",
"type": "Microsoft.DevTestLab/labs",
"name": "[parameters('labName')]",
"location": "[resourceGroup().location]"
},
{
"apiVersion": "2016-07-01",
"type": "Microsoft.DevTestLab/labs/providers/roleAssignments",
"name": "[variables('fullDevTestLabUserRoleName')]",
"properties": {
"roleDefinitionId": "[variables('devTestLabUserRoleId')]",
"principalId": "[parameters('principalId')]",
"scope": "[variables('roleScope')]"
},
"dependsOn": [
"[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]"
]
}
]
}
Jika Anda menetapkan peran dalam templat yang sama saat membuat lab, ingatlah untuk menambahkan dependensi antara sumber daya penetapan peran dan lab. Untuk informasi selengkapnya, lihat Menentukan dependensi di artikel Templat Azure Resource Manager.
Informasi Role Assignment Resource
Sumber daya penetapan peran perlu menentukan jenis dan nama.
Hal pertama yang perlu diperhatikan adalah bahwa jenis untuk sumber daya tidak Microsoft.Authorization/roleAssignments
seperti yang akan terjadi untuk grup sumber daya. Sebaliknya, jenis sumber daya mengikuti pola {provider-namespace}/{resource-type}/providers/roleAssignments
. Dalam hal ini, jenis sumber daya akan Microsoft.DevTestLab/labs/providers/roleAssignments
.
Nama penetapan peran itu sendiri perlu unik secara global. Nama tugas menggunakan pola {labName}/Microsoft.Authorization/{newGuid}
. Itu newGuid
adalah nilai parameter untuk templat. Ini memastikan bahwa nama penetapan peran unik. Karena tidak ada fungsi templat untuk membuat GUIDD, Anda perlu membuat GUID sendiri dengan menggunakan alat generator GUID apa pun.
Dalam templat, nama untuk penetapan peran ditentukan oleh fullDevTestLabUserRoleName
variabel. Baris yang tepat dari templat adalah:
"fullDevTestLabUserRoleName": "[concat(parameters('labName'), '/Microsoft.Authorization/', parameters('roleAssignmentGuid'))]"
Properti Role Assignment Resource
Penetapan peran itu sendiri mendefinisikan tiga properti. Perlu roleDefinitionId
, principalId
, dan scope
.
Definisi Peran
ID definisi peran adalah pengidentifikasi string untuk definisi peran yang ada. ID peran dalam bentuk /subscriptions/{subscription-id}/providers/Microsoft.Authorization/roleDefinitions/{role-definition-id}
.
ID langganan diperoleh dengan menggunakan subscription().subscriptionId
fungsi templat.
Anda perlu mendapatkan definisi peran untuk DevTest Labs User
peran bawaan. Untuk mendapatkan GUID untuk peran Pengguna DevTest Labs, Anda dapat menggunakan Role Assignments REST API atau cmdlet Get-AzRoleDefinition.
$dtlUserRoleDefId = (Get-AzRoleDefinition -Name "DevTest Labs User").Id
ID peran didefinisikan di bagian variabel dan diberi nama devTestLabUserRoleId
. Dalam templat, ID peran diatur ke: 111111111-0000-0000-11111111111111111.
"devTestLabUserRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/111111111-0000-0000-11111111111111111')]",
ID Utama
ID Utama adalah ID objek dari pengguna Active Directory, grup, atau perwakilan layanan yang ingin Anda tambahkan sebagai pengguna lab ke laboratorium. Templat menggunakan ObjectId
sebagai parameter.
Anda bisa mendapatkan ObjectId dengan menggunakan cmdlet Get-AzureRMADUser, [Get-AzureRMADGroup, atau Get-AzureRMADServicePrincipal PowerShell. Cmdlet ini mengembalikan satu atau daftar objek Active Directory yang memiliki properti ID, yang merupakan ID objek yang Anda butuhkan. Contoh berikut menunjukkan kepada Anda cara mendapatkan ID objek dari satu pengguna di perusahaan.
$userObjectId = (Get-AzureRmADUser -UserPrincipalName 'email@company.com').Id
Anda juga dapat menggunakan cmdlet Microsoft Graph PowerShell yang menyertakan Get-MgUser, Get-MgGroup, dan Get-MgServicePrincipal.
Lingkup
Lingkup menentukan grup sumber daya atau sumber daya yang harus diterapkan oleh penetapan peran. Untuk sumber daya, ruang lingkup ada dalam formulir: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{provider-namespace}/{resource-type}/{resource-name}
. Templat menggunakan subscription().subscriptionId
fungsi untuk mengisi subscription-id
bagian dan resourceGroup().name
fungsi templat untuk mengisi bagian resource-group-name
. Menggunakan fungsi ini berarti bahwa lab tempat Anda menetapkan peran harus ada di langganan saat ini dan grup sumber daya yang sama dengan penyebaran templat yang dibuat. Bagian terakhirresource-name
, adalah nama laboratorium. Nilai ini diterima melalui parameter templat dalam contoh ini.
Lingkup peran dalam templat:
"roleScope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.DevTestLab/labs/', parameters('labName'))]"
Menggunakan templat
Pertama, buat file parameter (misalnya: azuredeploy.parameters.json) yang meneruskan nilai untuk parameter di templat Resource Manager.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"value": "11111111-1111-1111-1111-111111111111"
},
"labName": {
"value": "MyLab"
},
"roleAssignmentGuid": {
"value": "22222222-2222-2222-2222-222222222222"
}
}
}
Kemudian, gunakan cmdlet New-AzureRmResourceGroupDeploymen PowerShell untuk menggunakan templat Resource Manager. Perintah contoh berikut menetapkan seseorang, grup, atau perwakilan layanan ke peran Pengguna DevTest Labs untuk laboratorium.
New-AzureRmResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateParameterFile .\azuredeploy.parameters.json -TemplateFile .\azuredeploy.json
Catatan
Nama penyebaran grup dan tugas peran GUID harus unik. Jika Anda mencoba menerapkan penetapan sumber daya dengan menggunakan GUID yang tidak unik, Anda akan melihat kesalahan RoleAssignmentUpdateNotPermitted
.
Jika Anda berencana untuk menggunakan templat beberapa kali untuk menambahkan beberapa objek Direktori Aktif ke peran Pengguna DevTest Labs untuk laboratorium Anda, pertimbangkan untuk menggunakan objek dinamis di perintah PowerShell Anda. Contoh berikut menggunakan cmdlet New-Guid untuk menentukan nama penyebaran grup sumber daya dan penetapan peran GUID secara dinamis.
New-AzureRmResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateFile .\azuredeploy.json -roleAssignmentGuid "$(New-Guid)" -labName "MyLab" -principalId "11111111-1111-1111-1111-111111111111"
Menggunakan Azure PowerShell
Seperti yang dibahas dalam pengenalan, Anda membuat penetapan peran Azure baru untuk menambahkan pengguna ke peran Pengguna DevTest Labs untuk laboratorium. Di PowerShell, Anda melakukannya dengan menggunakan cmdlet New-AzureRMRoleAssignment. Cmdlet ini memiliki banyak parameter opsional untuk memungkinkan fleksibilitas. ObjectId
, SigninName
, atau ServicePrincipalName
dapat ditentukan sebagai objek yang diberi izin.
Berikut adalah contoh perintah Azure PowerShell yang menambahkan pengguna ke peran Pengguna DevTest Labs di lab yang ditentukan.
New-AzureRmRoleAssignment -UserPrincipalName <email@company.com> -RoleDefinitionName 'DevTest Labs User' -ResourceName '<Lab Name>' -ResourceGroupName '<Resource Group Name>' -ResourceType 'Microsoft.DevTestLab/labs'
Untuk menentukan sumber daya yang izinnya diberikan dapat ditentukan oleh kombinasi ResourceName
, ResourceType
, ResourceGroup
, atau oleh scope
parameter. Apa pun kombinasi parameter yang digunakan, berikan informasi yang cukup ke cmdlet untuk mengidentifikasi objek Active Directory secara unik (pengguna, grup, atau perwakilan layanan), ruang lingkup (grup sumber daya atau sumber daya), dan definisi peran.
Gunakan Azure CLI
Di Azure CLI, menambahkan pengguna lab ke laboratorium dilakukan dengan menggunakan perintah az role assignment create
. Untuk informasi selengkapnya tentang cmdlet Azure CLI, lihat Menambahkan atau menghapus penetapan peran Azure menggunakan Azure CLI.
Objek yang diberikan akses dapat ditentukan oleh objectId
, signInName
, spn
parameter. Laboratorium tempat objek diberikan akses dapat diidentifikasi oleh scope
url atau kombinasi dari resource-name
, resource-type
, dan resource-group
parameter.
Contoh Azure CLI berikut ini memperlihatkan kepada Anda cara menambahkan seseorang ke peran Pengguna DevTest Labs untuk Lab yang ditentukan.
az role assignment create --roleName "DevTest Labs User" --signInName <email@company.com> -–resource-name "<Lab Name>" --resource-type "Microsoft.DevTestLab/labs" --resource-group "<Resource Group Name>" --role Contributor --scope /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>
Langkah berikutnya
Lihat artikel berikut ini:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk