Inicio rápido: Asignación de un rol de Azure mediante una plantilla de Resource Manager

El control de acceso basado en rol (RBAC) es la forma en la que se administra el acceso a los recursos de Azure. En este inicio rápido, se crea un grupo de recursos y se concede acceso a un usuario para crear y administrar máquinas virtuales en el grupo de recursos. En este inicio rápido se usa una plantilla de Azure Resource Manager para conceder el acceso.

Una plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.

Si su entorno cumple los requisitos previos y está familiarizado con el uso de plantillas de Resource Manager, seleccione el botón Implementar en Azure. La plantilla se abrirá en Azure Portal.

Button to deploy the Resource Manager template to Azure.

Requisitos previos

Para asignar roles de Azure y quitar asignaciones de roles, debe tener:

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
  • Permisos Microsoft.Authorization/roleAssignments/write y Microsoft.Authorization/roleAssignments/delete, como Administrador de control de acceso basado en roles
  • Para asignar un rol, es preciso especificar tres elementos: entidad de seguridad, definición de roles y ámbito. En este inicio rápido, la entidad de seguridad es usted, o cualquier otro usuario de su directorio, la definición de roles es Colaborador de máquina virtual y el ámbito es el grupo de recursos que especifique.

Revisión de la plantilla

La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure. La plantilla tiene dos parámetros y una sección de recursos. En la sección de recursos, observe que tiene los tres elementos de una asignación de roles: entidad de seguridad, definición de roles y ámbito.

{
  "$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'))]"
    }
  }
}

El recurso definido en la plantilla es el siguiente:

Implementación de la plantilla

  1. Inicie sesión en Azure Portal.

  2. Determine la dirección de correo electrónico asociada a su suscripción de Azure. O bien, determine la dirección de correo electrónico de otro usuario del directorio.

  3. Abra Azure Cloud Shell para PowerShell.

  4. Copie y pegue el siguiente script en 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. Escriba un nombre de grupo de recursos, como ExampleGrouprg.

  6. Escriba una dirección de correo electrónico para usted o para otro usuario en el directorio.

  7. Escriba una ubicación para el grupo de recursos, como centralus.

  8. Si fuera necesario, presione Entrar para ejecutar el comando New-AzResourceGroupDeployment.

    El comando New-AzResourceGroup crea un grupo de recursos, mientras que el comando New-AzResourceGroupDeployment implementa la plantilla para agregar la asignación de roles.

    Debería ver un resultado similar al siguiente:

    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 :
    

Revisión de los recursos implementados

  1. En Azure Portal, abra el grupo de recursos que ha creado.

  2. En el menú de la izquierda, haga clic en Control de acceso (IAM) .

  3. Haga clic en la pestaña Asignaciones de roles.

  4. Compruebe que el rol Colaborador de la máquina virtual está asignado al usuario que ha especificado.

    New role assignment

Limpieza de recursos

Para quitar la asignación de roles y el grupo de recursos que ha creado, siga estos pasos.

  1. Copie y pegue el siguiente script en 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. Escriba la dirección de correo electrónico del usuario con la asignación de roles que se va a quitar.

  3. Escriba el nombre del grupo de recursos que va a quitar, como por ejemplo ExampleGrouprg.

  4. Si fuera necesario, presione Entrar para ejecutar el comando Remove-AzResourceGroup.

  5. Escriba Y para confirmar que desea quitar el grupo de recursos.

Pasos siguientes