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 Azure RBAC (controle de acesso baseado em função do Azure) para habilitar o gerenciamento de acesso refinado de serviços e entidades de Gerenciamento de API (por exemplo, APIs e políticas). 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 internas

No momento, o Gerenciamento de API oferece três funções internas e adicionará outras duas funções em breve. 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 Gerenciamento de API (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 Gerenciamento de API.
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 a serviços e entidades de Gerenciamento de API (por exemplo, APIs e políticas).

[2] Acesso de gravação aos serviços e entidades do Gerenciamento de API, exceto pelas seguintes operações: criação, exclusão e colocação em escala de instância; configuração de VPN; e configuração de nome de domínio personalizado.

Funções de workspace internas

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 Escopo Descrição
Colaborador do Workspace do Gerenciamento de API workspace Pode gerenciar o workspace e a exibição, mas não pode modificar os membros. Essa função deve ser atribuída no escopo do workspace.
Leitor do Workspace do Gerenciamento de API workspace Tem acesso somente leitura a entidades no workspace. Essa função deve ser atribuída no escopo do workspace.
Desenvolvedor de API do Workspace do Gerenciamento de API workspace 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 do workspace.
Gerente de Produtos de API do Workspace do Gerenciamento de API workspace 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 do workspace.
Desenvolvedor de API do Espaço de Trabalho de Serviço de Gerenciamento de API 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 Gerenciamento de API serviço Tem o mesmo acesso que Desenvolvedor de API do Workspace do Serviço de Gerenciamento de API, 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 internas do portal do desenvolvedor

Função Escopo Descrição
Editor de conteúdo do Portal do Desenvolvedor de Gerenciamento de API 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 do Gerenciamento de API, mas que somente tem acesso de gravação a 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.

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.

Próximas etapas

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