Entender as definições de função dos recursos do AzureUnderstand role definitions for Azure resources

Se você estiver tentando entender como uma função funciona ou se estiver criando sua própria função personalizada para recursos do Azure, é útil entender como as funções são definidas.If you are trying to understand how a role works or if you are creating your own custom role for Azure resources, it's helpful to understand how roles are defined. Este artigo descreve os detalhes das definições de função e fornece alguns exemplos.This article describes the details of role definitions and provides some examples.

Estrutura de definição de funçãoRole definition structure

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. Ele também pode listar as operações que não podem ser executadas ou operações relacionadas aos dados subjacentes.It can also list the operations that can't be performed or operations related to underlying data. Uma definição de função tem a seguinte estrutura:A role definition has the following structure:

Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []

As operações são especificadas com cadeias de caracteres que têm o seguinte formato:Operations are specified with strings that have the following format:

  • {Company}.{ProviderName}/{resourceType}/{action}

A {action} parte de uma cadeia de caracteres de operação especifica o tipo de operações que você pode executar em um tipo de recurso.The {action} portion of an operation string specifies the type of operations you can perform on a resource type. Por exemplo, você verá as seguintes subcadeias de caracteres {action}em:For example, you will see the following substrings in {action}:

Subcadeia de açãoAction substring DescriçãoDescription
* O caractere curinga concede acesso a todas as operações que correspondem à cadeia de caracteres.The wildcard character grants access to all operations that match the string.
read Habilita operações de leitura (GET).Enables read operations (GET).
write Habilita operações de gravação (PUT ou PATCH).Enables write operations (PUT or PATCH).
action Habilita operações personalizadas como reiniciar máquinas virtuais (POST).Enables custom operations like restart virtual machines (POST).
delete Habilita operações de exclusão (DELETE).Enables delete operations (DELETE).

Aqui está a definição da função colaborador no formato JSON.Here's the Contributor role definition in JSON format. A operação curinga*() em Actions indica que a entidade de segurança atribuída a essa função pode executar todas as ações ou, em outras palavras, pode gerenciar tudo.The wildcard (*) operation under Actions indicates that the principal assigned to this role can perform all actions, or in other words, it can manage everything. Isso inclui ações definidas no futuro, pois o Azure adiciona novos tipos de recursos.This includes actions defined in the future, as Azure adds new resource types. As operações em NotActions são subtraídas Actionsde.The operations under NotActions are subtracted from Actions. No caso da função de colaborador , NotActions o Remove a capacidade dessa função de gerenciar o acesso aos recursos e também atribuir acesso aos recursos.In the case of the Contributor role, NotActions removes this role's ability to manage access to resources and also assign access to resources.

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Operações de gerenciamento e dadosManagement and data operations

O Actions controle de acesso baseado em função para operações de gerenciamento é especificado NotActions nas propriedades e de uma definição de função.Role-based access control for management operations is specified in the Actions and NotActions properties of a role definition. Aqui estão alguns exemplos de operações de gerenciamento no Azure:Here are some examples of management operations in Azure:

  • Gerenciar o acesso a uma conta de armazenamentoManage access to a storage account
  • Criar, atualizar ou excluir um contêiner de BLOBsCreate, update, or delete a blob container
  • Excluir um grupo de recursos e todos os seus recursosDelete a resource group and all of its resources

O acesso de gerenciamento não é herdado para seus dados.Management access is not inherited to your data. Essa separação impede que funções com curingas*() tenham acesso irrestrito aos seus dados.This separation prevents roles with wildcards (*) from having unrestricted access to your data. Por exemplo, se um usuário tiver uma função de leitor em uma assinatura, ele poderá exibir a conta de armazenamento, mas, por padrão, eles não poderão exibir os dados subjacentes.For example, if a user has a Reader role on a subscription, then they can view the storage account, but by default they can't view the underlying data.

Anteriormente, o controle de acesso baseado em função não era usado para operações de dados.Previously, role-based access control was not used for data operations. Autorização para operações de dados variadas entre provedores de recursos.Authorization for data operations varied across resource providers. O mesmo modelo de autorização de controle de acesso baseado em função usado para operações de gerenciamento foi estendido para operações de dados.The same role-based access control authorization model used for management operations has been extended to data operations.

Para dar suporte a operações de dados, novas propriedades de dados foram adicionadas à estrutura de definição de função.To support data operations, new data properties have been added to the role definition structure. As operações de dados são especificadas DataActions nas NotDataActions Propriedades e.Data operations are specified in the DataActions and NotDataActions properties. Ao adicionar essas propriedades de dados, a separação entre gerenciamento e dados é mantida.By adding these data properties, the separation between management and data is maintained. Isso impede que as atribuições de função atuais*com curingas () acessem de repente os dados.This prevents current role assignments with wildcards (*) from suddenly having accessing to data. Aqui estão algumas operações de dados que podem ser especificadas DataActions em NotDataActionse:Here are some data operations that can be specified in DataActions and NotDataActions:

  • Ler uma lista de BLOBs em um contêinerRead a list of blobs in a container
  • Gravar um blob de armazenamento em um contêinerWrite a storage blob in a container
  • Excluir uma mensagem em uma filaDelete a message in a queue

Aqui está a definição da função de leitor de dados do blob de armazenamento , que Actions inclui DataActions operações nas propriedades e.Here's the Storage Blob Data Reader role definition, which includes operations in both the Actions and DataActions properties. Essa função permite que você leia o contêiner de BLOBs e também os dados de blob subjacentes.This role allows you to read the blob container and also the underlying blob data.

