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

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 a CLI do Azure. 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.

Pré-requisitos

Para concluir este tutorial, irá precisar de:

Iniciar sessão na CLI do Azure

Iniciar sessão na CLI do Azure.

Criar uma função personalizada

A forma mais fácil de criar uma função personalizada é começar com um modelo JSON, adicionar as suas alterações e, em seguida, criar uma nova função.

  1. Analise a lista de ações para o provedor de recursos Microsoft.Support. É útil conhecer as ações que estão disponíveis para criar suas permissões.

    Ação Descrição
    Microsoft.Support/register/action Regista para o Fornecedor de Recursos de Suporte
    Microsoft.Support/supportTickets/read Obtém os detalhes do Pedido de Suporte (incluindo o estado, gravidade, detalhes de contacto e comunicações) ou obtém a lista dos Pedidos de Suporte nas subscrições.
    Microsoft.Support/supportTickets/write Cria ou Atualiza um Pedido de Suporte. Pode criar um Pedido de Suporte para problemas relacionados com a Gestão Técnica, de Faturação, de Quotas ou de Subscrição. Pode atualizar a gravidade, os detalhes de contacto e as comunicações para pedidos de suporte existentes.
  2. Crie um novo ficheiro designado ReaderSupportRole.json.

  3. Abra ReaderSupportRole.json num editor e adicione o seguinte JSON.

    Para obter informações sobre as diferentes propriedades, consulte Funções personalizadas do Azure.

    {
      "Name": "",
      "IsCustom": true,
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId1}"
      ]
    }
    
  4. Adicione as seguintes ações à Actions propriedade. Estas ações permitem ao utilizador ver tudo na subscrição e criar pedidos de suporte.

    "*/read",
    "Microsoft.Support/*"
    
  5. Obtenha o ID da sua subscrição com o comando az account list.

    az account list --output table
    
  6. Em AssignableScopes, substitua {subscriptionId1} pelo seu ID da subscrição.

    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. 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"
      ]
    }
    
  8. Para criar a nova função personalizada, utilize o comandoaz role definition create e especifique o ficheiro de definição de função 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"
    }
    

    A nova função personalizada está agora disponível 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 funções personalizadas, utilize o comando az role definition list com o 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"
      }
    ]
    

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

    screenshot of custom role imported in the Azure portal

Atualizar uma função personalizada

Para atualizar a função personalizada, atualize o ficheiro JSON e, em seguida, atualize a função personalizada.

  1. Abra o ficheiro ReaderSupportRole.json.

  2. No Actions, adicione a ação para criar e gerenciar implantações de grupos de "Microsoft.Resources/deployments/*"recursos . Certifique-se de incluir uma vírgula após a ação anterior.

    O seu ficheiro JSON atualizado 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/*",
        "Microsoft.Resources/deployments/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ]
    }
    
  3. Para atualizar a função personalizada, utilize o comando az role definition update e especifique o ficheiro JSON atualizado.

    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"
    }
    

Eliminar uma função personalizada

  • Utilize o comando az role definition delete e especifique o nome da função ou o ID da função para eliminar a função personalizada.

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

Próximos passos