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

A gestão de acesso para recursos na cloud é uma função crítica para qualquer organização que está a utilizar a cloud.Access management for cloud resources is a critical function for any organization that is using the cloud. O controlo de acesso baseado em funções (RBAC) ajuda-o a gerir quem tem acesso aos recursos do Azure, o que fazem com esses recursos e a que áreas têm 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.

RBAC é um sistema de autorização, criado sobre do Azure Resource Manager que fornece gestão de acesso detalhado 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?

Seguem-se alguns exemplos do que pode fazer com o RBAC:Here are some examples of what you can do with RBAC:

  • Permitir a um utilizador gerir máquinas virtuais numa subscrição e a outro utilizador gerir redes virtuaisAllow one user to manage virtual machines in a subscription and another user to manage virtual networks
  • Permitir a um grupo DBA gerir bases de dados SQL numa subscriçãoAllow a DBA group to manage SQL databases in a subscription
  • Permitir a um utilizador gerir todos os recursos num 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 a uma aplicação aceder a todos os recursos num grupo de recursosAllow an application to access all resources in a resource group

Melhor prática para utilizar o RBACBest practice for using RBAC

Ao utilizar o RBAC, pode segregar funções na sua equipa e conceder apenas a quantidade de acesso a utilizadores que precisam para desempenhar as suas funções.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 dar a todas as pessoas permissões sem restrições na sua subscrição do Azure ou recursos, pode permitir apenas determinadas ações num âmbito específico.Instead of giving everybody unrestricted permissions in your Azure subscription or resources, you can allow only certain actions at a particular scope.

Quando planear a estratégia de controlo de acesso, é boa prática conceder aos utilizadores o privilégio menor de que precisam para trabalhar.When planning your access control strategy, it's a best practice to grant users the least privilege to get their work done. O diagrama seguinte mostra um padrão sugerido para utilizar o RBAC.The following diagram shows a suggested pattern for using RBAC.

RBAC e menor privilégio

Como funciona o RBACHow RBAC works

A forma de controlar o acesso a recursos com o RBAC é criar atribuições de funções.The way you control access to resources using RBAC is to create role assignments. Este é um conceito fundamental para compreender de que forma as permissões são impostas.This is a key concept to understand – it’s how permissions are enforced. Uma atribuição de função é composta por três elementos: principal de segurança, definição de função e âmbito.A role assignment consists of three elements: security principal, role definition, and scope.

Principal de segurançaSecurity principal

R entidade de segurança é um objeto que representa um utilizador, o grupo, o principal de serviço ou a identidade gerida que está a pedir 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.

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

  • Utilizador – Um indivíduo que tem um perfil no Azure Active Directory.User - An individual who has a profile in Azure Active Directory. Também pode atribuir funções a utilizadores noutros inquilinos.You can also assign roles to users in other tenants. Para obter informações sobre utilizadores noutras organizações, veja Azure Active Directory B2B.For information about users in other organizations, see Azure Active Directory B2B.
  • Grupo – Um conjunto de utilizadores criado no Azure Active Directory.Group - A set of users created in Azure Active Directory. Quando atribui uma função a um grupo, todos os utilizadores nesse grupo têm essa função.When you assign a role to a group, all users within that group have that role.
  • Principal de serviço – Uma identidade de segurança utilizada por aplicações ou serviços para aceder a recursos específicos do Azure.Service principal - A security identity used by applications or services to access specific Azure resources. Pode considerá-lo como uma identidade de utilizador (nome de utilizador e palavra-passe ou certificado) para uma aplicação.You can think of it as a user identity (username and password or certificate) for an application.
  • Identidade gerida - uma identidade no Azure Active Directory automaticamente é gerido pelo Azure.Managed identity - An identity in Azure Active Directory that is automatically managed by Azure. Geralmente usa geridos identidades durante o desenvolvimento de aplicações na cloud para gerir as credenciais para autenticar-se aos 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 é uma coleção de permissões.A role definition is a collection of permissions. Por vezes é denominada apenas função.It's sometimes just called a role. Uma definição de função lista as operações que podem ser efetuadas, por exemplo, ler, escrever e eliminar.A role definition lists the operations that can be performed, such as read, write, and delete. As funções podem ser de nível elevado, 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 atribuição de função

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

  • Proprietário – Tem acesso total a todos os recursos, incluindo o direito de delegar o acesso a outras pessoas.Owner - Has full access to all resources including the right to delegate access to others.
  • Contribuidor – Pode criar e gerir 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 ver os recursos do Azure existentes.Reader - Can view existing Azure resources.
  • Administrador de Acesso do Utilizador – Permite gerir o acesso do utilizador aos recursos do Azure.User Access Administrator - Lets you manage user access to Azure resources.

As restantes funções incorporadas permitem a gestão de recursos específicos do Azure.The rest of the built-in roles allow management of specific Azure resources. Por exemplo, a função Contribuidor de Máquina Virtual permite a um utilizador criar e gerir máquinas virtuais.For example, the Virtual Machine Contributor role allows a user to create and manage virtual machines. Se as funções incorporadas não atenderem às necessidades específicas da sua organização, pode criar a sua própria 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 operações de dados (atualmente em pré-visualização) que permitem conceder acesso aos dados num objeto.Azure has introduced data operations (currently in preview) that enable you to grant access to data within an object. Por exemplo, se um utilizador tiver acesso a dados de leitura a uma conta de armazenamento, pode ler os blobs ou as mensagens nessa 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, consulte compreender as definições de funções para recursos do Azure.For more information, see Understand role definitions for Azure resources.

ScopeScope

