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 rollbaserad åtkomstkontroll i Azure (Azure RBAC) möjliggör Azure RBAC detaljerad åtkomsthantering av resurser för Azure. Med Hjälp av Azure RBAC kan du separera 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 möjliggör Azure RBAC-åtgärden Microsoft.DevTestLab/labs/policySets/policies/. Varje labbprincip är en resurs i resurstypen Princip och kan tilldelas som omfång till en Azure-roll.
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-cmdletarna 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 aaaaaaaaaa-0000-1111-2222-bbbbbbbbbbbbbbbb.
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
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 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -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ändare 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
Är du nybörjare på Azure? Skapa ett kostnadsfritt Azure-konto.
Har redan Azure? Skapa ditt första labb och kom igång med Azure DevTest Labs på några minuter.
Nästa steg
När du har beviljat användarbehörigheter till specifika labbprinciper kan du tänka på följande: