將特定實驗室原則的權限授與使用者

概觀

本文說明如何使用 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 是 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3。

PS C:\>Get-AzADUser -SearchString "SomeUser"

DisplayName                    Type                           ObjectId
-----------                    ----                           --------
someuser@hotmail.com                                          05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3

有了使用者的 ObjectId 和自訂角色名稱之後,您便可以使用 New-AzRoleAssignment Cmdlet 將該角色指派給使用者:

PS C:\>New-AzRoleAssignment -ObjectId 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3 -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 嗎? 開始使用 DevTest Labs 中的第一個實驗室:在幾分鐘內開始使用Azure DevTest Labs

下一步

將特定實驗室原則的權限授與使用者之後,以下是一些需要考量的後續步驟: