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.
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
eMicrosoft.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
Inicie sessão no portal do Azure.
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.
Abra o Azure Cloud Shell para PowerShell.
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
Insira um nome de grupo de recursos, como ExampleGrouprg.
Introduza um endereço de e-mail para si ou para outro utilizador no seu diretório.
Insira um local para o grupo de recursos, como centralus.
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
No portal do Azure, abra o grupo de recursos que você criou.
No menu à esquerda, clique em Controle de acesso (IAM).
Clique no separador Atribuições de funções.
Verifique se a função de Colaborador da Máquina Virtual está atribuída ao usuário especificado.
Clean up resources (Limpar recursos)
Para remover a atribuição de função e o grupo de recursos criados, siga estas etapas.
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
Digite o endereço de e-mail do usuário com a atribuição de função a ser removida.
Digite o nome do grupo de recursos a ser removido, como ExampleGrouprg.
Se necessário, pressione Enter para executar o comando Remove-AzResourceGroup.
Digite Y para confirmar que deseja remover o grupo de recursos.