Como usar o controle de acesso baseado em função no Gerenciamento de API do Azure

APLICA-SE A: todas as camadas do Gerenciamento de API

O Gerenciamento de API do Azure depende do RBAC (controle de acesso baseado em função) do Azure para habilitar o gerenciamento de acesso refinado para serviços e entidades de Gerenciamento de API, incluindo workspaces. Este artigo fornece uma visão geral das funções internas e personalizadas no Gerenciamento de API. Para obter mais informações sobre gerenciamento de acesso no Portal do Azure, confira Introdução ao gerenciamento de acesso no portal do Azure.

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Funções de serviço embutidas

Atualmente, o Gerenciamento de API fornece três funções de serviço internas. Essas funções podem ser atribuídas em escopos diferentes, incluindo assinatura, grupo de recursos e instância individual do Gerenciamento de API. Por exemplo, se a função "Leitor de Serviço do Gerenciamento de API" for atribuída a um usuário no nível do grupo de recursos, ele terá acesso de leitura a todas as instâncias do Gerenciamento de API dentro do grupo de recursos.

A tabela a seguir fornece breves descrições das funções internas. Atribua essas funções usando o portal do Azure ou outras ferramentas, incluindo o Azure PowerShell, CLI do Azure e API REST. Para obter detalhes sobre como atribuir funções internas, confira Atribuir funções do Azure para gerenciar o acesso aos recursos de sua assinatura do Azure.

Função Acesso de leitura[1] Acesso de gravação[2] Criação de serviço, exclusão, colocação em escala, VPN e configuração de domínio personalizado Acesso ao portal do editor herdado Descrição
Colaborador de serviço de gerenciamento de API Superusuário. Tem acesso total de CRUD aos serviços e entidades do API Management (por exemplo, APIs e políticas). Tem acesso ao portal do publicador herdado.
Leitor do Serviço de Gerenciamento de API Tem acesso somente leitura aos serviços e entidades do API Management.
Operador do Serviço de Gerenciamento da API Pode gerenciar os serviços de Gerenciamento de API, mas não entidades.

[1] Acesso de leitura aos serviços e entidades do API Management (por exemplo, APIs e políticas).

[2] Acesso de gravação aos serviços e entidades do API Management, exceto as seguintes operações: criação, exclusão e escalonamento de instâncias; configuração de VPN; e configuração de domínio personalizado.

Funções integradas de espaço de trabalho

O Gerenciamento de API fornece as seguintes funções internas para colaboradores nos workspaces em uma instância de Gerenciamento de API.

Um colaborador do workspace deve receber uma função no escopo do workspace e uma função no escopo do serviço.

Função Scope Descrição
Colaborador do Espaço de Trabalho do Gerenciamento de API espaço de trabalho Pode gerenciar o espaço de trabalho e a exibição, mas não pode modificar os membros. Essa função deve ser atribuída no escopo do espaço de trabalho.
Leitor do Workspace do API Management espaço de trabalho Tem acesso somente leitura a entidades no workspace. Essa função deve ser atribuída no escopo da área de trabalho.
Desenvolvedor de API do Workspace do API Management espaço de trabalho Tem acesso de leitura a entidades no workspace e acesso de leitura e gravação a entidades para edição de APIs. Essa função deve ser atribuída no escopo da área de trabalho.
Gerente de Produtos de API do Workspace do API Management espaço de trabalho Tem acesso de leitura a entidades no workspace e acesso de leitura e gravação a entidades para publicação de APIs. Essa função deve ser atribuída no escopo da área de trabalho.
Desenvolvedor de API do Espaço de Trabalho de Serviço de API Management serviço Tem acesso de leitura a marcas e produtos e acesso de gravação para permitir:

▪️ Atribuição de APIs a produtos
▪️ Atribuição de tags a produtos e APIs

Essa função deve ser atribuída no escopo do serviço.
Gerente de Produtos da API do Workspace do Serviço de API Management serviço Tem o mesmo acesso que Desenvolvedor de API do Workspace do Serviço de API Management, bem como acesso de leitura para usuários e acesso de gravação para permitir a atribuição de usuários a grupos. Essa função deve ser atribuída no escopo do serviço.

