Udělení uživatelských oprávnění 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í. Oprávnění se tak dají použít na základě potřeb jednotlivých uživatelů. Můžete například konkrétnímu uživateli udělit možnost změnit nastavení zásad virtuálního počítače, 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 prostředků pro Azure. Pomocí Azure RBAC můžete oddělit povinnosti v rámci týmu DevOps a udělit uživatelům jenom 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 Zásady a dá se přiřadit jako obor roli Azure.
Pokud například chcete uživatelům udělit oprávnění ke čtení a zápisu do zásady Povolené velikosti virtuálních počítačů , vytvořili byste vlastní roli, která funguje s akcí Microsoft.DevTestLab/labs/policySets/policies/ a pak přiřadíte příslušné uživatele k této vlastní roli v oboru Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.
Další informace o vlastních rolích v Azure RBAC najdete v vlastních rolích Azure.
Vytvoření vlastní role testovacího prostředí pomocí PowerShellu
Abyste mohli začít, budete muset nainstalovat Azure PowerShell.
Po nastavení rutin Azure PowerShellu můžete provádět následující úlohy:
- Výpis všech operací nebo akcí pro poskytovatele prostředků
- Zobrazení seznamu akcí v konkrétní roli:
- Vytvoření vlastní role
Následující skript PowerShellu ukazuje příklady provedení 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 pro konkrétní zásadu pomocí vlastních rolí
Po definování vlastních rolí je můžete přiřadit uživatelům. Pokud chcete uživateli přiřadit vlastní roli, musíte nejprve získat ID objektu představujícího daného uživatele. K tomu použijte rutinu Get-AzADUser .
V následujícím příkladu je ObjectId uživatele SomeUser aaaaaaa-0000-1111-2222-bbbbbbbbbbbbbb.
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Jakmile budete mít Id objektu pro uživatele a vlastní název role, můžete tuto roli přiřadit uživateli pomocí rutiny 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
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í úkol
Tento ukázkový skript, který vytvoří roli DevTest Labs Advanced User, která má oprávnění ke spuštění a zastavení 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
Zatím Azure neznáte? Vytvořte si bezplatný účet Azure.
Už jste na platformě Azure? Vytvořte první testovací prostředí a začněte s Azure DevTest Labs v řádu minut.
Další kroky
Jakmile udělíte oprávnění uživatelů ke konkrétním zásadám testovacího prostředí, tady je několik dalších kroků, které je potřeba zvážit: