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:
Microsoft.Authorization/roleAssignments/write
permisos, como Control de acceso basado en rol Administración istrator o user Access Administración istrator
Debe usar las versiones siguientes:
2015-07-01
o posterior para asignar un rol de Azure2018-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.
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.
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
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}" } }
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.
Reemplace {roleAssignmentId} por el identificador GUID de la asignación de roles.
En el cuerpo de la solicitud, reemplace {scope} por el mismo ámbito que en el URI.
Reemplace {roleDefinitionId} por el identificador de la definición de roles.
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
- Enumeración de asignaciones de roles de Azure mediante la API REST
- Implementación de recursos con las plantillas de Resource Manager y la API de REST de Resource Manager
- Azure REST API Reference (Referencia de API de REST en Azure)
- Creación o actualización de roles personalizados para los recursos de Azure con la API REST