Âmbito é o conjunto de recursos que o acesso se aplica a.Scope is the set of resources that the access applies to. Quando atribui uma função, pode limitar ainda mais as ações permitidas ao definir um âmbito.When you assign a role, you can further limit the actions allowed by defining a scope. Isto é útil se quiser tornar alguém Contribuidor de 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, pode especificar um âmbito a vários níveis: grupo de gestão, subscrição, grupo de recursos ou recurso.In Azure, you can specify a scope at multiple levels: management group, subscription, resource group, or resource. Os âmbitos são estruturados numa relação de principal-subordinado.Scopes are structured in a parent-child relationship.

Âmbito de uma atribuição de função

Quando concede acesso a um âmbito principal, os âmbitos secundários herdam essas permissões.When you grant access at a parent scope, those permissions are inherited to the child scopes. Por exemplo:For example:

  • Se atribuir a função Proprietário a um utilizador no âmbito de grupo de gestão, esse utilizador pode gerir tudo em todas as subscrições no grupo de gestão.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 atribuir a função Leitor a um grupo no âmbito da subscrição, os membros desse grupo pode ver cada grupo de recursos e recurso na subscrição.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 atribuir a função Contribuidor a uma aplicação no âmbito do grupo de recursos, pode gerir recursos de todos os tipos no grupo de recursos, mas não outros grupos de recursos na subscrição.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çõesRole assignments

R atribuição de função é o processo de anexar uma definição de função para um utilizador, grupo, principal de serviço ou uma identidade gerida num determinado âmbito para efeitos 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 ao criar uma atribuição de função e o acesso é revogado ao remover 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 seguinte mostra um exemplo de uma atribuição de função.The following diagram shows an example of a role assignment. Neste exemplo, foi atribuída a função Contribuidor ao grupo Marketing para o grupo de recursos de vendas farmacêuticas.In this example, the Marketing group has been assigned the Contributor role for the pharma-sales resource group. Isto significa que os utilizadores no grupo Marketing podem criar ou gerir qualquer recurso do Azure no grupo de recursos de vendas farmacêuticas.This means that users in the Marketing group can create or manage any Azure resource in the pharma-sales resource group. Os utilizadores do grupo Marketing não têm acesso aos recursos fora o grupo de recursos de vendas farmacêuticas, a menos que façam 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

Pode criar atribuições de funções no 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. Pode ter até 2000 atribuições de funções em cada subscrição.You can have up to 2000 role assignments in each subscription. Para criar e remover atribuições de funções, precisa de ter a permissão Microsoft.Authorization/roleAssignments/*.To create and remove role assignments, you must have Microsoft.Authorization/roleAssignments/* permission. Esta permissão é concedida através das funções Proprietário ou Administrador de Acesso de Utilizador.This permission is granted through the Owner or User Access Administrator roles.

Várias atribuições de funçõesMultiple role assignments

O que acontece se tiver várias atribuições de funções sobrepostos?So what happens if you have multiple overlapping role assignments? RBAC é um modelo de cumulativas, pelo que as permissões efetivas são a adição de atribuições de funções.RBAC is an additive model, so your effective permissions are the addition of your role assignments. Considere o exemplo seguinte, onde um usuário é concedido a função de contribuinte no âmbito da subscrição e a função de leitor num 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 contribuinte e as permissões de leitura é, efetivamente, a função de Contribuidor 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, neste caso, a atribuição de função do leitor não tem impacto.Therefore, in this case, the Reader role assignment has no impact.

Várias atribuições de funções

Negar atribuiçõesDeny assignments

Anteriormente, o RBAC era um modelo apenas de permissão sem negação, mas agora suporta atribuições de negação de forma limitada.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, um negar atribuição anexa um conjunto de ações de negação para um utilizador, grupo, principal de serviço ou uma identidade gerida num determinado âmbito para efeitos de negar o 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 permitido, enquanto uma atribuição de negar define um conjunto de ações que são não permitida.A role assignment defines a set of actions that are allowed, while a deny assignment defines a set of actions that are not allowed. Por outras palavras, as atribuições de negação impedem os utilizadores de executarem ações especificadas, mesmo que uma atribuição de função lhes conceda 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ções.Deny assignments take precedence over role assignments. Para obter mais informações, consulte compreender negar atribuições para recursos do Azure e vista negar atribuições para recursos do Azure no portal do Azure.For more information, see Understand deny assignments for Azure resources and View deny assignments for Azure resources using the Azure portal.

Nota

Neste momento, a única maneira que pode adicionar seus próprios negar atribuições é através da utilização do Azure esquemas.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 os recursos novos com bloqueios de recursos do Azure esquemas.For more information, see Protect new resources with Azure Blueprints resource locks.

De que forma o RBAC determina se um utilizador tem acesso a um recursoHow RBAC determines if a user has access to a resource

Seguem-se as etapas de alto nível que o RBAC utiliza para determinar se tem acesso a um recurso no plano de gestão.The following are the high-level steps that RBAC uses to determine if you have access to a resource on the management plane. Isto pode ser útil para compreender se estiver a tentar resolver um problema de acesso.This is helpful to understand if you are trying to troubleshoot an access issue.

  1. Um utilizador (ou principal de serviço) obtém um token para o Azure Resource Manager.A user (or service principal) acquires a token for Azure Resource Manager.

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

  2. O utilizador faz uma chamada da API de 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 obtém todas as atribuições de função e de negação que se aplicam ao recurso no qual a ação é executada.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ções que se aplicam a este utilizador ou ao respetivo grupo e determina que funções o utilizador 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 de API está incluída nas funções que utilizador 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 utilizador não tiver uma função com a ação no âmbito 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 uma atribuição de negação se aplicar, o acesso é bloqueado.If a deny assignment applies, access is blocked. Caso contrário, o acesso é concedido.Otherwise access is granted.

Passos SeguintesNext steps