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:
- Permissões para criar funções personalizadas, como Administrador de Acesso de Usuário
- Azure Cloud Shell ou Azure PowerShell
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.
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...
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
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": [ "/" ] }
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.Obtenha o ID da sua subscrição utilizando o comando Get-AzSubscription .
Get-AzSubscription
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.
Elimine a linha de propriedade
Id
e altere a propriedadeIsCustom
paratrue
.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, 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.
Atualizar uma função personalizada
Para atualizar a função personalizada, pode atualizar o ficheiro JSON ou utilizar o objeto PSRoleDefinition
.
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
Abra o ficheiro num editor.
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" ] }
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}
Para usar o
PSRoleDefinition
objeto para atualizar sua função personalizada, primeiro use o comando Get-AzRoleDefinition para obter a função.$role = Get-AzRoleDefinition "Reader Support Tickets"
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")
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
Use o comando Get-AzRoleDefinition para obter a ID da função personalizada.
Get-AzRoleDefinition "Reader Support Tickets"
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"):
Quando lhe for pedido para confirmar, escreva Y.