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:
- Permissões para criar funções personalizadas, como Administrador de Acesso de Usuário
- Azure Cloud Shell ou CLI do Azure
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.
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. Crie um novo ficheiro designado ReaderSupportRole.json.
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}" ] }
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/*"
Obtenha o ID da sua subscrição com o comando az account list.
az account list --output table
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.
Altere as propriedades
Name
eDescription
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" ] }
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.
Atualizar uma função personalizada
Para atualizar a função personalizada, atualize o ficheiro JSON e, em seguida, atualize a função personalizada.
Abra o ficheiro ReaderSupportRole.json.
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" ] }
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"