Creación o actualización de roles personalizados para los recursos de Azure con la API REST

Si los roles integrados de Azure no cumplen las necesidades específicas de su organización, puede crear los suyos propios. En este artículo se describe cómo mostrar, crear, actualizar o eliminar roles personalizados con la API REST.

Requisitos previos

Debe usar la versión siguiente:

  • 2015-07-01 o posterior

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

Enumerar todas las definiciones de roles personalizados

Para enumerar todas las definiciones de roles personalizadas de un inquilino, use la API REST Definiciones de roles: lista .

  • En el ejemplo siguiente se enumeran todas las definiciones de roles personalizadas de un inquilino:

    Solicitar

    GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    Respuesta

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Enumeración de todas las definiciones de roles personalizadas en un ámbito

Para enumerar las definiciones de roles personalizadas en un ámbito, use la API REST Role Definitions - List .

  1. Empiece con la solicitud siguiente:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. En el identificador URI, reemplace {scope} por el ámbito cuya lista de roles quiere obtener.

    Ámbito Tipo
    subscriptions/{subscriptionId1} Suscripción
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Resource
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
  3. Reemplace {filter} por el tipo de rol.

    Filter Descripción
    $filter=type+eq+'CustomRole' Filtro basado en el tipo CustomRole

    En el ejemplo siguiente se enumeran todas las definiciones de roles personalizadas de una suscripción:

    Solicitar

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    Respuesta

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Enumeración de una definición de rol personalizado por nombre

Para obtener información sobre una definición de rol personalizada por su nombre para mostrar, use la API REST Definiciones de roles - Obtener .

  1. Empiece con la solicitud siguiente:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. En el identificador URI, reemplace {scope} por el ámbito cuya lista de roles quiere obtener.

    Ámbito Tipo
    subscriptions/{subscriptionId1} Suscripción
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Resource
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
  3. Reemplace {filter} con el nombre para mostrar para el rol.

    Filter Descripción
    $filter=roleName+eq+'{roleDisplayName}' Use la forma con codificación URL del nombre para mostrar exacto del rol. Por ejemplo: $filter=roleName+eq+'Virtual%20Machine%20Contributor'

    En el ejemplo siguiente se muestra una definición de rol personalizada denominada Billing Reader Plus en una suscripción:

    Solicitar

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName+eq+'Billing Reader Plus'&api-version=2022-04-01
    

    Respuesta

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Enumeración de una definición de rol personalizado por identificador

Para obtener información sobre una definición de rol personalizada por su identificador único, use la API REST Definiciones de roles - Obtener .

  1. Use la API de REST Role Definitions - List para obtener el identificador GUID para el rol.

  2. Empiece con la solicitud siguiente:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. En el identificador URI, reemplace {scope} por el ámbito cuya lista de roles quiere obtener.

    Ámbito Tipo
    subscriptions/{subscriptionId1} Suscripción
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Resource
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
  4. Reemplace {roleDefinitionId} por el identificador GUID de la definición de roles.

    En el ejemplo siguiente se muestra una definición de rol personalizada con el identificador 17adabda-4bf1-4f4e-8c97-1f0cab6dea1c en una suscripción:

    Solicitar

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c?api-version=2022-04-01
    

    Respuesta

    {
        "properties": {
            "roleName": "Billing Reader Plus",
            "type": "CustomRole",
            "description": "Read billing data and download invoices",
            "assignableScopes": [
                "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
            ],
            "permissions": [
                {
                    "actions": [
                        "Microsoft.Authorization/*/read",
                        "Microsoft.Billing/*/read",
                        "Microsoft.Commerce/*/read",
                        "Microsoft.Consumption/*/read",
                        "Microsoft.Management/managementGroups/read",
                        "Microsoft.CostManagement/*/read",
                        "Microsoft.Billing/invoices/download/action",
                        "Microsoft.CostManagement/exports/*"
                    ],
                    "notActions": [
                        "Microsoft.CostManagement/exports/delete"
                    ],
                    "dataActions": [],
                    "notDataActions": []
                }
            ],
            "createdOn": "2021-05-22T21:57:23.5764138Z",
            "updatedOn": "2021-05-22T21:57:23.5764138Z",
            "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
            "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
        },
        "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
        "type": "Microsoft.Authorization/roleDefinitions",
        "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
    }
    

Crear un rol personalizado

Para crear un rol personalizado, use la API de REST Role Definitions - Create Or Update. Para llamar a esta API, debe haber iniciado sesión con un usuario que tenga asignado un rol que, a su vez, tenga el permiso Microsoft.Authorization/roleDefinitions/write en todos los assignableScopes. Entre los roles integrados, solamente Propietario y Administrador de acceso de usuario incluyen este permiso.

  1. Revise la lista de operaciones de proveedores de recursos que están disponibles para crear los permisos para su rol personalizado.

  2. Use una herramienta de GUID para generar un identificador único que se use para el identificador del rol personalizado. 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/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  4. Dentro del URI, reemplace {scope} por el primer elemento assignableScopes del rol personalizado.

    Ámbito Tipo
    subscriptions/{subscriptionId1} Suscripción
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Grupos de recursos
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
  5. Reemplace {roleDefinitionId} por el identificador GUID del rol personalizado.

  6. En el cuerpo de la solicitud, reemplace {roleDefinitionId} por el identificador GUID.

  7. Si assignableScopes es una suscripción o un grupo de recursos, reemplace las instancias {subscriptionId} o {resourceGroup} por sus identificadores.

  8. Si assignableScopes es un grupo de administración, reemplace la instancia {groupId} por el identificador del grupo de administración.

  9. En la propiedad actions, agregue las acciones que permite realizar el rol.

  10. En la propiedad notActions, agregue las acciones excluidas de las actions permitidas.

  11. En las propiedades roleName y description, especifique un nombre de rol exclusivo y una descripción. Para más información sobre las propiedades, consulte Roles personalizados de Azure.

    A continuación se muestra un ejemplo de cuerpo de la solicitud:

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

Actualización de un rol personalizado

Para actualizar un rol personalizado, use la API de REST Role Definitions - Create Or Update. Para llamar a esta API, debe iniciar sesión con un usuario que tenga asignado un rol que tenga el Microsoft.Authorization/roleDefinitions/write permiso en todos los assignableScopes, como El acceso de usuario Administración istrator.

  1. Para obtener información sobre el rol personalizado, use las API de REST Role Definitions - List o Role Definitions - Get. Para obtener más información, consulte la sección Enumerar todas las definiciones de roles personalizadas anteriormente.

  2. Empiece con la solicitud siguiente:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. Dentro del URI, reemplace {scope} por el primer elemento assignableScopes del rol personalizado.

    Ámbito Tipo
    subscriptions/{subscriptionId1} Suscripción
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Grupos de recursos
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
  4. Reemplace {roleDefinitionId} por el identificador GUID del rol personalizado.

  5. Según la información sobre el rol personalizado, cree un cuerpo de la solicitud con el formato siguiente:

    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  6. Actualice el cuerpo de la solicitud con los cambios que desee hacer en el rol personalizado.

    A continuación se muestra un ejemplo de cuerpo de la solicitud con la nueva acción de configuración de diagnóstico agregada:

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Insights/diagnosticSettings/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

Eliminación de un rol personalizado

Para eliminar un rol personalizado, use la API de REST Role Definitions - Delete. Para llamar a esta API, debe haber iniciado sesión con un usuario que tenga asignado un rol que, a su vez, tenga el permiso Microsoft.Authorization/roleDefinitions/delete en todos los assignableScopes. Entre los roles integrados, solamente Propietario y Administrador de acceso de usuario incluyen este permiso.

  1. Quite todas las asignaciones de roles que utilicen el rol personalizado. Para obtener más información, consulte Búsqueda de asignaciones de roles para eliminar un rol personalizado.

  2. Para obtener el identificador GUID del rol personalizado, use las API de REST Role Definitions - List o Role Definitions - Get. Para obtener más información, consulte la sección Enumerar todas las definiciones de roles personalizadas anteriormente.

  3. Empiece con la solicitud siguiente:

    DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  4. En el identificador URI, reemplace {scope} por el ámbito que desea eliminar para el rol personalizado.

    Ámbito Tipo
    subscriptions/{subscriptionId1} Suscripción
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Grupos de recursos
    providers/Microsoft.Management/managementGroups/{groupId1} Grupo de administración
  5. Reemplace {roleDefinitionId} por el identificador GUID del rol personalizado.

Pasos siguientes