Conceder permissões de usuário para políticas de laboratório específicas
Descrição geral
Este artigo ilustra como usar o PowerShell para conceder permissões aos usuários para uma política de laboratório específica. Dessa forma, as permissões podem ser aplicadas com base nas necessidades de cada usuário. Por exemplo, talvez você queira conceder a um usuário específico a capacidade de alterar as configurações de diretiva de VM, mas não as políticas de custo.
Políticas como recursos
Conforme discutido no artigo Controle de acesso baseado em função do Azure (Azure RBAC), o RBAC do Azure habilita o gerenciamento de acesso refinado de recursos para o Azure. Usando o RBAC do Azure, você pode segregar tarefas dentro de sua equipe de DevOps e conceder apenas a quantidade de acesso aos usuários de que eles precisam para executar seus trabalhos.
No DevTest Labs, uma política é um tipo de recurso que habilita 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 escopo a uma função do Azure.
Por exemplo, para conceder aos usuários permissão de leitura/gravação para a política de Tamanhos de VM Permitidos , você criaria uma função personalizada que funcionasse com a ação Microsoft.DevTestLab/labs/policySets/policies/ e, em seguida, atribuiria os usuários apropriados a essa função personalizada no escopo de Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.
Para saber mais sobre funções personalizadas no RBAC do Azure, consulte as funções personalizadas do Azure.
Criando uma função personalizada de laboratório usando o PowerShell
Para começar, você precisará instalar o Azure PowerShell.
Depois de configurar os cmdlets do Azure PowerShell, você pode executar as seguintes tarefas:
- Listar todas as operações/ações de um provedor de recursos
- Listar ações em uma função específica:
- Criar uma função personalizada
O seguinte script do PowerShell ilustra exemplos de como executar essas 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)
Atribuindo permissões a um usuário para uma política específica usando funções personalizadas
Depois de definir suas funções personalizadas, você pode atribuí-las aos usuários. Para atribuir uma função personalizada a um usuário, você deve primeiro obter o ObjectId que representa esse usuário. Para fazer isso, use o cmdlet Get-AzADUser .
No exemplo a seguir, o ObjectId do usuário SomeUser é aaaaaaa-0000-1111-2222-bbbbbbbbbbbb.
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Depois de ter o ObjectId para o usuário e um nome de função personalizado, você pode atribuir essa função ao usuário com o cmdlet 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
No exemplo anterior, a política AllowedVmSizesInLab é usada. Você pode usar qualquer uma das seguintes políticas:
- MaxVmsAllowedPerUser
- MaxVmsAllowedPerLab
- AllowedVmSizesInLab
- LabVmsShutdown
Criar uma função para permitir que os usuários realizem 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
Ainda não conhece o Azure? Crie uma conta gratuita.
Já utiliza o Azure? Crie seu primeiro laboratório e comece a usar o Azure DevTest Labs em minutos.
Próximos passos
Depois de conceder permissões de usuário para políticas de laboratório específicas, aqui estão algumas próximas etapas a serem consideradas: