Conceder permissões de utilizador a políticas de laboratório específicas

Descrição Geral

Este artigo ilustra como utilizar o PowerShell para conceder permissões aos utilizadores a uma determinada política de laboratório. Desta forma, as permissões podem ser aplicadas com base nas necessidades de cada utilizador. Por exemplo, poderá querer conceder a um utilizador específico a capacidade de alterar as definições da política de VM, mas não as políticas de custos.

Políticas como recursos

Conforme abordado no artigo controlo de acesso baseado em funções do Azure (RBAC do Azure), o RBAC do Azure permite uma gestão detalhada de acesso dos recursos para o Azure. Com o RBAC do Azure, pode segregar funções dentro da sua equipa do DevOps e conceder apenas a quantidade de acesso aos utilizadores de que precisam para realizarem as suas tarefas.

No DevTest Labs, uma política é um tipo de recurso que permite a ação RBAC do Azure Microsoft.DevTestLab/labs/policySets/policies/. Cada política de laboratório é um recurso no tipo de recurso Política e pode ser atribuída como um âmbito a uma função do Azure.

Por exemplo, para conceder aos utilizadores permissão de leitura/escrita para a política Tamanhos de VM Permitidos , criaria uma função personalizada que funciona com a ação Microsoft.DevTestLab/labs/policySets/policies/ e, em seguida, atribuiria os utilizadores adequados a esta função personalizada no âmbito do Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.

Para saber mais sobre funções personalizadas no RBAC do Azure, veja as funções personalizadas do Azure.

Criar uma função personalizada de laboratório com o PowerShell

Para começar, terá de instalar Azure PowerShell.

Depois de configurar os cmdlets Azure PowerShell, pode realizar as seguintes tarefas:

  • Listar todas as operações/ações de um fornecedor de recursos
  • Listar ações numa função específica:
  • Criar uma função personalizada

O seguinte script do PowerShell ilustra exemplos de como executar estas tarefas:

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

Atribuir permissões a um utilizador para uma política específica com funções personalizadas

Depois de definir as suas funções personalizadas, pode atribuí-las aos utilizadores. Para atribuir uma função personalizada a um utilizador, primeiro tem de obter o ObjectId que representa esse utilizador. Para tal, utilize o cmdlet Get-AzADUser .

No exemplo seguinte, o ObjectId do utilizador SomeUser é 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3.

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

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

Assim que tiver o ObjectId para o utilizador e um nome de função personalizado, pode atribuir essa função ao utilizador com o cmdlet 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

No exemplo anterior, é utilizada a política AllowedVmSizesInLab . Pode utilizar qualquer uma das seguintes políticas:

  • MaxVmsAllowedPerUser
  • MaxVmsAllowedPerLab
  • AllowedVmSizesInLab
  • LabVmsShutdown

Criar uma função para permitir que os utilizadores façam uma tarefa específica

Este script de exemplo que cria a função DevTest Labs Advanced User, que tem permissão para iniciar e parar todas as VMs no laboratório:

    $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 

Introdução ao Azure DevTest Labs

Novo no Azure? Crie uma conta gratuita do Azure.

Já utiliza o Azure? Introdução ao seu primeiro laboratório no DevTest Labs: Comece a utilizar Azure DevTest Labs em minutos.

Passos seguintes

Depois de conceder permissões de utilizador a políticas de laboratório específicas, eis alguns passos seguintes a considerar: