Asignación de roles de Azure mediante la API REST

El control de acceso basado en rol (RBAC) de Azure es el sistema de autorización que puede utilizar para administrar el acceso a los recursos de Azure. Para conceder acceso, debe asignar roles a usuarios, grupos, entidades de servicio o identidades administradas en un ámbito determinado. En este artículo se describe cómo asignar roles mediante la API REST.

Requisitos previos

Para asignar roles de Azure, es necesario tener:

Debe usar las versiones siguientes:

  • 2015-07-01 o posterior para asignar un rol de Azure
  • 2018-09-01-preview o posterior para asignar un rol de Azure a una nueva entidad de servicio

Para obtener más información, consulte Versiones de la API REST de RBAC de Azure.

Asignación de un rol de Azure

Para asignar un rol, use la API REST Asignaciones de roles - Crear y especifique la entidad de seguridad, la definición de roles y el ámbito. Para llamar a esta API, debe tener acceso a la Microsoft.Authorization/roleAssignments/write acción, como Role Based Access Control Administración istrator.

  1. Use la API de REST Definiciones de roles - Lista o consulte Roles integrados para obtener el identificador de la definición de roles que quiere asignar.

  2. Use una herramienta de GUID para generar un identificador único que se use para el identificador de asignación de roles. El identificador tiene el formato: 00000000-0000-0000-0000-000000000000

  3. Empiece con la solicitud y el cuerpo siguientes:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
    
    {
      "properties": {
        "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "principalId": "{principalId}"
      }
    }
    
  4. En el identificador URI, reemplace {scope} por el ámbito de la asignación de roles.

    Ámbito Tipo
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
    subscriptions/{subscriptionId1} Subscription
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Resource

    En el ejemplo anterior, microsoft.web es un proveedor de recursos que hace referencia a una instancia de App Service. De forma similar, puede usar cualquier otro proveedor de recursos y especificar el ámbito. Para más información, consulte Tipos y proveedores de recursos de Azure y Operaciones del proveedor de recursos de Azure compatibles.

  5. Reemplace {roleAssignmentId} por el identificador GUID de la asignación de roles.

  6. En el cuerpo de la solicitud, reemplace {scope} por el mismo ámbito que en el URI.

  7. Reemplace {roleDefinitionId} por el identificador de la definición de roles.

  8. Reemplace {principalId} por el identificador de objeto del usuario, grupo o entidad de servicio al que se asignará el rol.

La siguiente solicitud y cuerpo asignan el rol lector de copias de seguridad a un usuario en el ámbito de la suscripción:

PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
    "principalId": "{objectId1}"
  }
}

El siguiente texto muestra un ejemplo de la salida:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
        "principalId": "{objectId1}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId1}",
        "condition": null,
        "conditionVersion": null,
        "createdOn": "2022-05-06T23:55:23.7679147Z",
        "updatedOn": "2022-05-06T23:55:23.7679147Z",
        "createdBy": null,
        "updatedBy": "{updatedByObjectId1}",
        "delegatedManagedIdentityResourceId": null,
        "description": null
    },
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId1}"
}

Nueva entidad de servicio

Si crea una entidad de servicio e inmediatamente intenta asignarle un rol, esa asignación de roles puede producir un error en algunos casos. Por ejemplo, si crea una identidad administrada y luego intenta asignarle un rol a esa entidad de servicio, la asignación de roles podría producir un error. Es probable que el motivo de este error sea un retraso en la replicación. La entidad de servicio se crea en una región; sin embargo, la asignación de roles puede tener lugar en una región distinta que todavía no haya replicado la entidad de servicio.

Para abordar este escenario, use la API de REST Asignación de roles: creación y establezca la propiedad principalType en ServicePrincipal. También debe establecer apiVersion en 2018-09-01-preview o posterior. 2022-04-01 es la primera versión estable.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
    "principalId": "{principalId}",
    "principalType": "ServicePrincipal"
  }
}

Pasos siguientes