O que é o RBAC (controle de acesso baseado em função) para recursos do Azure?What is role-based access control (RBAC) for Azure resources?

O gerenciamento de acesso para recursos de nuvem é uma função crítica para qualquer organização que esteja usando a nuvem.Access management for cloud resources is a critical function for any organization that is using the cloud. O controle de acesso baseado em funções (RBAC) ajuda a gerenciar quem tem acesso aos recursos do Azure, o que pode fazer com esses recursos e a quais áreas tem acesso.Role-based access control (RBAC) helps you manage who has access to Azure resources, what they can do with those resources, and what areas they have access to.

O RBAC é um sistema de autorização baseado no Azure Resource Manager que fornece gerenciamento de acesso refinado dos recursos do Azure.RBAC is an authorization system built on Azure Resource Manager that provides fine-grained access management of Azure resources.

O que posso fazer com o RBAC?What can I do with RBAC?

Aqui estão alguns exemplos do que você pode fazer com o RBAC:Here are some examples of what you can do with RBAC:

  • Permitir que um usuário gerencie máquinas virtuais em uma assinatura e outro usuário gerencie redes virtuaisAllow one user to manage virtual machines in a subscription and another user to manage virtual networks
  • Permitir que um grupo de DBA gerencie bancos de dados SQL em uma assinaturaAllow a DBA group to manage SQL databases in a subscription
  • Permitir que um usuário gerencie todos os recursos em um grupo de recursos, como máquinas virtuais, sites e sub-redesAllow a user to manage all resources in a resource group, such as virtual machines, websites, and subnets
  • Permitir que um aplicativo acesse todos os recursos em um grupo de recursosAllow an application to access all resources in a resource group

Melhor prática para uso do RBACBest practice for using RBAC

Com o RBAC, você pode separar as tarefas dentro de sua equipe e conceder somente a quantidade de acesso que os usuários precisam para realizar seus trabalhos.Using RBAC, you can segregate duties within your team and grant only the amount of access to users that they need to perform their jobs. Em vez de apresentar todos irrestrito permissões em sua assinatura do Azure ou recursos, você pode permitir apenas determinadas ações para um escopo específico.Instead of giving everybody unrestricted permissions in your Azure subscription or resources, you can allow only certain actions at a particular scope.

Ao planejar sua estratégia de controle de acesso, uma melhor prática é conceder aos usuários o privilégio mínimo para realizarem seus trabalhos.When planning your access control strategy, it's a best practice to grant users the least privilege to get their work done. O diagrama a seguir mostra um padrão sugerido para o uso de RBAC.The following diagram shows a suggested pattern for using RBAC.

RBAC e privilégio mínimo

Como funciona o RBACHow RBAC works

A maneira de controlar o acesso aos recursos usando RBAC é criar atribuições de função.The way you control access to resources using RBAC is to create role assignments. Esse é um conceito fundamental que deve ser entendido, isto é, como as permissões são aplicadas.This is a key concept to understand – it’s how permissions are enforced. Uma atribuição de função consiste em três elementos: entidade de segurança, definição de função e escopo.A role assignment consists of three elements: security principal, role definition, and scope.

Entidade de segurançaSecurity principal

Uma entidade de segurança é um objeto que representa um usuário, grupo, entidade de serviço ou uma identidade gerenciada que está solicitando acesso aos recursos do Azure.A security principal is an object that represents a user, group, service principal, or managed identity that is requesting access to Azure resources.

Entidade de segurança para uma atribuição de função

  • Usuário – Um indivíduo que tem um perfil no Azure Active Directory.User - An individual who has a profile in Azure Active Directory. Você também pode atribuir funções a usuários em outros locatários.You can also assign roles to users in other tenants. Para obter informações sobre usuários de outras organizações, consulte Azure Active Directory B2B.For information about users in other organizations, see Azure Active Directory B2B.
  • Grupo - Um grupo de usuários criados no Azure Active Directory.Group - A set of users created in Azure Active Directory. Quando você atribuir uma função a um grupo, todos os usuários dentro desse grupo têm essa função.When you assign a role to a group, all users within that group have that role.
  • Entidade de serviço - Uma identidade de segurança usada por aplicativos ou serviços para acessar recursos específicos do Azure.Service principal - A security identity used by applications or services to access specific Azure resources. Você pode pensar nela como uma identidade do usuário (nome de usuário e senha ou certificado) para um aplicativo.You can think of it as a user identity (username and password or certificate) for an application.
  • Identidade gerenciada - uma identidade no Azure Active Directory que é gerenciada automaticamente pelo Azure.Managed identity - An identity in Azure Active Directory that is automatically managed by Azure. Normalmente, você usa identidades gerenciadas durante o desenvolvimento de aplicativos em nuvem para gerenciar as credenciais de autenticação nos serviços do Azure.You typically use managed identities when developing cloud applications to manage the credentials for authenticating to Azure services.

Definição de funçãoRole definition

Uma definição de função é um conjunto de permissões.A role definition is a collection of permissions. Às vezes, é chamada apenas de função.It's sometimes just called a role. Uma definição de função lista as operações que podem ser executadas, como leitura, gravação e exclusão.A role definition lists the operations that can be performed, such as read, write, and delete. Funções podem ser de alto nível, como proprietário, ou específicas, como leitor de máquina virtual.Roles can be high-level, like owner, or specific, like virtual machine reader.

Definição de função para uma atribuição de função

O Azure inclui várias funções internas que você pode usar.Azure includes several built-in roles that you can use. A seguir são listadas quatro funções internas fundamentais.The following lists four fundamental built-in roles. As três primeiras se aplicam a todos os tipos de recursos.The first three apply to all resource types.

  • Proprietário - Possui acesso total a todos os recursos, inclusive o direito de delegar acesso a outros usuários.Owner - Has full access to all resources including the right to delegate access to others.
  • Colaborador - Pode criar e gerenciar todos os tipos de recursos do Azure, mas não pode conceder acesso a outras pessoas.Contributor - Can create and manage all types of Azure resources but can’t grant access to others.
  • Leitor - Pode exibir os recursos existentes do Azure.Reader - Can view existing Azure resources.
  • Administrador de Acesso do Usuário - Permite gerenciar o acesso do usuário aos recursos do Azure.User Access Administrator - Lets you manage user access to Azure resources.

As demais funções internas permitem o gerenciamento de recursos específicos do Azure.The rest of the built-in roles allow management of specific Azure resources. Por exemplo, a função Colaborador de Máquina Virtual permite que um usuário crie e gerencie máquinas virtuais.For example, the Virtual Machine Contributor role allows a user to create and manage virtual machines. Se as funções internas não atenderem às necessidades específicas de sua organização, você poderá criar suas próprias funções personalizadas para recursos do Azure.If the built-in roles don't meet the specific needs of your organization, you can create your own custom roles for Azure resources.

O Azure introduziu as operações de dados (atualmente em versão prévia) que permitem que você conceda acesso a dados dentro de um objeto.Azure has introduced data operations (currently in preview) that enable you to grant access to data within an object. Por exemplo, se um usuário tem acesso de leitura de dados para uma conta de armazenamento, eles podem ler blobs ou mensagens dentro dessa conta de armazenamento.For example, if a user has read data access to a storage account, then they can read the blobs or messages within that storage account. Para obter mais informações, confira Noções básicas sobre definições de função para recursos do Azure.For more information, see Understand role definitions for Azure resources.

EscopoScope

Escopo é o conjunto de recursos ao qual o acesso se aplica.Scope is the set of resources that the access applies to. Quando você atribui uma função, você pode limitar ainda mais as ações permitidas definindo um escopo.When you assign a role, you can further limit the actions allowed by defining a scope. Isso será útil se você quiser tornar alguém um colaborador do site, mas apenas para um grupo de recursos.This is helpful if you want to make someone a Website Contributor, but only for one resource group.

No Azure, você pode especificar um escopo em vários níveis: grupo de gerenciamento, assinatura, grupo de recursos ou recurso.In Azure, you can specify a scope at multiple levels: management group, subscription, resource group, or resource. Os escopos são estruturados em uma relação pai-filho.Scopes are structured in a parent-child relationship.

