Creación o actualización de roles personalizados 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 artículo se describe cómo mostrar, crear, actualizar o eliminar roles personalizados con la CLI de Azure.

Para ver un tutorial paso a paso sobre cómo crear un rol personalizado, consulte Tutorial: Creación de un rol personalizado de Azure mediante la CLI de Azure.

Requisitos previos

Para crear roles personalizados, necesita:

Lista de roles personalizados

Para enumerar los roles personalizados que están disponibles para la asignación, use az role definition list. En el siguiente ejemplo se enumeran todos los roles personalizados de la suscripción actual.

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

Enumeración de definiciones de roles personalizadas

Para enumerar una definición de roles personalizada, use az role definition list. Este comando es el mismo comando que usaría para un rol integrado.

az role definition list --name {roleName}

En el ejemplo siguiente se muestra la definición de roles Operador de máquina virtual:

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "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/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

En el ejemplo siguiente se muestran solo las acciones del rol Operador de máquina virtual:

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].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/*"
  ]
]

Crear un rol personalizado

Para crear un rol personalizado, use az role definition create. La definición de roles puede ser una descripción JSON o una ruta de acceso a un archivo que contenga esta descripción.

az role definition create --role-definition {roleDefinition}

En el ejemplo siguiente, se crea un rol personalizado llamado Operador de máquina virtual. Este rol personalizado asigna acceso a todas las acciones de lectura de los proveedores de recursos Microsoft.Compute, Microsoft.Storage y Microsoft.Network, y asigna acceso para iniciar, reiniciar y supervisar las máquinas virtuales. El rol personalizado se puede usar en dos suscripciones. En este ejemplo, se usa un archivo JSON como entrada.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "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/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

Actualización de un rol personalizado

Para actualizar un rol personalizado, primero use az role definition list para recuperar la definición de roles. Después, haga los cambios que desee en la definición de rol. Por último, use az role definition update para guardar la definición de roles actualizada.

az role definition update --role-definition {roleDefinition}

En el siguiente ejemplo, se agrega la acción Microsoft.Insights/diagnosticSettings/ a Actions y se agrega un grupo de administración a AssignableScopes para el rol personalizado de Operador de máquina virtual.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "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/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

Eliminación de un rol personalizado

  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 eliminar un rol personalizado, use az role definition delete. Para especificar el rol que desea eliminar, use el nombre del rol o el identificador. Para determinar el identificador del rol, use az role definition list.

    az role definition delete --name {roleNameOrId}
    

    En el ejemplo siguiente se elimina el rol personalizado Operador de máquina virtual.

    az role definition delete --name "Virtual Machine Operator"
    

Pasos siguientes