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