Dependendo de como os colaboradores do espaço de trabalho usam ou gerenciam o espaço de trabalho, recomendamos também atribuir uma das seguintes funções do RBAC fornecidas pelo Azure no escopo do gateway do espaço de trabalho: Leitor, Colaborador ou Proprietário.

Funções integradas do portal do desenvolvedor

Função Scope Descrição
Editor de Conteúdo do Portal de Gerenciamento de API para Desenvolvedores serviço Pode personalizar o portal do desenvolvedor, editar seu conteúdo e publicá-lo usando as APIs do Azure Resource Manager.

Funções personalizadas

Se nenhuma das funções internas atender às suas necessidades específicas, será possível criar funções personalizadas para fornecer um gerenciamento de acesso mais refinado às entidades do Gerenciamento de API. Por exemplo, você pode criar uma função personalizada que tem acesso somente leitura a um serviço de Gerenciamento de APIs, mas tem acesso de gravação a apenas uma API específica. Para saber mais sobre funções personalizadas, consulte Funções personalizadas no Azure RBAC.

Observação

Para poder ver uma instância de Gerenciamento de API no portal do Azure, uma função personalizada deve incluir a ação Microsoft.ApiManagement/service/read.

Aviso

Não confie na remoção de permissões listSecrets (ou outras */listSecrets/action) para ocultar credenciais de um principal que já tenha acesso de gravação à entidade pai.

Várias entidades de Gerenciamento de API , como back-ends, valores nomeados e provedores de autorização, podem armazenar credenciais (por exemplo, segredos do cliente, chaves de API ou cadeias de conexão). Para impedir que a função Leitor leia essas credenciais, elas são omitidas da resposta padrão GET e expostas somente por meio de uma ação dedicada listSecrets (ou equivalente). Conceder apenas Microsoft.ApiManagement/service/<entityType>/listSecrets/action a uma entidade principal, portanto, protege as credenciais de usuários somente leitura.

No entanto, qualquer entidade principal com acesso de gravação na entidade pode alterar as credenciais armazenadas por meio de uma solicitação PUT ou PATCH, e o corpo da resposta dessas solicitações contém a entidade totalmente atualizada, incluindo as credenciais que acabaram de ser gravadas. Como resultado, reter a ação listSecrets de uma função personalizada que já concede acesso de gravação não impede que essa entidade principal obtenha credenciais — apenas altera qual chamada de API as retorna.

Ao criar uma função personalizada, projete a proteção de credenciais em torno da permissão de gravação na entidade, não em torno de listSecrets. Se uma entidade principal não deve aprender credenciais, não conceda acesso de gravação em entidades que as armazenam.

Ao criar uma função personalizada, é mais fácil começar com uma das funções internas. Edite os atributos para adicionar Actions, NotActions ou AssignableScopes, então salve as alterações como uma nova função. O exemplo a seguir começa com a função "Leitor de Serviço do Gerenciamento de API" e cria uma função personalizada chamada "Editor de API da Calculadora". Você pode atribuir a função personalizada no escopo de uma API específica. Consequentemente, essa função só tem acesso a aquela API.

$role = Get-AzRoleDefinition "API Management Service Reader Role"
$role.Id = $null
$role.Name = 'Calculator API Contributor'
$role.Description = 'Has read access to Contoso APIM instance and write access to the Calculator API.'
$role.Actions.Add('Microsoft.ApiManagement/service/apis/write')
$role.Actions.Add('Microsoft.ApiManagement/service/apis/*/write')
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add('/subscriptions/<Azure subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ApiManagement/service/<APIM service instance name>/apis/<API name>')
New-AzRoleDefinition -Role $role
New-AzRoleAssignment -ObjectId <object ID of the user account> -RoleDefinitionName 'Calculator API Contributor' -Scope '/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ApiManagement/service/<APIM service instance name>/apis/<API name>'

O artigo Operações do provedor de recursos do Azure Resource Manager contém a lista de permissões que podem ser concedidas no nível de Gerenciamento de API.

Saiba mais sobre o controle de acesso baseado em função no Azure, consulte os seguintes artigos: