Bevilja användarbehörigheter till specifika labbprinciper

Översikt

Den här artikeln visar hur du använder PowerShell för att ge användarna behörighet till en viss labbprincip. På så sätt kan behörigheter tillämpas baserat på varje användares behov. Du kanske till exempel vill ge en viss användare möjlighet att ändra principinställningarna för virtuella datorer, men inte kostnadsprinciperna.

Principer som resurser

Som beskrivs i artikeln azure-rollbaserad åtkomstkontroll (Azure RBAC) möjliggör Azure RBAC detaljerad åtkomsthantering av resurser för Azure. Med Hjälp av Azure RBAC kan du segregera uppgifter inom ditt DevOps-team och endast bevilja den mängd åtkomst till användare som de behöver för att utföra sina jobb.

I DevTest Labs är en princip en resurstyp som aktiverar Azure RBAC-åtgärden Microsoft.DevTestLab/labs/policySets/policies/. Varje labbprincip är en resurs i resurstypen Princip och kan tilldelas en Azure-roll som omfång.

Om du till exempel vill ge användarna läs-/skrivbehörighet till principen Tillåtna VM-storlekar skapar du en anpassad roll som fungerar med åtgärden Microsoft.DevTestLab/labs/policySets/policies/ och sedan tilldelar lämpliga användare till den här anpassade rollen i omfattningen för Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.

Mer information om anpassade roller i Azure RBAC finns i Anpassade Azure-roller.

Skapa en anpassad labbroll med PowerShell

För att komma igång måste du installera Azure PowerShell.

När du har konfigurerat Azure PowerShell-cmdletar kan du utföra följande uppgifter:

  • Visa en lista över alla åtgärder/åtgärder för en resursprovider
  • Lista åtgärder i en viss roll:
  • Skapa en anpassad roll

Följande PowerShell-skript illustrerar exempel på hur du utför dessa uppgifter:

# 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)

Tilldela behörigheter till en användare för en specifik princip med hjälp av anpassade roller

När du har definierat dina anpassade roller kan du tilldela dem till användare. För att kunna tilldela en anpassad roll till en användare måste du först hämta ObjectId som representerar användaren. Det gör du med cmdleten Get-AzADUser .

I följande exempel är ObjectId för SomeUser-användaren 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3.

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

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

När du har ObjectId för användaren och ett anpassat rollnamn kan du tilldela rollen till användaren med cmdleten New-AzRoleAssignment :

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

I föregående exempel används principen AllowedVmSizesInLab . Du kan använda någon av följande principer:

  • MaxVmsAllowedPerUser
  • MaxVmsAllowedPerLab
  • AllowedVmSizesInLab
  • LabVmsShutdown

Skapa en roll så att användarna kan utföra en viss uppgift

Det här exempelskriptet som skapar rollen DevTest Labs Advanced User, som har behörighet att starta och stoppa alla virtuella datorer i labbet:

    $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 

Kom igång med Azure DevTest Labs

Ny Azure-användare? Skapa ett kostnadsfritt Azure-konto.

Har redan Azure? Kom igång med ditt första labb i DevTest Labs: Kom igång med Azure DevTest Labs på några minuter.

Nästa steg

När du har beviljat användarbehörighet till specifika labbprinciper kan du tänka på följande: