Tutorial: Creación de un rol personalizado de Azure con la CLI de Azure

Si los roles integrados de Azure no cumplen las necesidades específicas de su organización, puede crear los suyos propios. En este tutorial, creará un rol personalizado llamado Reader Support Tickets (Lector de incidencias de soporte) con la CLI de Azure. El rol personalizado permite al usuario ver todo lo relativo al plano de control de una suscripción y también abrir incidencias de soporte técnico.

En este tutorial, aprenderá a:

  • Crear un rol personalizado
  • Lista de roles personalizados
  • Actualización de un rol personalizado
  • Eliminación de un rol personalizado

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Requisitos previos

Para realizar este tutorial, necesita:

Inicio de sesión en la CLI de Azure

Inicie sesión en la CLI de Azure.

Crear un rol personalizado

El modo más sencillo de crear un rol personalizado es tomar como partida una plantilla JSON, editarla y, a continuación, crear un nuevo rol.

  1. Revise la lista de acciones del proveedor de recursos Microsoft.Support. Resulta útil conocer las acciones que están disponibles para crear los permisos.

    Acción Descripción
    Microsoft.Support/register/action Registra para admitir el proveedor de recursos
    Microsoft.Support/supportTickets/read Obtiene los detalles de las incidencias de soporte técnico (incluido el estado, gravedad, detalles de contacto y comunicaciones) u obtiene la lista de incidencias de soporte técnico de las diversas suscripciones.
    Microsoft.Support/supportTickets/write Crea o actualiza una incidencia de soporte técnico. Puede crear una incidencia de soporte técnico para problemas relacionados con cuestiones técnicas, de facturación, cuotas o de administración de suscripciones. Puede actualizar la gravedad, los detalles de contacto y las comunicaciones de las incidencias de soporte técnico existentes.
  2. Cree un nuevo archivo llamado ReaderSupportRole.json.

  3. Abra ReaderSupportRole.json en un editor y agregue el siguiente código JSON.

    Para información sobre las distintas propiedades, consulte Roles personalizados de Azure.

    {
      "Name": "",
      "IsCustom": true,
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId1}"
      ]
    }
    
  4. Agregue las siguientes acciones a la propiedad Actions. Estas acciones permiten al usuario ver todo el contenido de la suscripción y crear incidencias de soporte técnico.

    "*/read",
    "Microsoft.Support/*"
    
  5. Obtenga el identificador de la suscripción mediante el comando az account list.

    az account list --output table
    
  6. En AssignableScopes, reemplace {subscriptionId1} por el identificador de la suscripción.

    Debe agregar identificadores de suscripción explícitos; en caso contrario, no podrá importar el rol en su suscripción.

  7. Cambie el valor de las propiedades Name y Description por "Reader Support Tickets" (Lector de incidencias de soporte) y "Ver todo el contenido de la suscripción y también abrir incidencias de soporte técnico".

    El archivo JSON debe ser similar al siguiente:

    {
      "Name": "Reader Support Tickets",
      "IsCustom": true,
      "Description": "View everything in the subscription and also open support tickets.",
      "Actions": [
        "*/read",
        "Microsoft.Support/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ]
    }
    
  8. Para crear el nuevo rol personalizado, use el comando az role definition create y especifique el archivo de definición de roles JSON.

    az role definition create --role-definition "~/CustomRoles/ReaderSupportRole.json"
    
    {
      "additionalProperties": {},
      "assignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ],
      "description": "View everything in the subscription and also open support tickets.",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
      "name": "22222222-2222-2222-2222-222222222222",
      "permissions": [
        {
          "actions": [
            "*/read",
            "Microsoft.Support/*"
          ],
          "additionalProperties": {},
          "dataActions": [],
          "notActions": [],
          "notDataActions": []
        }
      ],
      "roleName": "Reader Support Tickets",
      "roleType": "CustomRole",
      "type": "Microsoft.Authorization/roleDefinitions"
    }
    

    El nuevo rol personalizado ya está disponible y se puede asignar a los usuarios, los grupos y las entidades de servicio igual que los roles integrados.

Lista de roles personalizados

  • Para enumerar todos los roles personalizados, use el comando az role definition list con el parámetro --custom-role-only.

    az role definition list --custom-role-only true
    
    [
      {
        "additionalProperties": {},
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000"
        ],
        "description": "View everything in the subscription and also open support tickets.",
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
        "name": "22222222-2222-2222-2222-222222222222",
        "permissions": [
          {
            "actions": [
              "*/read",
              "Microsoft.Support/*",
              "Microsoft.Resources/deployments/*",
              "Microsoft.Insights/diagnosticSettings/*/read"
            ],
            "additionalProperties": {},
            "dataActions": [],
            "notActions": [],
            "notDataActions": []
          }
        ],
        "roleName": "Reader Support Tickets",
        "roleType": "CustomRole",
        "type": "Microsoft.Authorization/roleDefinitions"
      }
    ]
    

    También puede ver el rol personalizado en Azure Portal.

    screenshot of custom role imported in the Azure portal

Actualización de un rol personalizado

Para actualizar el rol personalizado, actualice el archivo JSON y, a continuación, actualice el rol personalizado.

  1. Abra el archivo ReaderSupportRole.json.

  2. En Actions, agregue la acción para crear y administrar implementaciones de grupos de recursos "Microsoft.Resources/deployments/*". Asegúrese de incluir una coma después de cada acción anterior.

    El archivo JSON actualizado debe ser similar al siguiente:

    {
      "Name": "Reader Support Tickets",
      "IsCustom": true,
      "Description": "View everything in the subscription and also open support tickets.",
      "Actions": [
        "*/read",
        "Microsoft.Support/*",
        "Microsoft.Resources/deployments/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ]
    }
    
  3. Para actualizar el rol personalizado, use el comando az role definition update y especifique el archivo JSON actualizado.

    az role definition update --role-definition "~/CustomRoles/ReaderSupportRole.json"
    
    {
      "additionalProperties": {},
      "assignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ],
      "description": "View everything in the subscription and also open support tickets.",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
      "name": "22222222-2222-2222-2222-222222222222",
      "permissions": [
        {
          "actions": [
            "*/read",
            "Microsoft.Support/*",
            "Microsoft.Resources/deployments/*"
          ],
          "additionalProperties": {},
          "dataActions": [],
          "notActions": [],
          "notDataActions": []
        }
      ],
      "roleName": "Reader Support Tickets",
      "roleType": "CustomRole",
      "type": "Microsoft.Authorization/roleDefinitions"
    }
    

Eliminación de un rol personalizado

  • Use el comando az role definition delete y especifique el nombre del rol o el identificador del rol para eliminar el rol personalizado.

    az role definition delete --name "Reader Support Tickets"
    

Pasos siguientes