Escopo para uma atribuição de função

Quando você concede acesso a um escopo pai, essas permissões são herdadas pelos escopos filho.When you grant access at a parent scope, those permissions are inherited to the child scopes. Por exemplo:For example:

  • Se você atribuir a função Proprietário a um usuário no escopo do grupo de gerenciamento, esse usuário poderá gerenciar tudo em todas as assinaturas no grupo de gerenciamento.If you assign the Owner role to a user at the management group scope, that user can manage everything in all subscriptions in the management group.
  • Se você atribuir a função Leitor função a um grupo no escopo da assinatura, os membros desse grupo pode exibir todos os grupo de recursos e recursos na assinatura.If you assign the Reader role to a group at the subscription scope, the members of that group can view every resource group and resource in the subscription.
  • Se você atribuir a função Colaborador a um aplicativo no escopo do grupo de recursos, ele pode gerenciar recursos de todos os tipos nesse mesmo grupo de recursos, mas não em outros grupos de recursos na assinatura.If you assign the Contributor role to an application at the resource group scope, it can manage resources of all types in that resource group, but not other resource groups in the subscription.

Atribuições de funçãoRole assignments

Uma atribuição de função é o processo de associar uma definição de função a um usuário, grupo, entidade de serviço ou identidade gerenciada em um escopo específico com a finalidade de conceder acesso.A role assignment is the process of attaching a role definition to a user, group, service principal, or managed identity at a particular scope for the purpose of granting access. O acesso é concedido criando uma atribuição de função, e é revogado removendo uma atribuição de função.Access is granted by creating a role assignment, and access is revoked by removing a role assignment.

O diagrama a seguir mostra um exemplo de uma atribuição de função.The following diagram shows an example of a role assignment. Neste exemplo, o grupo de Marketing foi atribuído à função Colaborador para o grupo de recursos vendas farmacêuticas.In this example, the Marketing group has been assigned the Contributor role for the pharma-sales resource group. Isso significa que os usuários do grupo de Marketing podem criar ou gerenciar qualquer recurso do Azure no grupo de recursos de vendas do setor farmacêutico.This means that users in the Marketing group can create or manage any Azure resource in the pharma-sales resource group. Os usuários de Marketing não possuem acesso a recursos fora do grupo de recursos de vendas do setor farmacêutico, a menos que sejam parte de outra atribuição de função.Marketing users do not have access to resources outside the pharma-sales resource group, unless they are part of another role assignment.

Atribuição de função para controlar o acesso