{
  "Name": "Storage Blob Data Reader",
  "Id": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "IsCustom": false,
  "Description": "Allows for read access to Azure Storage blob containers and data",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/read"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Somente operações de DataActions dados podem ser adicionadas às NotDataActions Propriedades e.Only data operations can be added to the DataActions and NotDataActions properties. Os provedores de recursos identificam quais operações são operações de dados isDataAction , definindo truea propriedade como.Resource providers identify which operations are data operations, by setting the isDataAction property to true. Para ver uma lista das operações onde isDataAction está true, consulte operações do provedor de recursos.To see a list of the operations where isDataAction is true, see Resource provider operations. Não é necessário que as funções que não têm operações de dados DataActions tenham NotDataActions e propriedades dentro da definição de função.Roles that do not have data operations are not required to have DataActions and NotDataActions properties within the role definition.

A autorização para todas as chamadas de API de operação de gerenciamento é tratada pelo Azure Resource Manager.Authorization for all management operation API calls is handled by Azure Resource Manager. A autorização para chamadas de API de operação de dados é tratada por um provedor de recursos ou Azure Resource Manager.Authorization for data operation API calls is handled by either a resource provider or Azure Resource Manager.

Exemplo de operações de dadosData operations example

Para entender melhor como funcionam as operações de gerenciamento e dados, vamos considerar um exemplo específico.To better understand how management and data operations work, let's consider a specific example. Alice recebeu a função de proprietário no escopo da assinatura.Alice has been assigned the Owner role at the subscription scope. Bob recebeu a função colaborador de dados de blob de armazenamento em um escopo de conta de armazenamento.Bob has been assigned the Storage Blob Data Contributor role at a storage account scope. O diagrama a seguir mostra esse exemplo.The following diagram shows this example.

O controle de acesso baseado em função foi estendido para dar suporte a operações de gerenciamento e de dados

A função de proprietário para Alice e a função de colaborador de dados de blob de armazenamento para Bob têm as seguintes ações:The Owner role for Alice and the Storage Blob Data Contributor role for Bob have the following actions:

OwnerOwner

    Ações    Actions
    *    *

Contribuinte de Dados do Armazenamento de BlobsStorage Blob Data Contributor

    Ações    Actions
    Microsoft.Storage/storageAccounts/blobServices/containers/delete    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write    Microsoft.Storage/storageAccounts/blobServices/containers/write
    DataActions    DataActions
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Como Alice tem uma ação curinga*() em um escopo de assinatura, suas permissões herdam para permitir que executem todas as ações de gerenciamento.Since Alice has a wildcard (*) action at a subscription scope, their permissions inherit down to enable them to perform all management actions. Alice pode ler, gravar e excluir contêineres.Alice can read, write, and delete containers. No entanto, Alice não pode executar operações de dados sem executar etapas adicionais.However, Alice cannot perform data operations without taking additional steps. Por exemplo, por padrão, Alice não pode ler os BLOBs dentro de um contêiner.For example, by default, Alice cannot read the blobs inside a container. Para ler os BLOBs, Alice teria que recuperar as chaves de acesso de armazenamento e usá-las para acessar os BLOBs.To read the blobs, Alice would have to retrieve the storage access keys and use them to access the blobs.

As permissões de Bob são restritas apenas Actions ao DataActions e especificadas na função colaborador de dados do blob de armazenamento .Bob's permissions are restricted to just the Actions and DataActions specified in the Storage Blob Data Contributor role. Com base na função, Bob pode executar operações de gerenciamento e de dados.Based on the role, Bob can perform both management and data operations. Por exemplo, Bob pode ler, gravar e excluir contêineres na conta de armazenamento especificada e também pode ler, gravar e excluir os BLOBs.For example, Bob can read, write, and delete containers in the specified storage account and can also read, write, and delete the blobs.

Para obter mais informações sobre gerenciamento e segurança do plano de dados para armazenamento, consulte o Guia de segurança do armazenamento do Azure.For more information about management and data plane security for storage, see the Azure Storage security guide.

Quais ferramentas dão suporte ao uso de RBAC para operações de dados?What tools support using RBAC for data operations?

Para exibir e trabalhar com operações de dados, você deve ter as versões corretas das ferramentas ou dos SDKs:To view and work with data operations, you must have the correct versions of the tools or SDKs:

FerramentaTool VersionVersion
Azure PowerShellAzure PowerShell 1.1.0 ou posterior1.1.0 or later
CLI do AzureAzure CLI 2.0.30 ou posterior2.0.30 or later
Azure para .NETAzure for .NET 2.8.0-Preview ou posterior2.8.0-preview or later
SDK do Azure para GoAzure SDK for Go 15.0.0 ou posterior15.0.0 or later
Azure para JavaAzure for Java 1.9.0 ou posterior1.9.0 or later
Azure para PythonAzure for Python 0.40.0 ou posterior0.40.0 or later
Azure SDK for Ruby (Azure SDK para Ruby)Azure SDK for Ruby 0.17.1 ou posterior0.17.1 or later

Para exibir e usar as operações de dados na API REST, você deve definir o parâmetro de versão de API para a seguinte versão ou posterior:To view and use the data operations in the REST API, you must set the api-version parameter to the following version or later:

  • 2018-07-012018-07-01

AçõesActions

A Actions permissão especifica as operações de gerenciamento que a função permite executar.The Actions permission specifies the management operations that the role allows to be performed. É uma coleção de cadeias de caracteres de operação que identificam operações protegíveis de provedores de recursos do Azure.It is a collection of operation strings that identify securable operations of Azure resource providers. Aqui estão alguns exemplos de operações de gerenciamento que podem ser usadas Actionsno.Here are some examples of management operations that can be used in Actions.

Cadeia de operaçãoOperation string DescriçãoDescription
*/read Concede acesso a operações de leitura para todos os tipos de recursos de todos os provedores de recursos do Azure.Grants access to read operations for all resource types of all Azure resource providers.
Microsoft.Compute/* Concede acesso a todas as operações para todos os tipos de recursos no provedor de recursos Microsoft. COMPUTE.Grants access to all operations for all resource types in the Microsoft.Compute resource provider.
Microsoft.Network/*/read Concede acesso a operações de leitura para todos os tipos de recursos no provedor de recursos Microsoft. Network.Grants access to read operations for all resource types in the Microsoft.Network resource provider.
Microsoft.Compute/virtualMachines/* Concede acesso a todas as operações de máquinas virtuais e seus tipos de recursos filho.Grants access to all operations of virtual machines and its child resource types.
microsoft.web/sites/restart/Action Concede acesso para reiniciar um aplicativo Web.Grants access to restart a web app.

NotActionsNotActions

A NotActions permissão especifica as operações de gerenciamento que são excluídas do Actionspermitido.The NotActions permission specifies the management operations that are excluded from the allowed Actions. Use a NotActions permissão se o conjunto de operações que você deseja permitir for definido com mais facilidade, excluindo operações restritas.Use the NotActions permission if the set of operations that you want to allow is more easily defined by excluding restricted operations. O acesso concedido por uma função (permissões efetivas) é calculado subtraindo as NotActions operações Actions das operações.The access granted by a role (effective permissions) is computed by subtracting the NotActions operations from the Actions operations.

Nota

Se um usuário recebe uma função que exclui uma operação no NotActionse recebe uma segunda função que concede acesso à mesma operação, o usuário tem permissão para executar essa operação.If a user is assigned a role that excludes an operation in NotActions, and is assigned a second role that grants access to the same operation, the user is allowed to perform that operation. NotActionsNão é uma regra de negação – é simplesmente uma maneira conveniente de criar um conjunto de operações permitidas quando operações específicas precisam ser excluídas.NotActions is not a deny rule – it is simply a convenient way to create a set of allowed operations when specific operations need to be excluded.

DataActionsDataActions

A DataActions permissão especifica as operações de dados que a função permite que sejam executadas em seus dados dentro desse objeto.The DataActions permission specifies the data operations that the role allows to be performed to your data within that object. Por exemplo, se um usuário tiver acesso de dados de blob de leitura a uma conta de armazenamento, ele poderá ler os BLOBs dentro dessa conta de armazenamento.For example, if a user has read blob data access to a storage account, then they can read the blobs within that storage account. Aqui estão alguns exemplos de operações de dados que podem ser usadas DataActionsno.Here are some examples of data operations that can be used in DataActions.

Cadeia de operaçãoOperation string DescriçãoDescription
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/read Retorna um BLOB ou uma lista de BLOBs.Returns a blob or a list of blobs.
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/write Retorna o resultado da gravação de um blob.Returns the result of writing a blob.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/read Retorna uma mensagem.Returns a message.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/* Retorna uma mensagem ou o resultado da gravação ou exclusão de uma mensagem.Returns a message or the result of writing or deleting a message.

NotDataActionsNotDataActions

A NotDataActions permissão especifica as operações de dados que são excluídas do DataActionspermitido.The NotDataActions permission specifies the data operations that are excluded from the allowed DataActions. O acesso concedido por uma função (permissões efetivas) é calculado subtraindo as NotDataActions operações DataActions das operações.The access granted by a role (effective permissions) is computed by subtracting the NotDataActions operations from the DataActions operations. Cada provedor de recursos fornece seu respectivo conjunto de APIs para atender às operações de dados.Each resource provider provides its respective set of APIs to fulfill data operations.

Nota

Se um usuário recebe uma função que exclui uma operação de dados no NotDataActionse recebe uma segunda função que concede acesso à mesma operação de dados, o usuário tem permissão para executar essa operação de dados.If a user is assigned a role that excludes a data operation in NotDataActions, and is assigned a second role that grants access to the same data operation, the user is allowed to perform that data operation. NotDataActionsNão é uma regra de negação – é simplesmente uma maneira conveniente de criar um conjunto de operações de dados permitidas quando operações de dados específicas precisam ser excluídas.NotDataActions is not a deny rule – it is simply a convenient way to create a set of allowed data operations when specific data operations need to be excluded.

AssignableScopesAssignableScopes

A AssignableScopes propriedade especifica os escopos (assinaturas, grupos de recursos ou recursos) que têm essa definição de função disponível.The AssignableScopes property specifies the scopes (subscriptions, resource groups, or resources) that have this role definition available. Você pode tornar a função disponível para atribuição somente nas assinaturas ou grupos de recursos que a exigem, e não obstruindo a experiência do usuário para o restante das assinaturas ou grupos de recursos.You can make the role available for assignment in only the subscriptions or resource groups that require it, and not clutter the user experience for the rest of the subscriptions or resource groups. Você deve usar pelo menos uma assinatura, grupo de recursos ou ID de recurso.You must use at least one subscription, resource group, or resource ID.

As funções internas foram AssignableScopes definidas para o escopo raiz ("/").Built-in roles have AssignableScopes set to the root scope ("/"). O escopo raiz indica que a função está disponível para atribuição em todos os escopos.The root scope indicates that the role is available for assignment in all scopes. Entre os exemplos de escopos atribuíveis válidos estão:Examples of valid assignable scopes include:

CenárioScenario ExemploExample
A função está disponível para atribuição em uma única assinaturaRole is available for assignment in a single subscription "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e"
A função está disponível para atribuição em duas assinaturasRole is available for assignment in two subscriptions "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e", "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
A função está disponível para atribuição somente no grupo de recursos de redeRole is available for assignment only in the Network resource group "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network"
A função está disponível para atribuição em todos os escopos (aplica-se somente a funções internas)Role is available for assignment in all scopes (applies only to built-in roles) "/"

Para obter informações AssignableScopes sobre funções personalizadas, consulte funções personalizadas para recursos do Azure.For information about AssignableScopes for custom roles, see Custom roles for Azure resources.

Passos SeguintesNext steps