Compreender o escopo do RBAC do Azure
Escopo é o conjunto de recursos ao qual o acesso se aplica. Quando você atribui uma função, é importante entender o escopo para que você possa conceder a uma entidade de segurança apenas o acesso de que ela realmente precisa. Ao limitar o escopo, você limita quais recursos estão em risco se a entidade de segurança for comprometida.
Níveis de âmbito
No Azure, você pode especificar um escopo em quatro níveis: grupo de gerenciamento, assinatura, grupo de recursos e recurso. Os âmbitos são estruturados numa relação de principal-subordinado. Cada nível de hierarquia torna o âmbito mais específico. Você pode atribuir funções em qualquer um desses níveis de escopo. O nível selecionado determina a extensão da aplicação da função. Níveis inferiores herdam permissões de função de níveis superiores.
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. O diagrama a seguir mostra um exemplo de uma hierarquia de grupos de gerenciamento e assinaturas que você pode definir. Para obter mais informações sobre grupos de gerenciamento, consulte O que são grupos de gerenciamento do Azure?.
Formato do âmbito
Se você atribuir funções usando a linha de comando, precisará especificar o escopo. Para ferramentas de linha de comando, escopo é uma cadeia de caracteres potencialmente longa que identifica o escopo exato da atribuição de função. No portal do Azure, esse escopo normalmente é listado como a ID do recurso.
O escopo consiste em uma série de identificadores separados pelo caractere de barra (/). Você pode pensar nessa cadeia de caracteres como expressando a seguinte hierarquia, onde texto sem espaços reservados ({}
) são identificadores fixos:
/subscriptions
/{subscriptionId}
/resourcegroups
/{resourceGroupName}
/providers
/{providerName}
/{resourceType}
/{resourceSubType1}
/{resourceSubType2}
/{resourceName}
{subscriptionId}
é o ID da assinatura a ser usada (um GUID).{resourceGroupName}
é o nome do grupo de recursos que contém.{providerName}
é o nome do provedor de recursos que manipula o recurso e, em seguida{resourceType}
{resourceSubType*}
, identifica outros níveis dentro desse provedor de recursos.{resourceName}
é a última parte da cadeia de caracteres que identifica um recurso específico.
Os grupos de gerenciamento estão um nível acima das assinaturas e têm o escopo mais amplo (menos específico). As atribuições de função neste nível aplicam-se a subscrições dentro do grupo de gestão. O escopo de um grupo de gerenciamento tem o seguinte formato:
/providers
/Microsoft.Management
/managementGroups
/{managementGroupName}
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 |
|
Resource | /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 recurso
É bastante simples determinar o escopo de um grupo de gerenciamento, assinatura ou grupo de recursos. Você só precisa saber o nome e o ID da assinatura. No entanto, determinar o escopo de um recurso requer um pouco mais de trabalho. Aqui estão algumas maneiras de determinar o escopo de um recurso.
No portal do Azure, abra o recurso e examine as propriedades. O recurso deve listar a ID do Recurso onde você pode determinar o escopo. Por exemplo, aqui estão os IDs de recurso para uma conta de armazenamento.
Outra maneira é usar o portal do Azure para atribuir uma função temporariamente no escopo do recurso e, em seguida, usar o Azure PowerShell ou a CLI do Azure para listar a atribuição de função. Na saída, o escopo será listado como uma propriedade.
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 escopo e ARM
Uma atribuição de função é um tipo especial no Azure Resource Manager chamado recurso de extensão. Um recurso de extensão é um recurso que se soma aos recursos de outro recurso. Eles sempre existem como uma extensão (como uma criança) de outro recurso. Por exemplo, uma atribuição de função no escopo da assinatura é um recurso de extensão da assinatura. O nome de uma atribuição de função é sempre o nome do recurso que você está estendendo mais /Microsoft.Authorization/roleAssignments/{roleAssignmentId}
. Ao atribuir funções usando o modelo do Azure Resource Manager (modelo ARM), normalmente não é necessário fornecer o escopo. O motivo é que o campo de escopo acaba sempre sendo o ID do recurso que você está estendendo. O escopo pode ser determinado a partir da ID da própria atribuição de função. A tabela a seguir mostra exemplos de uma ID de atribuição de função e o escopo correspondente:
ID de atribuição de função | Â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 escopo e modelos ARM, consulte Atribuir funções do Azure usando modelos do Azure Resource Manager. Para obter uma lista completa dos tipos de recursos de extensão, consulte Tipos de recursos que estendem os recursos de outros recursos.
Próximos passos
- Etapas para atribuir uma função do Azure
- Resource providers for Azure services (Fornecedor de recursos para serviços do Azure)
- O que são os grupos de gestão do Azure?