Entender o escopo do RBAC do AzureUnderstand scope for Azure RBAC

Escopo é o conjunto de recursos aos quais o acesso se aplica.Scope is the set of resources that access applies to. Quando você atribui uma função, é importante entender o escopo para que você possa conceder uma entidade de segurança apenas ao acesso que ele realmente precisa.When you assign a role, it's important to understand scope so that you can grant a security principal just the access that it really needs. Ao limitar o escopo, você limita quais recursos estão em risco se a entidade de segurança for comprometida.By limiting the scope, you limit what resources are at risk if the security principal is ever compromised.

Níveis de escopoScope levels

No Azure, você pode especificar um escopo em quatro níveis: grupo de gerenciamento, assinatura, grupo de recursose recurso.In Azure, you can specify a scope at four levels: management group, subscription, resource group, and resource. Os escopos são estruturados em uma relação pai-filho.Scopes are structured in a parent-child relationship. Cada nível de hierarquia torna o escopo mais específico.Each level of hierarchy makes the scope more specific. Você pode atribuir funções em qualquer um desses níveis de escopo.You can assign roles at any of these levels of scope. O nível selecionado determina o quanto a função é amplamente aplicada.The level you select determines how widely the role is applied. Níveis inferiores herdam permissões de função de níveis superiores.Lower levels inherit role permissions from higher levels.

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

Os grupos de gerenciamento são um nível de escopo acima das assinaturas, mas os grupos de gerenciamento oferecem suporte a hierarquias mais complexas.Management groups are a level of scope above subscriptions, but management groups support more complex hierarchies. O diagrama a seguir mostra um exemplo de uma hierarquia de grupos de gerenciamento e assinaturas que você pode definir.The following diagram shows an example of a hierarchy of management groups and subscriptions that you can define. Para obter mais informações sobre grupos de gerenciamento, consulte o que são grupos de gerenciamento do Azure?.For more information about management groups, see What are Azure management groups?.

Hierarquia de assinatura e grupo de gerenciamento

Formato do escopoScope format

Se você atribuir funções usando a linha de comando, precisará especificar o escopo.If you assign roles using the command line, you'll need to specify the scope. Para ferramentas de linha de comando, o escopo é uma cadeia de caracteres potencialmente longa que identifica o escopo exato da atribuição de função.For command-line tools, scope is a potentially long string that identifies the exact scope of the role assignment. No portal do Azure, esse escopo é normalmente listado como a ID do recurso.In the Azure portal, this scope is typically listed as the resource ID.

O escopo consiste em uma série de identificadores separados pelo caractere de barra (/).The scope consists of a series of identifiers separated by the slash (/) character. Você pode considerar essa cadeia de caracteres como a hierarquia a seguir, em que o texto sem espaços reservados ({}) são identificadores fixos:You can think of this string as expressing the following hierarchy, where text without placeholders ({}) are fixed identifiers:

/subscriptions
    /{subscriptionId}
        /resourcegroups
            /{resourceGroupName}
                /providers
                    /{providerName}
                        /{resourceType}
                            /{resourceSubType1}
                                /{resourceSubType2}
                                    /{resourceName}
  • {subscriptionId} é a ID da assinatura a ser usada (um GUID).{subscriptionId} is the ID of the subscription to use (a GUID).
  • {resourcesGroupName} é o nome do grupo de recursos contentor.{resourcesGroupName} is the name of the containing resource group.
  • {providerName} é o nome do provedor de recursos que manipula o recurso {resourceType} e {resourceSubType*} identifica mais níveis dentro desse provedor de recursos.{providerName} is the name of the resource provider that handles the resource, then {resourceType} and {resourceSubType*} identify further levels within that resource provider.
  • {resourceName} é a última parte da cadeia de caracteres que identifica um recurso específico.{resourceName} is the last part of the string that identifies a specific resource.

Os grupos de gerenciamento são um nível acima das assinaturas e têm o escopo mais amplo (menos específico).Management groups are a level above subscriptions and have the broadest (least specific) scope. As atribuições de função nesse nível se aplicam a assinaturas dentro do grupo de gerenciamento.Role assignments at this level apply to subscriptions within the management group. O escopo de um grupo de gerenciamento tem o seguinte formato:The scope for a management group has the following format:

/providers
    /Microsoft.Management
        /managementGroups
            /{managmentGroupName}

Exemplos de escopoScope examples

EscopoScope ExemploExample
Grupo de gerenciamentoManagement group /providers/Microsoft.Management/managementGroups/marketing-group
SubscriptionSubscription /subscriptions/00000000-0000-0000-0000-000000000000
Resource groupResource group /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
RecursoResource /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVirtualNetwork12345

Como determinar o escopo de um recursoHow to determine the scope for a resource

É bastante simples determinar o escopo de um grupo de gerenciamento, assinatura ou grupo de recursos.It's fairly simple to determine the scope for a management group, subscription, or resource group. Você só precisa saber o nome e a ID da assinatura.You just need to know the name and the subscription ID. No entanto, determinar o escopo de um recurso leva um pouco mais de trabalho.However, determining the scope for a resource takes a little more work. Aqui estão algumas maneiras que você pode determinar o escopo de um recurso.Here are a couple ways that you can determine the scope for a resource.

  • No portal do Azure, abra o recurso e, em seguida, examine as propriedades.In the Azure portal, open the resource and then look at the properties. O recurso deve listar a ID do recurso onde você pode determinar o escopo.The resource should list the Resource ID where you can determine the scope. Por exemplo, aqui estão as IDs de recurso para uma conta de armazenamento.For example, here are the resource IDs for a storage account.

    IDs de recurso para uma conta de armazenamento no portal do Azure

  • Outra maneira é usar o portal do Azure para atribuir uma função temporariamente no escopo do recurso e, em seguida, usar Azure PowerShell ou CLI do Azure para listar a atribuição de função.Another way is to use the Azure portal to assign a role temporarily at the resource scope and then use Azure PowerShell or Azure CLI to list the role assignment. Na saída, o escopo será listado como uma propriedade.In the output, the scope will be listed as a property.

    RoleAssignmentId   : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/pro
                         viders/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
    Scope              : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
    DisplayName        : User
    SignInName         : user@contoso.com
    RoleDefinitionName : Storage Blob Data Reader
    RoleDefinitionId   : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
    ObjectId           : <principalId>
    ObjectType         : User
    CanDelegate        : False
    Description        :
    ConditionVersion   :
    Condition          :
    
    {
        "canDelegate": null,
        "condition": null,
        "conditionVersion": null,
        "description": null,
        "id": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
        "name": "{roleAssignmentId}",
        "principalId": "{principalId}",
        "principalName": "user@contoso.com",
        "principalType": "User",
        "resourceGroup": "test-rg",
        "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "roleDefinitionName": "Storage Blob Data Reader",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01",
        "type": "Microsoft.Authorization/roleAssignments"
      }
    

Próximas etapasNext steps