Compartilhar via


Início rápido: Atribuir uma função do Azure usando um modelo do ARM

O Azure RBAC (controle de acesso baseado em função do Azure) é a maneira usada para gerenciar o acesso aos recursos no Azure. Neste início rápido, você cria um grupo de recursos e permite acesso a um usuário para criar e gerenciar máquinas virtuais no grupo de recursos. Este guia de início rápido usa um modelo do ARM (Azure Resource Manager) para permitir o acesso.

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

Se seu ambiente atender aos pré-requisitos e você estiver familiarizado com o uso de modelos ARM, selecione o botão Implantar no Azure. O modelo será aberto no portal do Azure.

Botão para implantar o modelo do Resource Manager no Azure.

Pré-requisitos

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

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
  • Permissões Microsoft.Authorization/roleAssignments/write e Microsoft.Authorization/roleAssignments/delete, como Administrador de controle de acesso baseado em função
  • Para atribuir uma função você precisa 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 no seu diretório, a definição de função é Colaborador de Máquina Virtual e o escopo é um grupo de recursos especificado por você.

Examinar o modelo

O modelo usado neste início rápido é proveniente dos 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 se 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 inclui:

Implantar o modelo

  1. Entre no portal do Azure.

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

  3. Abra o Azure Cloud Shell para PowerShell.

  4. Copie e cole o script a seguir 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 do grupo de recursos, como ExampleGrouprg.

  6. Insira um endereço de email para você mesmo ou para outro usuário no seu diretório.

  7. Insira uma localização 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 grupo de recursos e o comando New-AzResourceGroupDeployment implanta o modelo para adicionar a atribuição de função.

    Será exibida uma saída semelhante à 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 :
    

Examinar os recursos implantados

  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 na guia Atribuições de função.

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

    Nova atribuição de função

Limpar os recursos

Para remover a atribuição de função e o grupo de recursos que você criou, siga estas etapas.

  1. Copie e cole o script a seguir 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. Insira o endereço de email do usuário com a atribuição de função a ser removida.

  3. Insira um nome do grupo de recursos a ser removido, como ExampleGrouprg.

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

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

Próximas etapas