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 de sua organização, você poderá criar funções personalizadas próprias. Para este tutorial, crie uma função personalizada chamada Tíquetes de suporte do leitor usando a CLI do Azure. A função personalizada permite ao usuário ver tudo no painel de controle de uma assinatura e também abrir tíquetes de suporte.

Neste tutorial, você aprenderá como:

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

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

Pré-requisitos

Neste tutorial, você precisará de:

Entrar na CLI do Azure

Entrar na CLI do Azure.

Criar uma função personalizada

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

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

    Ação Descrição
    Microsoft.Support/register/action Registrar para dar suporte ao provedor de recursos
    Microsoft.Support/supportTickets/read Obter detalhes de tíquete de suporte (incluindo status, severidade, detalhes de contato e comunicações) ou obtém a lista de tíquetes de suporte entre assinaturas.
    Microsoft.Support/supportTickets/write Criar ou atualizar um tíquete de suporte. Você pode criar um tíquete de suporte para problemas técnicos, de cotas, de cobrança ou de gerenciamento de assinaturas. Você pode atualizar severidade, detalhes de contato e comunicações de tíquetes de suporte existentes.
  2. Criar um novo arquivo chamado ReaderSupportRole.json.

  3. Abra ReaderSupportRole.json em um editor e adicione o JSON a seguir.

    Para obter informações sobre as diversas propriedades, confira Funções personalizadas do Azure.

    {
      "Name": "",
      "IsCustom": true,
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId1}"
      ]
    }
    
  4. Adicione as ações a seguir à propriedade Actions. Essas ações permitem que o usuário veja tudo na assinatura e crie os tíquetes de suporte.

    "*/read",
    "Microsoft.Support/*"
    
  5. Obtenha a ID da sua assinatura usando o comando az account list.

    az account list --output table
    
  6. Em AssignableScopes, substitua {subscriptionId1} pela sua ID da assinatura.

    Você deve adicionar IDs de assinatura explícitas; caso contrário, não será possível importar a função para a assinatura.

  7. Altere as propriedades Name e Description para "Tíquetes de suporte do leitor" e "Exibir tudo na assinatura e também abrir tíquetes de suporte".

    Seu arquivo JSON deverá ter a seguinte aparência:

    {
      "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, use o comando az role definition create e especifique o arquivo de definição da 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 agora está disponível e pode ser atribuída a usuários, grupos ou entidades de serviço da mesma forma que as funções internas.

Listar funções personalizadas

  • Para listar todas as suas funções personalizadas, use 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"
      }
    ]
    

    Você 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 arquivo JSON e, em seguida, atualize a função personalizada.

  1. Abra o arquivo ReaderSupportRole.json.

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

    O arquivo JSON atualizado deve ficar mais ou menos assim:

    {
      "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, use o comando az role definition update e especifique o arquivo 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"
    }
    

Excluir uma função personalizada

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

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

Próximas etapas