Utilizar funções para controlar o acesso aos recursos

Concluído

Funções incorporadas para Recursos do Azure (utiliza o PowerShell)

O Azure fornece várias funções internas para cobrir os cenários de segurança mais comuns. Para compreender como funcionam as funções, vamos analisar três funções que se aplicam a todos os tipos de recursos:

  • Proprietário: Tem acesso total a todos os recursos, incluindo o direito de delegar acesso a outros.
  • Colaborador: pode criar e gerenciar todos os tipos de recursos do Azure, mas não pode conceder acesso a outros.
  • Leitor: pode exibir recursos existentes do Azure.

Definições de função

Cada função é um conjunto de propriedades definido num ficheiro JSON (JavaScript Object Notation). Esta definição de função inclui um Nome, um ID e uma Descrição. Inclui também as permissões autorizadas (Actions), permissões recusadas (NotActions) e âmbito (por exemplo, acesso de leitura) para a função.

Para a função Proprietário, isso significa todas as ações, indicadas por um asterisco (*); nenhuma ação recusada; e todos os âmbitos, indicados por uma barra (/).

Pode obter estas informações com o cmdlet Get-AzRoleDefinition Owner do PowerShell.

Get-AzRoleDefinition Owner

Este código deverá produzir o seguinte resultado:

Name             : Owner
Id               : 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
IsCustom         : False
Description      : Lets you manage everything, including access to resources.
Actions          : {*}
NotActions       : {}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/}

Experimente o mesmo para as funções Contribuidor e Leitor para ver as ações permitidas e recusadas.

Funções incorporadas

Para obter um exame aprofundado do RBAC e das funções de usuário no Microsoft Entra ID, consulte Examinar o RBAC e as funções de usuário no Microsoft Entra ID.

O que é uma definição de função?

Uma definição de função é uma coleção de permissões. Uma definição de função lista as operações que a função pode executar, como leitura, gravação e exclusão. Pode também listar as operações que não podem ser efetuadas ou operações relacionadas a dados subjacentes.

Como descrito anteriormente, uma definição de função tem a seguinte estrutura:

Nome Descrição
Id Identificador exclusivo para a função, atribuído pelo Azure
IsCustom True se uma função personalizada, False se uma função interna
Description Uma descrição legível da função
Actions [] Permissões permitidas; * indica tudo
NotActions [] Permissões negadas
DataActions [] Permissões autorizadas específicas conforme aplicadas aos dados, por exemplo Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
NotDataActions [] Permissões recusadas específicas, conforme aplicadas aos dados.
AssignableScopes [] Âmbitos de aplicação desta função; / indica global, mas pode chegar a uma árvore hierárquica

Esta estrutura é representada como JSON quando utilizada no controlo de acesso baseado em funções (RBAC) ou da API subjacente. Por exemplo, aqui está a definição de função Contribuidor no formato JSON.

