Compreender o âmbito para o Azure RBAC

Âmbito é o conjunto de recursos a que o acesso se aplica. Quando atribuis um papel, é importante compreender o alcance para que possas conceder a um diretor de segurança apenas o acesso que realmente precisa. Limitando o âmbito, limita-se os recursos em risco se o diretor de segurança estiver alguma vez comprometido.

Níveis de âmbito

Em Azure, pode especificar um âmbito a quatro níveis: grupo de gestão, subscrição, grupo de recursos e recursos. Os âmbitos são estruturados numa relação de principal-subordinado. Cada nível de hierarquia torna o âmbito mais específico. Pode atribuir funções em qualquer um destes níveis de âmbito. O nível selecionado determina a largura da função. Níveis mais baixos herdam permissões de função de níveis mais altos.

Scope for a role assignment

Os grupos de gestão são um nível de âmbito acima das subscrições, mas os grupos de gestão apoiam hierarquias mais complexas. O diagrama que se segue mostra um exemplo de uma hierarquia de grupos de gestão e subscrições que pode definir. Para obter mais informações sobre grupos de gestão, veja o que são os grupos de gestão Azure?.

Management group and subscription hierarchy

Formato de âmbito

Se atribuir funções utilizando a linha de comando, terá de especificar o âmbito. Para ferramentas de linha de comando, o âmbito é uma cadeia potencialmente longa que identifica o âmbito exato da atribuição de funções. No portal do Azure, este âmbito é tipicamente listado como o ID do recurso.

O âmbito consiste numa série de identificadores separados pelo carácter do corte (/). Pode pensar nesta cadeia como expressando a seguinte hierarquia, onde o texto sem espaços reservados ({}) são identificadores fixos:

/subscriptions
    /{subscriptionId}
        /resourcegroups
            /{resourceGroupName}
                /providers
                    /{providerName}
                        /{resourceType}
                            /{resourceSubType1}
                                /{resourceSubType2}
                                    /{resourceName}
  • {subscriptionId} é o ID da subscrição a utilizar (um GUID).
  • {resourcesGroupName} é o nome do grupo de recursos contendo.
  • {providerName} é o nome do fornecedor de recursos que trata do recurso, então {resourceType} e {resourceSubType*} identificar outros níveis dentro desse fornecedor de recursos.
  • {resourceName} é a última parte da cadeia que identifica um recurso específico.

Os grupos de gestão são um nível superior às subscrições e têm o âmbito mais amplo (menos específico). As atribuições de funções a este nível aplicam-se a subscrições dentro do grupo de gestão. A margem para um grupo de gestão tem o seguinte formato:

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

Exemplos de âmbito

Âmbito Exemplo
Grupo de gestão /providers/Microsoft.Management/managementGroups/marketing-group
Subscrição /subscriptions/00000000-0000-0000-0000-000000000000
Grupo de recursos /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
Recurso /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 a margem de manobra para um recurso

É bastante simples determinar o alcance de um grupo de gestão, subscrição ou grupo de recursos. Só precisa saber o nome e a identificação da assinatura. No entanto, determinar a margem para um recurso requer um pouco mais de trabalho. Aqui estão algumas maneiras de determinar a possibilidade de um recurso.

  • No portal do Azure, abra o recurso e, em seguida, olhe para as propriedades. O recurso deve listar o ID de recurso onde pode determinar o âmbito. Por exemplo, aqui estão os IDs de recursos para uma conta de armazenamento.

    Resource IDs for a storage account in Azure portal

  • Outra forma é usar o portal do Azure para atribuir uma função temporariamente no âmbito do recurso e, em seguida, usar Azure PowerShell ou Azure CLI para listar a atribuição de funções. Na saída, o âmbito será listado como um imóvel.

    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"
      }
    

Modelos de âmbito e ARM

Uma atribuição de funções é um tipo especial em Azure Resource Manager chamado um recurso de extensão. Um recurso de extensão é um recurso que adiciona às capacidades de outro recurso. Existem sempre como uma extensão (como uma criança) de outro recurso. Por exemplo, uma atribuição de funções no âmbito de subscrição é um recurso de extensão da subscrição. O nome de uma atribuição de funções é sempre o nome do recurso que está a estender mais /Microsoft.Authorization/roleAssignments/{roleAssignmentId}. Ao atribuir funções utilizando o modelo Azure Resource Manager (modelo ARM), normalmente não precisa de fornecer o âmbito. A razão é que o campo de âmbito acaba por ser sempre o ID do recurso que está a estender. O âmbito pode ser determinado a partir da identificação da própria atribuição de funções. A tabela a seguir apresenta exemplos de um ID de atribuição de funções e do âmbito correspondente:

ID de atribuição de funções Âmbito
/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg

Para obter mais informações sobre os modelos de âmbito e ARM, consulte as funções De Atribuir Azure utilizando modelos Resource Manager Azure. Para obter uma lista completa dos tipos de recursos de extensão, consulte tipos de recursos que ampliam as capacidades de outros recursos.

Passos seguintes