Tutorial: Creación de un rol personalizado de Azure mediante Azure PowerShell

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 Azure PowerShell. 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.

Nota

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Prerrequisitos

Para realizar este tutorial, necesita:

Inicio de sesión en Azure PowerShell

Inicie sesión en Azure PowerShell.

Crear un rol personalizado

El modo más sencillo de crear un rol personalizado es tomar como partida un rol integrado, editarlo y, a continuación, crear un nuevo rol.

  1. En PowerShell, use el comando Get-AzProviderOperation para obtener la lista de operaciones del proveedor de recursos Microsoft.Support. Resulta útil conocer las operaciones que están disponibles para crear los permisos. También puede ver una lista de todas las operaciones en Operaciones del proveedor de recursos de Azure.

    Get-AzProviderOperation "Microsoft.Support/*" | FT Operation, Description -AutoSize
    
    Operation                              Description
    ---------                              -----------
    Microsoft.Support/register/action      Registers to Support Resource Provider
    Microsoft.Support/supportTickets/read  Gets Support Ticket details (including status, severity, contact ...
    Microsoft.Support/supportTickets/write Creates or Updates a Support Ticket. You can create a Support Tic...
    
  2. Use el comando Get-AzRoleDefinition para obtener la salida del rol Lector en formato JSON.

    Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json
    
  3. Abra el archivo ReaderSupportRole.json en un editor.

    A continuación, se muestra la salida JSON. Para información sobre las distintas propiedades, consulte Roles personalizados de Azure.

    {
      "Name": "Reader",
      "Id": "acdd72a7-3385-48ef-bd42-f606fba81ae7",
      "IsCustom": false,
      "Description": "Lets you view everything, but not make any changes.",
      "Actions": [
        "*/read"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/"
      ]
    }
    
  4. Edite el archivo JSON para agregar la acción "Microsoft.Support/*" a la propiedad Actions. Asegúrese de incluir una coma después de la acción de lectura. Esta acción permitirá al usuario crear incidencias de soporte técnico.

  5. Obtenga el identificador de la suscripción mediante el comando Get AzSubscription.

    Get-AzSubscription
    
  6. En AssignableScopes, agregue el identificador de suscripción con el formato siguiente: "/subscriptions/00000000-0000-0000-0000-000000000000"

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

  7. Elimine la línea de la propiedad Id y cambie la propiedad IsCustom a true.

  8. 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"
      ]
    }
    
  9. Para crear el rol personalizado, use el comando New-AzRoleDefinition y especifique el archivo de definición de rol JSON.

    New-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole.json"
    
    Name             : Reader Support Tickets
    Id               : 22222222-2222-2222-2222-222222222222
    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}
    

    El nuevo rol personalizado ya está disponible en Azure Portal 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 Get-AzRoleDefinition.

    Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom
    
    Name                   IsCustom
    ----                   --------
    Reader Support Tickets     True
    

    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, puede actualizar el archivo JSON o usar el objeto PSRoleDefinition.

  1. Para actualizar el archivo JSON, use el comando Get-AzRoleDefinition para obtener la salida del rol personalizado en formato JSON.

    Get-AzRoleDefinition -Name "Reader Support Tickets" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole2.json
    
  2. Abra el archivo en un editor.

  3. En Actions, agregue la acción para crear y administrar implementaciones de grupos de recursos "Microsoft.Resources/deployments/*".

    El archivo JSON actualizado debe ser similar al siguiente:

    {
      "Name": "Reader Support Tickets",
      "Id": "22222222-2222-2222-2222-222222222222",
      "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"
      ]
    }
    
  4. Para actualizar el rol personalizado, use el comando Set-AzRoleDefinition y especifique el archivo JSON actualizado.

    Set-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole2.json"
    
    Name             : Reader Support Tickets
    Id               : 22222222-2222-2222-2222-222222222222
    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}
    
  5. Para usar el objeto PSRoleDefintion para actualizar el rol personalizado, use primero el comando Get-AzRoleDefinition para obtener el rol.

    $role = Get-AzRoleDefinition "Reader Support Tickets"
    
  6. Llame al método Add para agregar la acción de lectura de la configuración de diagnóstico.

    $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*/read")
    
  7. Use el comando Set-AzRoleDefinition para actualizar el rol.

    Set-AzRoleDefinition -Role $role
    
    Name             : Reader Support Tickets
    Id               : 22222222-2222-2222-2222-222222222222
    IsCustom         : True
    Description      : View everything in the subscription and also open support tickets.
    Actions          : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*,
                       Microsoft.Insights/diagnosticSettings/*/read}
    NotActions       : {}
    DataActions      : {}
    NotDataActions   : {}
    AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
    

Eliminación de un rol personalizado

  1. Use el comando Get-AzRoleDefinition para obtener el identificador del rol personalizado.

    Get-AzRoleDefinition "Reader Support Tickets"
    
  2. Use el comando Remove-AzRoleDefinition y especifique el identificador del rol para eliminar el rol personalizado.

    Remove-AzRoleDefinition -Id "22222222-2222-2222-2222-222222222222"
    
    Confirm
    Are you sure you want to remove role definition with id '22222222-2222-2222-2222-222222222222'.
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
    
  3. Cuando se le pida confirmación, escriba Y.

Pasos siguientes