{
  "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"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Actions e NotActions

Pode personalizar as propriedades Actions e NotActions para conceder e recusar as permissões exatas necessárias. Estas propriedades estão sempre no seguinte formato: {Company}.{ProviderName}/{resourceType}/{action}.

Como exemplo, aqui estão as ações para as três funções que analisamos anteriormente:

Função Incorporada Ações NotActions
Proprietário (permitir todas as ações) * -
Contribuidor (permitir todas as ações, exceto escrever ou eliminar atribuições de função) * Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write, Microsoft.Authorization/elevateAccess/Action
Leitor (permitir todas as ações de leitura) */read -

A operação curinga (*) indica Actions que a entidade atribuída a essa função pode executar todas as ações, ou seja, essa função pode gerenciar tudo, incluindo ações definidas no futuro à medida que novos tipos de recursos são adicionados ao Azure. No caso da função Leitor, apenas a ação read é permitida.

As operações em NotActions são subtraídas de Actions. Com a função de Colaborador , NotActions remove a capacidade dessa função de gerenciar o acesso a recursos e também remove a atribuição de acesso a recursos.

DataActions e NotDataActions

As operações de dados são especificadas nas propriedades DataActions e NotDataActions. Você pode especificar operações de dados separadamente das operações de gerenciamento. Tal impede que as atribuições de função atuais com carateres universais (*) tenham, de repente, acesso aos dados. Aqui estão algumas operações de dados que você pode especificar em DataActions e NotDataActions:

  • Ler uma lista de blobs num contentor
  • Escrever um blob de armazenamento num contentor
  • Eliminar uma mensagem numa fila

Você só pode adicionar operações de DataActions dados às propriedades e NotDataActions . Os fornecedores de recursos identificam que operações são operações de dados ao definirem a propriedade isDataAction como true. As funções que não têm operações de dados podem omitir essas propriedades da definição de função.

Estas ações funcionam exatamente como as operações de gestão. Você pode especificar as ações que deseja permitir (ou * para todas) e, em seguida, fornecer uma lista de ações específicas a serem removidas na NotDataActions coleção. Eis alguns exemplos; Você pode encontrar a lista completa de ações e ações de dados na documentação do Provedor de Recursos:

Operação de dados Description
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete Eliminar dados de blob
Microsoft.Compute/virtualMachines/login/action Iniciar sessão numa VM como utilizador normal
Microsoft.EventHub/namespaces/messages/send/action Enviar mensagens num hub de eventos
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read Devolver um ficheiro/pasta ou lista de ficheiros/pastas
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read Ler uma mensagem de uma fila

Âmbitos Atribuíveis

Definir as propriedades Actions e NotActions não é suficiente para implementar totalmente uma função. Também precisa de definir corretamente o âmbito da sua função.

A propriedade AssignableScopes da função especifica os âmbitos (subscrições, grupos de recursos ou recursos) dentro dos quais a função está disponível para atribuição. Pode tornar a função personalizada disponível para atribuição apenas nas subscrições ou grupos de recursos que precisam da mesma e, assim evitar sobrecarregar a experiência do utilizador para as restantes subscrições ou grupos de recursos.

Seguem-se alguns exemplos:

Para Utilizar o Âmbito
Restringir a uma subscrição "/subscriptions/{sub-id}"
Restringir a um grupo de recursos específico em uma assinatura específica "/subscriptions/{sub-id}/resourceGroups/{rg-name}"
Restringir a um recurso específico "/subscriptions/{sub-id}/resourceGroups/{rg-name}/{resource-name}"
Disponibilizar uma função para atribuição em duas subscrições "/subscriptions/{sub-id}", "/subscriptions/{sub-id}"

Criar funções

O Microsoft Entra ID vem com funções internas que provavelmente cobrirão 99% do que você vai querer fazer. É preferível usar uma função interna, se possível. No entanto, pode criar funções personalizadas, se achar necessário.

Nota

A criação de funções personalizadas requer o Microsoft Entra ID P1 ou P2; Não é possível criar funções personalizadas no nível gratuito.

Você pode criar uma nova função através de vários mecanismos:

  • Centro de administração do Microsoft Entra: você pode usar o centro de administração do Microsoft Entra para criar uma função personalizada selecionando Funções & administradores em Funções & administradores no menu esquerdo e, em seguida, selecionando Nova função personalizada.

  • Portal do Azure: você pode usar o portal do Azure para criar uma função personalizada selecionando Funções de ID>do Microsoft Entra e administradores>Nova função personalizada.

  • Azure PowerShell: você pode usar o New-AzRoleDefinition cmdlet para definir uma nova função.

  • Azure Graph API: Você pode usar uma chamada REST para a API do Graph para criar programaticamente uma nova função.

A seção Resumo deste módulo inclui um link para a documentação dessas abordagens.

Verifique o seu conhecimento

1.

Que informações fornece uma Action numa definição de função?

2.

Qual das seguintes opções define o âmbito de uma função como o grupo de recursos myResourceGroup?

3.

De que forma são as NotActions utilizadas numa definição de função?