Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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. Assim como as funções internas, você pode atribuir funções personalizadas a usuários, grupos e entidades de serviço nos escopos de grupo de gerenciamento, assinatura e grupo de recursos.
As funções personalizadas podem ser partilhadas entre subscrições que confiam no mesmo inquilino do Microsoft Entra. Há um limite de 5.000 funções personalizadas por locatário. (Para o Microsoft Azure operado pela 21Vianet, o limite é de 2.000 funções personalizadas.) As funções personalizadas podem ser criadas usando o portal do Azure, o Azure PowerShell, a CLI do Azure ou a API REST.
Etapas para criar uma função personalizada
Aqui estão as etapas básicas para criar uma função personalizada.
Determine as permissões necessárias.
Ao criar uma função personalizada, você precisa saber as ações disponíveis para definir suas permissões. Normalmente, você começa com uma função interna existente e, em seguida, modifica-a de acordo com suas necessidades. Você adicionará as ações às
Actions
ouNotActions
propriedades da definição de função. Se tiver ações de dados, irá adicioná-las às propriedadesDataActions
ouNotDataActions
.Para obter mais informações, consulte a próxima seção Como determinar as permissões necessárias.
Decida como deseja criar a função personalizada.
Você pode criar funções personalizadas usando o portal do Azure, o Azure PowerShell, a CLI do Azure ou a API REST.
Crie a função personalizada.
A maneira mais fácil é usar o portal do Azure. Para obter etapas sobre como criar uma função personalizada usando o portal do Azure, consulte Criar ou atualizar funções personalizadas do Azure usando o portal do Azure.
Teste a função personalizada.
Depois de ter sua função personalizada, você precisa testá-la para verificar se ela funciona como esperado. Se precisar fazer ajustes mais tarde, você pode atualizar a função personalizada.
Como determinar as permissões de que precisa
O Azure tem milhares de permissões que você pode incluir em sua função personalizada. Aqui estão alguns métodos que podem ajudá-lo a determinar as permissões que você desejará adicionar à sua função personalizada:
Consulte os papéis internos existentes.
Talvez você queira modificar uma função existente ou combinar permissões usadas em várias funções.
Liste os serviços do Azure aos quais você deseja conceder acesso.
Determine os provedores de recursos que correspondem aos serviços do Azure.
Os serviços do Azure expõem suas funcionalidades e permissões por meio de provedores de recursos. Por exemplo, o provedor de recursos Microsoft.Compute fornece recursos de máquina virtual e o provedor de recursos Microsoft.Billing fornece recursos de assinatura e cobrança. Conhecer os provedores de recursos pode ajudá-lo a restringir e determinar as permissões necessárias para sua função personalizada.
Ao criar uma função personalizada usando o portal do Azure, você também pode determinar os provedores de recursos pesquisando palavras-chave. Essa funcionalidade de pesquisa é descrita em Criar ou atualizar funções personalizadas do Azure usando o portal do Azure.
Pesquise as permissões disponíveis para encontrar as permissões que deseja incluir.
Ao criar uma função personalizada usando o portal do Azure, você pode pesquisar permissões por palavra-chave. Por exemplo, você pode pesquisar por máquina virtual ou permissões de cobrança. Você também pode baixar todas as permissões como um arquivo CSV e, em seguida, pesquisar esse arquivo. Essa funcionalidade de pesquisa é descrita em Criar ou atualizar funções personalizadas do Azure usando o portal do Azure.
Exemplo de função personalizada
A seguir mostra a aparência de uma função personalizada conforme exibida usando o Azure PowerShell no formato JSON. Essa função personalizada pode ser usada para monitorar e reiniciar máquinas virtuais.
{
"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.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}",
"/subscriptions/{subscriptionId2}",
"/providers/Microsoft.Management/managementGroups/{groupId1}"
]
}
A seguir mostra a mesma função personalizada exibida usando a CLI do Azure.
[
{
"assignableScopes": [
"/subscriptions/{subscriptionId1}",
"/subscriptions/{subscriptionId2}",
"/providers/Microsoft.Management/managementGroups/{groupId1}"
],
"description": "Can monitor and restart virtual machines.",
"id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/88888888-8888-8888-8888-888888888888",
"name": "88888888-8888-8888-8888-888888888888",
"permissions": [
{
"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.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"roleName": "Virtual Machine Operator",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
]
Propriedades da função personalizada
A tabela a seguir descreve o significado das propriedades da função personalizada.
Propriedade | Necessário | Tipo | Descrição |
---|---|---|---|
Name roleName |
Sim | String | O nome para exibição da função personalizada. Embora uma definição de função seja um recurso de grupo de gestão ou de nível de assinatura, pode ser utilizada em várias assinaturas que partilham o mesmo inquilino do Microsoft Entra. Este nome para exibição deve ser exclusivo no âmbito do inquilino do Microsoft Entra. Pode incluir letras, números, espaços e caracteres especiais. Máximo recomendado: 256 caracteres. |
Id name |
Sim | Corda | O ID exclusivo da função personalizada. Para o Azure PowerShell e a CLI do Azure, essa ID é gerada automaticamente quando você cria uma nova função. |
IsCustom roleType |
Sim | String | Indica se essa é uma função personalizada. Defina como true ou CustomRole para funções personalizadas. Defina como false ou BuiltInRole para funções internas. |
Description description |
Sim | String | A descrição da função personalizada. Pode incluir letras, números, espaços e caracteres especiais. Máximo recomendado: 512 caracteres. |
Actions actions |
Sim | Cadeia[] | Uma matriz de cadeias de caracteres que especifica as ações do plano de controle que a função permite que sejam executadas. Para obter mais informações, consulte Ações. |
NotActions notActions |
Não | String[] | Uma matriz de cadeias de caracteres que especifica as ações do plano de controle que são excluídas do permitido Actions . Para obter mais informações, consulte NotActions. |
DataActions dataActions |
Não | String[] | Uma matriz de cadeias de caracteres que especifica as ações do plano de dados que a função permite executar nos seus dados neste objeto. Se criar uma função personalizada com DataActions , essa função não poderá ser atribuída no âmbito do grupo de gestão. Para obter mais informações, consulte DataActions. |
NotDataActions notDataActions |
Não | String[] | Uma matriz de cadeias de caracteres que especifica as ações do plano de dados que estão fora do permitido DataActions . Para obter mais informações, consulte NotDataActions. |
AssignableScopes assignableScopes |
Sim | Cadeia[] | Uma matriz de cadeias de caracteres que especifica os escopos para os quais a função personalizada está disponível para atribuição. O número máximo de AssignableScopes é 2.000. Para obter mais informações, consulte AssignableScopes. |
As cadeias de caracteres de permissão não são sensíveis a maiúsculas e minúsculas. Quando você cria suas funções personalizadas, a convenção é corresponder ao caso que você vê para permissões nas operações do provedor de recursos do Azure.
Permissões de carateres universais
Actions
, NotActions
, DataActions
e NotDataActions
suportam curingas (*
) para definir permissões. Um curinga (*
) estende uma permissão para tudo o que corresponde à sequência de caracteres de ação fornecida. Por exemplo, suponha que pretenda adicionar todas as permissões relacionadas ao Azure Cost Management e às exportações. Você pode adicionar todas estas sequências de ação:
Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action
Em vez de adicionar todas essas cadeias de caracteres, você pode simplesmente adicionar uma cadeia de caracteres curinga. Por exemplo, a cadeia de caracteres curinga a seguir é equivalente às cinco cadeias de caracteres anteriores. Isso também incluiria quaisquer permissões de exportação futuras que possam ser adicionadas.
Microsoft.CostManagement/exports/*
Nota
É recomendável especificar Actions
e DataActions
explicitamente em vez de usar o caractere curinga (*
). O acesso adicional e as permissões concedidas no futuro Actions
ou DataActions
podem constituir um comportamento indesejado devido ao uso de wildcards.
Quem pode criar, eliminar, atualizar ou ver uma função personalizada
Assim como as funções internas, a AssignableScopes
propriedade especifica os escopos que a função está disponível para atribuição. A AssignableScopes
propriedade de uma função personalizada também controla quem pode criar, excluir, atualizar ou exibir a função personalizada.
Tarefa | Ação | Descrição |
---|---|---|
Criar/excluir uma função personalizada | Microsoft.Authorization/ roleDefinitions/write |
Os utilizadores que recebem esta ação em todas AssignableScopes as funções personalizadas podem criar (ou excluir) funções personalizadas para uso nesses âmbitos. Por exemplo, Proprietários e Administradores de Acesso de Utilizador dos grupos de gestão, assinaturas e grupos de recursos. |
Atualizar uma função personalizada | Microsoft.Authorization/ roleDefinitions/write |
Os utilizadores que têm essa ação atribuída a todas as AssignableScopes das funções personalizadas podem atualizar as funções personalizadas nesses âmbitos. Por exemplo, Proprietários e Administradores de Acesso de Utilizador de grupos de gestão, subscrições e grupos de recursos. |
Exibir uma função personalizada | Microsoft.Authorization/ roleDefinitions/read |
Os usuários que recebem essa ação em um escopo podem exibir as funções personalizadas que estão disponíveis para atribuição nesse escopo. Todas as funções incorporadas permitem que as funções personalizadas estejam disponíveis para atribuição. |
Nota
Mesmo que uma função seja renomeada, a ID da função não é alterada. Se você estiver usando scripts ou automação para criar suas atribuições de função, é uma prática recomendada usar o ID de função exclusivo em vez do nome da função. Portanto, se uma função for renomeada, é mais provável que seus scripts funcionem.
Localizar atribuições de função para excluir uma função personalizada
Antes de excluir uma função personalizada, você deve remover todas as atribuições de função que usam a função personalizada. Se você tentar excluir uma função personalizada com atribuições de função, receberá a mensagem: There are existing role assignments referencing role (code: RoleDefinitionHasAssignments)
.
Aqui estão as etapas para ajudar a localizar as atribuições de função antes de excluir uma função personalizada:
- Liste a definição de função personalizada.
- Na seção AssignableScopes, obtenha os grupos de gerenciamento, assinaturas e grupos de recursos.
- Itere sobre o
AssignableScopes
e liste as atribuições de função. - Remova as atribuições da função que usam a função personalizada.
- Se você estiver usando o Microsoft Entra Privileged Identity Management, remova as atribuições de função personalizadas qualificadas.
- Exclua a função personalizada.
Para obter informações sobre como localizar funções personalizadas não utilizadas, consulte Sintoma - Não é possível criar mais definições de função.
Limites da função personalizada
A lista a seguir descreve os limites para funções personalizadas.
- Cada locatário pode ter até 5000 funções personalizadas.
- O Microsoft Azure operado pela 21Vianet pode ter até 2000 funções personalizadas para cada locatário.
- Não é possível definir
AssignableScopes
para o escopo raiz ("/"
). - Não é possível usar curingas (
*
) emAssignableScopes
. Esta restrição a wildcards ajuda a garantir que um utilizador não possa potencialmente obter acesso a uma abrangência ao atualizar a definição de função. - Você pode ter apenas um caráter coringa numa string de ação.
- Pode definir apenas um grupo de gestão em
AssignableScopes
de uma função personalizada. - O Azure Resource Manager não valida a existência do grupo de gerenciamento na definição de
AssignableScopes
função. - As funções personalizadas com
DataActions
não podem ser atribuídas no âmbito do grupo de gestão. - Você pode criar uma função personalizada com
DataActions
e um grupo de gerenciamento noAssignableScopes
. Não é possível atribuir a função personalizada no próprio escopo do grupo de gerenciamento; No entanto, você pode atribuir a função personalizada no escopo das assinaturas dentro do grupo de gerenciamento. Isso pode ser útil se você precisar criar uma única função personalizada comDataActions
a qual precisa ser atribuída em várias assinaturas, em vez de criar uma função personalizada separada para cada assinatura.
Para obter mais informações sobre as funções personalizadas e os grupos de gestão, veja O que são grupos de gestão do Azure?.
Formatos de entrada e saída
Para criar uma função personalizada usando a linha de comando, normalmente você usa JSON para especificar as propriedades desejadas para a função personalizada. Dependendo das ferramentas que você usa, os formatos de entrada e saída serão ligeiramente diferentes. Esta seção lista os formatos de entrada e saída, dependendo da ferramenta.
Azure PowerShell
Para criar uma função personalizada usando o Azure PowerShell, você deve fornecer a seguinte entrada.
{
"Name": "",
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
Para atualizar uma função personalizada usando o Azure PowerShell, você deve fornecer a seguinte entrada. Observe que a Id
propriedade foi adicionada.
{
"Name": "",
"Id": "",
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
A seguir mostra um exemplo da saída quando você lista uma função personalizada usando o Azure PowerShell e o comando ConvertTo-Json .
{
"Name": "",
"Id": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
CLI do Azure
Para criar ou atualizar uma função personalizada usando a CLI do Azure, você deve fornecer a seguinte entrada. Esse formato é o mesmo quando você cria uma função personalizada usando o Azure PowerShell.
{
"Name": "",
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
A seguir mostra um exemplo da saída quando você lista uma função personalizada usando a CLI do Azure.
[
{
"assignableScopes": [],
"description": "",
"id": "",
"name": "",
"permissions": [
{
"actions": [],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"roleName": "",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
]
API REST
Para criar ou atualizar uma função personalizada usando a API REST, você deve fornecer a seguinte entrada. Esse formato é o mesmo que é gerado quando você cria uma função personalizada usando o portal do Azure.
{
"properties": {
"roleName": "",
"description": "",
"assignableScopes": [],
"permissions": [
{
"actions": [],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
A seguir mostra um exemplo da saída quando você lista uma função personalizada usando a API REST.
{
"properties": {
"roleName": "",
"type": "CustomRole",
"description": "",
"assignableScopes": [],
"permissions": [
{
"actions": [],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
],
"createdOn": "",
"updatedOn": "",
"createdBy": "",
"updatedBy": ""
},
"id": "",
"type": "Microsoft.Authorization/roleDefinitions",
"name": ""
}