Udělení uživatelských oprávnění ke konkrétním zásadám testovacího prostředí

Přehled

Tento článek ukazuje, jak pomocí PowerShellu udělit uživatelům oprávnění ke konkrétním zásadám testovacího prostředí. Tímto způsobem lze oprávnění použít na základě potřeb každého uživatele. Můžete například konkrétnímu uživateli udělit možnost změnit nastavení zásad virtuálních počítačů, ale ne zásady nákladů.

Zásady jako prostředky

Jak je popsáno v článku Řízení přístupu na základě role v Azure (Azure RBAC), Azure RBAC umožňuje jemně odstupňovanou správu přístupu k prostředkům pro Azure. Pomocí Azure RBAC můžete oddělit povinnosti v rámci vašeho týmu DevOps a udělit uživatelům jenom takový přístup, který potřebují k výkonu svých úloh.

V DevTest Labs je zásada typem prostředku, který umožňuje akci Azure RBAC Microsoft.DevTestLab/labs/policySets/policies/. Každá zásada testovacího prostředí je prostředek v typu prostředku Policy a dá se přiřadit jako obor roli Azure.

Pokud například chcete uživatelům udělit oprávnění ke čtení/zápisu k zásadě Povolené velikosti virtuálních počítačů , vytvořili byste vlastní roli, která funguje s akcí Microsoft.DevTestLab/labs/policySets/policies/ , a pak byste k této vlastní roli přiřadili příslušné uživatele v oboru Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.

Další informace o vlastních rolích v Azure RBAC najdete v tématu Vlastní role Azure.

Vytvoření vlastní role testovacího prostředí pomocí PowerShellu

Abyste mohli začít, budete muset nainstalovat Azure PowerShell.

Jakmile nastavíte rutiny Azure PowerShell, můžete provádět následující úlohy:

  • Výpis všech operací a akcí pro poskytovatele prostředků
  • Výpis akcí v konkrétní roli:
  • Vytvoření vlastní role

Následující skript PowerShellu ukazuje příklady provádění těchto úloh:

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

Přiřazení oprávnění uživateli ke konkrétní zásadě pomocí vlastních rolí

Po definování vlastních rolí je můžete přiřadit uživatelům. Chcete-li přiřadit vlastní roli uživateli, musíte nejprve získat ObjectId představující daného uživatele. K tomu použijte rutinu Get-AzADUser .

V následujícím příkladu je ObjectId uživatele SomeUser 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3.

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

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

Jakmile budete mít Id objektu uživatele a název vlastní role, můžete tuto roli uživateli přiřadit pomocí rutiny 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

V předchozím příkladu se používá zásada AllowedVmSizesInLab . Můžete použít některou z následujících zásad:

  • MaxVmsAllowedPerUser
  • MaxVmsAllowedPerLab
  • AllowedVmSizesInLab
  • LabVmsShutdown

Vytvoření role, která uživatelům umožní provádět konkrétní úlohu

Tento ukázkový skript, který vytvoří roli DevTest Labs Advanced User, která má oprávnění ke spouštění a zastavování všech virtuálních počítačů v testovacím prostředí:

    $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 

Začínáme s Azure DevTest Labs

Jste nováčky v prostředí Azure? Vytvořte si bezplatný účet Azure.

Už jste na platformě Azure? Začínáme s prvním testovacím prostředím v DevTest Labs: Začínáme s Azure DevTest Labs v řádu minut.

Další kroky

Po udělení uživatelských oprávnění ke konkrétním zásadám testovacího prostředí je potřeba zvážit následující kroky: