Atribuir funções do Azure usando a API REST
O RBAC (controle de acesso baseado em função) do Azure é o sistema de autorização usado para gerenciar o acesso aos recursos no Azure. Para conceder acesso, você atribui funções a usuários, grupos, entidades de serviço ou identidades gerenciadas em um determinado escopo. Este artigo descreve como atribuir funções usando a API REST.
Pré-requisitos
Para atribuir funções do Azure, você precisa ter:
Microsoft.Authorization/roleAssignments/write
permissões, como Administrador de Controle de Acesso Baseado em Função ou Administrador de Acesso de Usuário
Você deve usar as versões a seguir:
2015-07-01
ou posterior para atribuir uma função do Azure2018-09-01-preview
ou posterior para atribuir uma função do Azure a uma nova entidade de serviço
Para obter mais informações, consulte as Versões da API das APIs REST do RBAC do Azure.
Atribuir uma função do Azure
Para criar uma atribuição de função, use a Atribuições de Função - Criar da a API REST e especifique a entidade de segurança, definição de função e escopo. Para chamar essa API, você deve ter acesso à ação, como Administrador de Microsoft.Authorization/roleAssignments/write
Controle de Acesso Baseado em Função.
Use a API REST Definições de Função - Listar ou veja as Funções internas para obter o identificador da definição de função que você deseja atribuir.
Use uma ferramenta GUID para gerar um identificador exclusivo que será usado para atribuição de função personalizada. O identificador tem o formato:
00000000-0000-0000-0000-000000000000
Comece com a solicitação e corpo a seguir:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{ "properties": { "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "principalId": "{principalId}" } }
Dentro do URI, substitua {scope} pelo escopo da atribuição de função.
Escopo Tipo providers/Microsoft.Management/managementGroups/{groupId1}
Grupo de gerenciamento subscriptions/{subscriptionId1}
Subscription subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1
Recurso No exemplo anterior, microsoft.web é um provedor de recursos que se refere a uma instância do Serviço de Aplicativo. Da mesma forma, você pode usar qualquer outro provedor de recursos e especificar o escopo. Para obter mais informações, consulte provedores de recursos e tipos do Azure e operações do provedor de recursos do Azurecom suporte.
Substitua {roleAssignmentId} pelo identificador GUID da atribuição de função.
No corpo da solicitação, substitua {scope} pelo mesmo escopo que no URI.
Substitua {roleDefinitionId} pelo identificador de definição da função.
Substitua {principalId} com o identificador de objeto do usuário, grupo ou entidade de serviço que receberá a função.
A solicitação e o corpo a seguir atribui a função de leitor de backup a um usuário no escopo da assinatura:
PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
"properties": {
"roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
"principalId": "{objectId1}"
}
}
O texto a seguir mostra um exemplo da saída:
{
"properties": {
"roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
"principalId": "{objectId1}",
"principalType": "User",
"scope": "/subscriptions/{subscriptionId1}",
"condition": null,
"conditionVersion": null,
"createdOn": "2022-05-06T23:55:23.7679147Z",
"updatedOn": "2022-05-06T23:55:23.7679147Z",
"createdBy": null,
"updatedBy": "{updatedByObjectId1}",
"delegatedManagedIdentityResourceId": null,
"description": null
},
"id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
"type": "Microsoft.Authorization/roleAssignments",
"name": "{roleAssignmentId1}"
}
Nova entidade de serviço
Se você criar uma entidade de serviço e tentar atribuir uma função imediatamente a essa entidade de serviço, essa atribuição de função poderá falhar em alguns casos. Por exemplo, se você criar uma identidade gerenciada e tentar atribuir uma função a ela, a atribuição de função poderá falhar. Provavelmente, o motivo dessa falha é um atraso de replicação. A entidade de serviço é criada em uma região; no entanto, a atribuição de função pode ocorrer em uma região diferente que ainda não tenha replicado a entidade de serviço.
Para resolver esse cenário, use a API REST de Atribuições de função – Criar e defina a propriedade principalType
como ServicePrincipal
. Além disso, defina a apiVersion
como 2018-09-01-preview
ou posterior. 2022-04-01
é a primeira versão estável.
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
"properties": {
"roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
"principalId": "{principalId}",
"principalType": "ServicePrincipal"
}
}