Tutorial: Criar uma função personalizada do Azure usando o Azure PowerShell

Se as funções internas do Azure não atenderem às necessidades específicas da sua organização, você poderá criar suas próprias funções personalizadas. Neste tutorial vai criar uma função personalizada com o nome Pedidos de Suporte do Leitor com o Azure PowerShell. A função personalizada permite que o usuário visualize tudo no plano de controle de uma assinatura e também abra tíquetes de suporte.

Neste tutorial, irá aprender a:

  • Criar uma função personalizada
  • Listar funções personalizadas
  • Atualizar uma função personalizada
  • Eliminar uma função personalizada

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

Para concluir este tutorial, irá precisar de:

Iniciar sessão no Azure PowerShell

Iniciar sessão no Azure PowerShell.

Criar uma função personalizada

A forma mais fácil de criar uma função personalizada é começar com uma função incorporada, editá-la e, em seguida, criar uma nova função.

  1. No PowerShell, use o comando Get-AzProviderOperation para obter a lista de operações para o provedor de recursos Microsoft.Support. É útil conhecer as operações disponíveis para criar as suas permissões. Você também pode ver uma lista de todas as operações em Operações do provedor de recursos do 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 o comando Get-AzRoleDefinition para gerar a função Reader no formato JSON.

    Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json
    
  3. Abra o ficheiro ReaderSupportRole.json num editor.

    O seguinte mostra o resultado do JSON. Para obter informações sobre as diferentes propriedades, consulte Funções personalizadas do 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 o arquivo JSON para adicionar a "Microsoft.Support/*" ação à Actions propriedade. Certifique-se de incluir uma vírgula após a ação de leitura. Esta ação irá permitir ao utilizador criar pedidos de suporte.

  5. Obtenha o ID da sua subscrição utilizando o comando Get-AzSubscription .

    Get-AzSubscription
    
  6. Em AssignableScopes, adicione o ID de subscrição com o seguinte formato: "/subscriptions/00000000-0000-0000-0000-000000000000"

    Tem de adicionar os IDs de subscrição explícitos, caso contrário, não poderá importar a função para a sua subscrição.

  7. Elimine a linha de propriedade Id e altere a propriedade IsCustom para true.

  8. Altere as propriedades Name e Description para "Pedidos de Suporte do Leitor" e "Ver tudo na subscrição e abrir pedidos de suporte."

    O seu ficheiro JSON deverá ser semelhante ao seguinte:

    {
      "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 criar a nova função personalizada, use o comando New-AzRoleDefinition e especifique o arquivo de definição de função 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}
    

    A nova função personalizada está agora disponível no portal do Azure e pode ser atribuída a utilizadores, grupos ou principais de serviço, tal como as funções incorporadas.

Listar funções personalizadas

  • Para listar todas as suas funções personalizadas, use o comando Get-AzRoleDefinition .

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

    Também pode ver a função personalizada no portal do Azure.

    captura de ecrã da função personalizada importada no portal do Azure

Atualizar uma função personalizada

Para atualizar a função personalizada, pode atualizar o ficheiro JSON ou utilizar o objeto PSRoleDefinition.

  1. Para atualizar o arquivo JSON, use o comando Get-AzRoleDefinition para gerar a saída da função personalizada no formato JSON.

    Get-AzRoleDefinition -Name "Reader Support Tickets" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole2.json
    
  2. Abra o ficheiro num editor.

  3. No Actions, adicione a ação para criar e gerenciar implantações de grupos de "Microsoft.Resources/deployments/*"recursos .

    O seu ficheiro JSON atualizado deverá ser semelhante ao seguinte:

    {
      "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 atualizar a função personalizada, use o comando Set-AzRoleDefinition e especifique o arquivo JSON atualizado.

    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 o PSRoleDefintion objeto para atualizar sua função personalizada, primeiro use o comando Get-AzRoleDefinition para obter a função.

    $role = Get-AzRoleDefinition "Reader Support Tickets"
    
  6. Chame o Add método para adicionar a ação para ler as configurações de diagnóstico.

    $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*/read")
    
  7. Use Set-AzRoleDefinition para atualizar a função.

    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}
    

Eliminar uma função personalizada

  1. Use o comando Get-AzRoleDefinition para obter a ID da função personalizada.

    Get-AzRoleDefinition "Reader Support Tickets"
    
  2. Use o comando Remove-AzRoleDefinition e especifique a ID da função para excluir a função personalizada.

    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. Quando lhe for pedido para confirmar, escreva Y.

Próximos passos