O que são funções personalizadas no Azure?
Às vezes, as funções internas não concedem o nível preciso de acesso de que você precisa. As funções personalizadas permitem-lhe definir funções que satisfazem as necessidades específicas da sua organização. Pode atribuir as funções personalizadas do Azure que criar a utilizadores, grupos e principais de serviço no âmbito de subscrição, grupo de recursos ou recurso.
Nesta unidade, você aprenderá sobre funções personalizadas no RBAC (controle de acesso baseado em função) do Azure.
Funções do Microsoft Entra e do Azure
As funções do Microsoft Entra e as funções do Azure são frequentemente confundidas quando você trabalha pela primeira vez com o Azure. As funções do Microsoft Entra fornecem o mecanismo para gerenciar permissões para recursos do Microsoft Entra, como contas de usuário e senhas. As funções do Azure fornecem uma grande quantidade de capacidades para gerir recursos do Azure como máquinas virtuais (VMs) a nível granular.
A tabela a seguir mostra as diferenças sutis entre como você pode configurar e gerenciar os dois:
Funções do Azure | Funções do Microsoft Entra |
---|---|
Gerir o acesso a recursos do Azure como VMs, armazenamento, redes e muito mais | Gerencie o acesso aos recursos do Microsoft Entra, como contas de usuário e senhas |
Vários níveis de âmbito (grupo de gestão, subscrição, grupo de recursos, recurso) | Âmbito apenas a nível de inquilino |
Informações de funções acessíveis através do portal do Azure, CLI do Azure, Azure PowerShell, modelos do Azure Resource Manager, API REST | Informações de função acessíveis no portal de administração do Azure, centro de administração do Microsoft 365, Microsoft Graph, Microsoft Graph PowerShell |
Para nosso cenário, precisamos de uma função personalizada para gerenciar VMs do Azure no escopo da assinatura, portanto, precisamos usar funções personalizadas no RBAC do Azure.
Atribuição e âmbito de funções personalizadas
Os usuários com as funções de Administrador de Acesso de Usuário ou Proprietário podem criar ou atribuir funções personalizadas no RBAC do Azure.
Você pode atribuir funções personalizadas a:
Principal de segurança | Resumo |
---|---|
Utilizador | Um indivíduo que tem um perfil no Microsoft Entra ID |
Grupo | Um conjunto de usuários criados no Microsoft Entra ID |
Principais de serviço | Uma identidade de segurança utilizada por aplicações ou serviços para aceder a recursos específicos do Azure |
Identidade gerida | Uma identidade no Microsoft Entra ID que é gerenciada automaticamente pelo Azure |
Pode aplicar o âmbito da atribuição e permissões relacionadas a diferentes níveis no Azure. Os diferentes âmbitos são:
- Subscrição
- Grupo de recursos
- Recurso individual
Definição de função e estrutura
A definição de uma função personalizada divide-se numa coleção de diferentes permissões. Cada definição detalha as operações que são permitidas, como de leitura, escrita e eliminação. A definição é formada com estas estruturas:
{
"Name": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}
O exemplo a seguir mostra a definição de função para a função de Colaborador :
{
"Name": "Contributor",
"Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"IsCustom": false,
"Description": "Lets you manage everything except access to resources.",
"Actions": [
"*"
],
"NotActions": [
"Microsoft.Authorization/*/Delete",
"Microsoft.Authorization/*/Write",
"Microsoft.Authorization/elevateAccess/Action",
"Microsoft.Blueprint/blueprintAssignments/write",
"Microsoft.Blueprint/blueprintAssignments/delete"
],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/"
]
}
Qualquer definição de função é declarada com o seguinte formato:
{Company}.{ProviderName}/{resourceType}/{action}
A parte das ações normalmente consiste numa das seguintes ações:
- *
- lido
- escrita
- action
- delete
Definir uma função personalizada para gerir VMs
Para ajudá-lo a identificar as permissões a incluir numa definição de função, utilize a lista de operações do fornecedor de recursos do Azure Resource Manager e analise as funções incorporadas do Azure que têm permissões semelhantes às que necessita.
Rever funções incorporadas
Para o nosso cenário, a função interna de Colaborador de Máquina Virtual tem mais permissões do que o funcionário precisa e o Login de Administrador de Máquina Virtual não tem o suficiente.
O seguinte comando da CLI do Azure retorna as permissões para a função interna de Colaborador de Máquina Virtual:
az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'
A lista a seguir exibe as permissões para a função interna de Colaborador de Máquina Virtual:
[
"Microsoft.Authorization/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/locations/*",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.DevTestLab/schedules/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Network/applicationGateways/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatRules/join/action",
"Microsoft.Network/loadBalancers/probes/join/action",
"Microsoft.Network/loadBalancers/read",
"Microsoft.Network/locations/*",
"Microsoft.Network/networkInterfaces/*",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.RecoveryServices/locations/*",
"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
"Microsoft.RecoveryServices/Vaults/backupPolicies/read",
"Microsoft.RecoveryServices/Vaults/backupPolicies/write",
"Microsoft.RecoveryServices/Vaults/read",
"Microsoft.RecoveryServices/Vaults/usages/read",
"Microsoft.RecoveryServices/Vaults/write",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.SqlVirtualMachine/*",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Support/*"
]
Para obter essa lista no PowerShell, execute o seguinte comando:
Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json
Para o nosso cenário, queremos uma função personalizada que permita monitorar e reiniciar máquinas virtuais para uma assinatura específica, portanto, queremos incluir as seguintes ações com escopo no nível da assinatura:
- Acesso de leitura ao computador, rede e recursos de armazenamento
- Capacidade de iniciar e reiniciar máquinas virtuais
- Acesso aos grupos de recurso na subscrição
- Acesso a recursos de monitorização
Há algumas operações na definição de função de Colaborador de Máquina Virtual que podemos usar, como "Microsoft.Insights/alertRules/*"
para monitoramento, mas reiniciar e algumas outras não estão listadas como ações nessa definição de função.
Localizar operações do fornecedor de recursos
Podemos encontrar a ação de reinicialização da VM na lista de operações do provedor de recursos do Azure Resource Manager ou executando o seguinte comando do PowerShell para retornar operações para VMs:
Get-AzProviderOperation */virtualMachines/*
A seguinte operação para reiniciar é retornada na lista:
Operation : Microsoft.Compute/virtualMachines/restart/action
OperationName : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName : Virtual Machines
Description : Restarts the virtual machine
IsDataAction : False
Você pode usar o cmdlet do Azure PowerShell Get-AzProviderOperation
para obter a lista mais atual de operações do provedor de recursos. Na CLI do Azure, utilize o comando az provider operation show
. Você pode encontrar uma lista publicada de provedores de recursos e operações no conteúdo do Azure RBAC no Docs.
Criar uma definição de função de Operador de VM
Vamos supor que escolhemos o que necessitamos ao analisar as definições de funções incorporadas relacionadas e a lista de operações do fornecedor de recursos. Acabamos com a seguinte definição de função para a nossa função personalizada. Vamos utilizar esta definição de função para a nossa função personalizada.
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}