Você pode criar atribuições de função usando o portal do Azure, CLI do Azure, Azure PowerShell, SDKs do Azure ou APIs REST.You can create role assignments using the Azure portal, Azure CLI, Azure PowerShell, Azure SDKs, or REST APIs. Em cada assinatura, você pode ter até 2.000 atribuições de função.You can have up to 2000 role assignments in each subscription. Para criar e remover as atribuições de função, você deve ter a permissão Microsoft.Authorization/roleAssignments/*.To create and remove role assignments, you must have Microsoft.Authorization/roleAssignments/* permission. Essa permissão deve ser concedida pelas funções Proprietário ou Administrador de Acesso do Usuário.This permission is granted through the Owner or User Access Administrator roles.

Atribuições de função múltiplasMultiple role assignments

O que acontece se você tem várias atribuições de função sobrepostas?So what happens if you have multiple overlapping role assignments? O RBAC é um modelo aditivo e, portanto, suas permissões efetivas são a adição das atribuições de função.RBAC is an additive model, so your effective permissions are the addition of your role assignments. Considere o exemplo a seguir em que um usuário recebe a função Colaborador no escopo da assinatura e a função Leitor em um grupo de recursos.Consider the following example where a user is granted the Contributor role at the subscription scope and the Reader role on a resource group. A adição das permissões de Colaborador e das permissões de Leitor é, efetivamente, a função Colaborador para o grupo de recursos.The addition of the Contributor permissions and the Reader permissions is effectively the Contributor role for the resource group. Portanto, nesse caso, a atribuição de função Leitor não tem nenhum impacto.Therefore, in this case, the Reader role assignment has no impact.

Atribuições de função múltiplas

Negar atribuiçõesDeny assignments

Anteriormente, o RBAC era um modelo somente de permissão, sem negação, mas agora ele dá suporte a atribuições de negações, com limitações.Previously, RBAC was an allow-only model with no deny, but now RBAC supports deny assignments in a limited way. Semelhante a uma atribuição de função, uma atribuição de negação anexa um conjunto de ações de negação a um usuário, grupo, entidade de serviço ou identidade gerenciada em um escopo específico com o objetivo de negar acesso.Similar to a role assignment, a deny assignment attaches a set of deny actions to a user, group, service principal, or managed identity at a particular scope for the purpose of denying access. Uma atribuição de função define um conjunto de ações que são permitidas, enquanto uma atribuição de negação define um conjunto de ações que não são permitidas.A role assignment defines a set of actions that are allowed, while a deny assignment defines a set of actions that are not allowed. Em outras palavras, as atribuições de negação impedem que os usuários executem ações especificadas, mesmo quando uma atribuição de função lhes concede acesso.In other words, deny assignments block users from performing specified actions even if a role assignment grants them access. As atribuições de negação têm precedência sobre as atribuições de função.Deny assignments take precedence over role assignments. Para obter mais informações, confira Noções básicas sobre atribuições de negação para recursos do Azure e Exibir atribuições de negação para recursos do Azure usando o portal do Azure.For more information, see Understand deny assignments for Azure resources and View deny assignments for Azure resources using the Azure portal.

Observação

Neste momento, a única maneira de adicionar suas próprias atribuições de negação é usando o Azure Blueprints.At this time, the only way you can add your own deny assignments is by using Azure Blueprints. Para obter mais informações, consulte Proteger novos recursos com bloqueios de recurso do Azure Blueprints.For more information, see Protect new resources with Azure Blueprints resource locks.

Como o RBAC determina se um usuário tem acesso a um recursoHow RBAC determines if a user has access to a resource

A seguir estão as etapas gerais que o RBAC usa para determinar se você tem acesso a um recurso no plano de gerenciamento.The following are the high-level steps that RBAC uses to determine if you have access to a resource on the management plane. Convém entender isso quando você está tentando solucionar problemas de acesso.This is helpful to understand if you are trying to troubleshoot an access issue.

  1. Um usuário (ou uma entidade de serviço) adquire um token do Azure Resource Manager.A user (or service principal) acquires a token for Azure Resource Manager.

    O token inclui as associações a um grupo do usuário (incluindo associações de grupo transitivas).The token includes the user's group memberships (including transitive group memberships).

  2. O usuário faz uma chamada à API REST para o Azure Resource Manager com o token anexado.The user makes a REST API call to Azure Resource Manager with the token attached.

  3. O Azure Resource Manager recupera todas as atribuições de função e as atribuições de negação que se aplicam ao recurso no qual a ação está sendo realizada.Azure Resource Manager retrieves all the role assignments and deny assignments that apply to the resource upon which the action is being taken.

  4. O Azure Resource Manager restringe as atribuições de função que se aplicam a esse usuário ou ao seu grupo e determina as funções que o usuário tem para este recurso.Azure Resource Manager narrows the role assignments that apply to this user or their group and determines what roles the user has for this resource.

  5. O Azure Resource Manager determina se a ação na chamada à API está incluída nas funções que o usuário tem para este recurso.Azure Resource Manager determines if the action in the API call is included in the roles the user has for this resource.

  6. Se o usuário não tem uma função com a ação no escopo solicitado, o acesso não é concedido.If the user doesn’t have a role with the action at the requested scope, access is not granted. Caso contrário, o Azure Resource Manager verifica se uma atribuição de negação se aplica.Otherwise, Azure Resource Manager checks if a deny assignment applies.

  7. Se houver uma atribuição de negação aplicável, o acesso será bloqueado.If a deny assignment applies, access is blocked. Caso contrário, o acesso será permitido.Otherwise access is granted.

Requisitos de licençaLicense requirements

O uso desse recurso é gratuito e está incluído em sua assinatura do Azure.Using this feature is free and included in your Azure subscription.

Próximas etapasNext steps