Guia de início rápido: atribuir uma função do Azure usando um modelo ARM

O controlo de acesso baseado em funções do Azure (RBAC do Azure) é a forma de gerir o acesso a recursos no Azure. Neste início rápido, você cria um grupo de recursos e concede a um usuário acesso para criar e gerenciar máquinas virtuais no grupo de recursos. Este guia de início rápido usa um modelo do Azure Resource Manager (modelo ARM) para conceder o acesso.

Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Se o seu ambiente cumpre os pré-requisitos e se está familiarizado com a utilização de modelos ARM, selecione o botão Implementar no Azure. O modelo será aberto no portal do Azure.

Botão para implantar o modelo do Gerenciador de Recursos no Azure.

Pré-requisitos

Para atribuir funções do Azure e remover atribuições de função, você deve ter:

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Microsoft.Authorization/roleAssignments/write e Microsoft.Authorization/roleAssignments/delete permissões, como Administrador de Controle de Acesso Baseado em Função
  • Para atribuir uma função, você deve especificar três elementos: entidade de segurança, definição de função e escopo. Para este início rápido, a entidade de segurança é você ou outro usuário em seu diretório, a definição de função é Colaborador de Máquina Virtual e o escopo é um grupo de recursos que você especifica.

Rever o modelo

O modelo utilizado neste início rápido pertence aos Modelos de Início Rápido do Azure. O modelo tem dois parâmetros e uma seção de recursos. Na seção de recursos, observe que ele tem os três elementos de uma atribuição de função: entidade de segurança, definição de função e escopo.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.25.53.49325",
      "templateHash": "15160858749942476090"
    }
  },
  "parameters": {
    "roleDefinitionID": {
      "type": "string",
      "metadata": {
        "description": "Specifies the role definition ID used in the role assignment."
      }
    },
    "principalId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the principal ID assigned to the role."
      }
    }
  },
  "variables": {
    "roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]"
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2022-04-01",
      "name": "[variables('roleAssignmentName')]",
      "properties": {
        "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionID'))]",
        "principalId": "[parameters('principalId')]"
      }
    }
  ],
  "outputs": {
    "name": {
      "type": "string",
      "value": "[variables('roleAssignmentName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]"
    }
  }
}

O recurso definido no modelo é:

Implementar o modelo

  1. Inicie sessão no portal do Azure.

  2. Determine seu endereço de email associado à sua assinatura do Azure. Ou determine o endereço de e-mail de outro usuário em seu diretório.

  3. Abra o Azure Cloud Shell para PowerShell.

  4. Copie e cole o seguinte script no Cloud Shell.

    $resourceGroupName = Read-Host -Prompt "Enter a resource group name (i.e. ExampleGrouprg)"
    $emailAddress = Read-Host -Prompt "Enter an email address for a user in your directory"
    $location = Read-Host -Prompt "Enter a location (i.e. centralus)"
    
    $roleAssignmentName = New-Guid
    $principalId = (Get-AzAdUser -Mail $emailAddress).id
    $roleDefinitionId = (Get-AzRoleDefinition -name "Virtual Machine Contributor").id
    $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json"
    
    New-AzResourceGroup -Name $resourceGroupName -Location $location
    New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleDefinitionID $roleDefinitionId -principalId $principalId
    
  5. Insira um nome de grupo de recursos, como ExampleGrouprg.

  6. Introduza um endereço de e-mail para si ou para outro utilizador no seu diretório.

  7. Insira um local para o grupo de recursos, como centralus.

  8. Se necessário, pressione Enter para executar o comando New-AzResourceGroupDeployment.

    O comando New-AzResourceGroup cria um novo grupo de recursos e o comando New-AzResourceGroupDeployment implanta o modelo para adicionar a atribuição de função.

    Deverá ver um resultado semelhante ao seguinte:

    PS> New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleAssignmentName $roleAssignmentName -roleDefinitionID $roleDefinitionId -principalId $principalId
    
    DeploymentName          : azuredeploy
    ResourceGroupName       : ExampleGrouprg
    ProvisioningState       : Succeeded
    Timestamp               : 5/22/2020 9:01:30 PM
    Mode                    : Incremental
    TemplateLink            :
                              Uri            : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json
                              ContentVersion : 1.0.0.0
    
    Parameters              :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              roleDefinitionID      String                     9980e02c-c2be-4d73-94e8-173b1dc7cf3c
                              principalId           String                     {principalId}
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

Rever os recursos implementados

  1. No portal do Azure, abra o grupo de recursos que você criou.

  2. No menu à esquerda, clique em Controle de acesso (IAM).

  3. Clique no separador Atribuições de funções.

  4. Verifique se a função de Colaborador da Máquina Virtual está atribuída ao usuário especificado.

    Nova atribuição de função

Clean up resources (Limpar recursos)

Para remover a atribuição de função e o grupo de recursos criados, siga estas etapas.

  1. Copie e cole o seguinte script no Cloud Shell.

    $emailAddress = Read-Host -Prompt "Enter the email address of the user with the role assignment to remove"
    $resourceGroupName = Read-Host -Prompt "Enter the resource group name to remove (i.e. ExampleGrouprg)"
    
    $principalId = (Get-AzAdUser -Mail $emailAddress).id
    
    Remove-AzRoleAssignment -ObjectId $principalId -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName $resourceGroupName
    Remove-AzResourceGroup -Name $resourceGroupName
    
  2. Digite o endereço de e-mail do usuário com a atribuição de função a ser removida.

  3. Digite o nome do grupo de recursos a ser removido, como ExampleGrouprg.

  4. Se necessário, pressione Enter para executar o comando Remove-AzResourceGroup.

  5. Digite Y para confirmar que deseja remover o grupo de recursos.

Próximos passos