將特定實驗室原則的權限授與使用者
概觀
本文說明如何使用 PowerShell 將特定實驗室原則的權限授與使用者。 這樣便可根據每個使用者的需求來套用權限。 例如,您可能想要將變更 VM 原則設定 (而非成本原則) 的能力授與特定的使用者。
原則即資源
如 Azure 角色型存取控制中所討論,RBAC 可讓您對 Azure 的資源進行更細部的存取管理。 您可以使用 Azure RBAC 來區隔開發小組的職責,僅授與使用者作業所需的存取權。
在研發/測試實驗室中,原則是一種可啟用 Azure RBAC 動作 Microsoft.DevTestLab/labs/policySets/policies/的資源類型。 每個實驗室原則都是「原則」資源類型中的資源,並且可被指派成某個 Azure 角色的範圍。
例如,為了將允許的 VM 大小原則的讀取/寫入權限授與使用者,您會建立一個處理 Microsoft.DevTestLab/labs/policySets/policies/ 動作的自訂角色,然後在 Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab 範圍中將適當的使用者指派給這個自訂角色。
若要深入了解 Azure RBAC 中的自訂角色,請參閱 Azure 自訂角色。
使用 PowerShell 建立實驗室自訂角色
若要開始使用,您需要安裝 Azure PowerShell。
設定完 Azure PowerShell Cmdlet 之後,您便可執行下列工作:
- 列出資源提供者的所有作業/動作
- 列出特定角色中的動作:
- 建立自訂角色
下列 PowerShell 指令碼提供範例來說明如何執行這些工作:
# List all the operations/actions for a resource provider.
Get-AzProviderOperation -OperationSearchString "Microsoft.DevTestLab/*"
# List actions in a particular role.
(Get-AzRoleDefinition "DevTest Labs User").Actions
# Create custom role.
$policyRoleDef = (Get-AzRoleDefinition "DevTest Labs User")
$policyRoleDef.Id = $null
$policyRoleDef.Name = "Policy Contributor"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<SubscriptionID> ")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/policySets/policies/*")
$policyRoleDef = (New-AzRoleDefinition -Role $policyRoleDef)
使用自訂角色將特定原則的權限指派給使用者
定義自訂角色之後,您便可以將它們指派給使用者。 為了將自訂角色指派給使用者,您必須先取得代表該使用者的 ObjectId 。 若要這樣做,請使用 Get-AzADUser Cmdlet。
在下列範例中,SomeUser 使用者的 ObjectId 是 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb。
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
有了使用者的 ObjectId 和自訂角色名稱之後,您便可以使用 New-AzRoleAssignment Cmdlet 將該角色指派給使用者:
PS C:\>New-AzRoleAssignment -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -RoleDefinitionName "Policy Contributor" -Scope /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.DevTestLab/labs/<LabName>/policySets/default/policies/AllowedVmSizesInLab
在先前的範例中,使用的是 AllowedVmSizesInLab 原則。 您可以使用下列任一原則:
- MaxVmsAllowedPerUser
- MaxVmsAllowedPerLab
- AllowedVmSizesInLab
- LabVmsShutdown
建立可讓使用者執行特定工作的角色
此指令碼範例會建立「DevTest Labs 進階使用者」角色,其具有啟動和停止實驗室中所有 VM 的權限:
$policyRoleDef = Get-AzRoleDefinition "DevTest Labs User"
$policyRoleDef.Actions.Remove('Microsoft.DevTestLab/Environments/*')
$policyRoleDef.Id = $null
$policyRoleDef.Name = "DevTest Labs Advanced User"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<subscription Id>")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Start/action")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Stop/action")
$policyRoleDef = New-AzRoleDefinition -Role $policyRoleDef
開始使用 Azure DevTest Labs
剛接觸 Azure 嗎? 建立免費的 Azure 帳戶。
已使用 Azure 嗎? 建立您的第一個實驗室,並在 幾分鐘內開始使用 Azure DevTest Labs。
下一步
將特定實驗室原則的權限授與使用者之後,以下是一些需要考量的後續步驟: